OLAPCellWriteBuffer
When working with OLAP databases, you must set cell values frequently. In many
cases, you must set the values of thousands or even millions of cells. Naturally,
such operations should be performed as fast as possible. The fastest solution is to
combine many requests to the OLAP into a single one. That
is the purpose of the OLAPCellWriteBuffer
data type
and its functions. An OLAPCellWriteBuffer
object
accumulates operations on cells and eventually commits them all at once.
You can create an OLAPCellWriteBuffer
object like this:
OLAPConnection connection = OLAPCreateConnection("LOCAL/TESTDB", "Admin", "");
OLAPCellWriteBuffer buffer = OLAPCreateCellWriteBuffer(olapconnection);
OLAPSetAutoCommit(buffer, true);
OLAPSetMaxUncommittedValues(buffer, 100);
If you set the auto-commit property of an OLAPCellWriteBuffer
, it sends its content automatically to the
OLAP. The content is sent when the number of elements
in the buffer reaches a certain threshold. You can adjust the threshold with the
OLAPSetMaxUncommittedValues
function. In the
code above the buffer sends its content to the OLAP as
soon as it contains more than 100 entries.
To fill the buffer, you can use several functions:
string cubeName = “DEMO”;
OLAPCellWriteBufferWriteNumber(buffer, cubeName, "Element1", "Element2", "Element3");
OLAPCellWriteBufferSetComment(buffer, cubeName, "A Comment", "Element1", "Element2", "Element4");
OLAPCellWriteBufferDeleteComment(buffer, cubeName, "Element1", "Element2", "Element5");
OLAPCellWriteBufferDeleteValue(buffer, cubeName, "Element1", "Element2", "Element6");
OLAPCellWriteBufferDeleteCell(buffer, cubeName, "Element1", "Element2", "Element7");
Eventually, you must commit the buffer’s content to the OLAP database:
OLAPCommitCellWriteBuffer(buffer);