-
Boris Kocherov authored
CUBEMEMBER and CUBEVALUE functions has been implemented, using xmla library. For this purpose the support of lazy calculations in parserFormula has been added. Now, during the implementantion of a function a method for lazy calculations (CalculateLazy) can be defined. CalculateLazy returns not a value, as it did Calculation, but RSVP.Queue. And now it is the returned queue that is to return the value which is the result of the calculations. During the calculation of CUBEVALUE the calculation process waits until all the calculations of all the arguments are finished. It is made to send an EXECUTE request to olap. This request guarantees the consistency of the returned values. In case of success CUBEMEMBER.CalculateLazy assigns mdx-expression to cube_value to form the request and calculate its result. Functions are marked as those which are calculated every time the document is being opened (.ca=true). changeOffsetElem, which return the element of the olap-tree, adjacent to the current one on the same level, have been implemented. It helps to fill the table. TODO: Make the editor of connections to OLAP-servers. In the current implementation connection parameters are hardcoded. The current parameters describe a connection to SAIKU olap demoserver, which supports XMLA-requests. Use PivotCache as an intermediate structure to store the requests' results. It will allow to use PivotTable to display the results. In Russian: Реализованы CUBEMEMBER, CUBEVALUE функции используя xmla библиотеку. Для этого добавлена поддержка ленивых вычислений в parserFormula.При реализации функции теперь можно опредилить метод для ленивых вычислений CalculateLazy. CalculateLazy возвращает очередь (RSVP.Queue), а не значение, как при обычных вычислениях. И уже возвращаемая очередь должна вернуть значение, которое является результатом вычисления. При вычислении CUBEVALUE происходит ожидание вычисления всех аргументов всех CUBEVALUE. Это сделано, для того чтобы посылать один запрос EXECUTE к olap, что гарантирует согласованность значений, полученых в результате. CUBEMEMBER.CalculateLazy в случае успеха присваивает cube_value mdx- выражение которое использовано для вычисления CUBEMEMBER в свою очередь CUBEVALUE использует cube_value для формирования запроса и вычисления своего результата. Функции промаркированы как вычисляемые при каждом открытии документа (.ca=true). Реализованы changeOffsetElem, которые возвращают элемент olap-дерева, соседний по отношению к текущему на том же уровне, что позволяет быстро заполнять таблицу. TODO: Сделать редактор подключений к OLAP серверам. В текущей реализации параметры соединений прописаны прямо в коде. Текущие параметры описывают соединение с SAIKU olap demoserver, который поддерживает XMLA. Использовать PivotCache как промежуточную структуру для хранения результатов запросов, что позволит использовать PivotTable для отображения результатов.
32887cce