ActivePivot: анализ данных многомерного набора ячеек в JSON для диаграмм React-vis - PullRequest
0 голосов
/ 07 сентября 2018

Я только начал работать с запросами MDX, поэтому я не эксперт. Нам были предоставлены MDX-запросы для запуска из нашего клиентского приложения через соединение через веб-сокет. Полученный ответ представляет собой многомерный набор данных, а не стандартный JSON, который выглядит следующим образом.

{
  "type": "cellSetData",
  "streamId": "cb6fdd98-d528-44fb-8f14-366970e574b5",
  "queryId": "cb6fdd98-d528-44fb-8f14-366970e574b5",
  "data": {
    "axes": [
      {
        "id":0,
        "hierarchies": [
            {
              "dimension": "Measures",
              "hierarchy": "Measures"
            }
        ],
        "positions": [
          [ { "namePath": [ "5-Day ADV" ] } ],
          [ { "namePath": [ "Target Value" ] } ],
          [ { "namePath": [ "Performance Vs VWAP (Targ. Val. W.A.)" ] } ]
        ],
        "maxLevelPerHierarchy": [1]
      },
      {
        "id":1,
        "hierarchies": [
          {
            "dimension": "Order",
            "hierarchy": "OrderId"
          }
        ],
        "positions": [
          [ { "namePath": [ "AllMember" ] } ],
          [ { "namePath": [ "AllMember", "20180829-142357889-114-29" ] } ],
          [ { "namePath": [ "AllMember", "20180829-142357896-775-32" ] } ],
          [ { "namePath": [ "AllMember", "20180829-142357897-394-35" ] } ]
        ],
        "maxLevelPerHierarchy": [2]
      }
    ],
    "cells": [
      {
        "ordinal": 0,
        "value": 1.8702095375E7
      },
      {
        "ordinal": 1,
        "value": 41461.2
      },
      {
        "ordinal": 2,
        "value": 0.0
      },
      {
        "ordinal": 3,
        "value": 1968021.375
      },
      {
        "ordinal": 4,
        "value": 17719.2
      },
      {
        "ordinal": 5,
        "value": 0.0
      },
      {
        "ordinal": 6,
        "value": 1043997.0
      },
      {
        "ordinal": 7,
        "value": 10328.4
      },
      {
        "ordinal": 8,
        "value": 0.0
      },
      {
        "ordinal": 9,
        "value": 1.5690077E7
      },
      {
        "ordinal": 10,
        "value": 13413.6
      },
      {
        "ordinal": 11,
        "value": 0.0
      }
    ]
  }
}
  1. Есть ли у нас парсеры с открытым исходным кодом, чтобы помочь нам получить ответ JSON, как показано ниже:

{ "Stock_Percentage": "1.8702095375E7", "Stock_Quantity": "21997538", "STOCK_PRICE": "333"} { "Stock_Percentage": "1968021.375", "Stock_Quantity": "17719,2", "STOCK_PRICE": "0.0"}

  1. Можем ли мы внести изменения на уровне MDX, чтобы получить аналогичный ответ независимо от уровней агрегации.

  2. Запрос для ActiveViam, как Active Pivot Live, основанный на React, анализирует эти данные. Любые ссылки или ссылки приветствуются.

  3. Единственный грубый способ, которым я мог придумать, - это получить счетчик «позиций» и использовать его в качестве расчета через функцию MOD на «Ячейках». Это может быть просто бессвязным, не стесняйтесь пропустить это.

Любая информация очень ценится!

С наилучшими пожеланиями !!

1 Ответ

0 голосов
/ 08 сентября 2018

MDX, предназначенный для многомерного анализа, результаты не могут быть похожи на простую таблицу, которая не может отражать эту многомерную особенность, особенно иерархии.

Насколько я знаю, нет ни одного парсера с открытым исходным кодом, преобразующего такой ответ в таблицу, ни что-то похожее на ваш формат. Однако вы можете попробовать вызвать вызов REST, экспортируя любой запрос MDX как CSV http://server:port/pivot/rest/v4/cube/export/mdx/download. В соответствии с вашим набором данных JSON, он будет обеспечивать что-то вроде этого:

[Order].[OrderId].[OrderId];[Measures];VALUE
;"5-Day ADV";1.8702095375E7
;"Target Value";41461.2
;"Performance Vs VWAP (Targ. Val. W.A.)";0.0
20180829-142357889-114-29;"5-Day ADV";1.8702095375E7
20180829-142357889-114-29;"Target Value";41461.2
20180829-142357889-114-29;"Performance Vs VWAP (Targ. Val. W.A.)";0.0
...

Наконец, вы всегда можете проанализировать результат самостоятельно. Идея состоит в том, что порядковые номера ячеек представляют заданные местоположения в вашем кубе. Они вычисляются путем итерации по позициям оси, начиная с оси с более высоким идентификатором и заканчивая с самой низкой. Например,

  • порядковый номер 0 для "5-Day ADV"|"AllMember",
  • порядковый номер 1 для "Target Value"|"AllMember"
  • порядковый номер 3 для "5-Day ADV"|"AllMember"\20180829-142357889-114-29

Приветствия

PS: я работаю в ActiveViam

...