Уменьшение размера CUBE с последовательными срезами - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть данные в кубе, организованные по 5 осям:

  • Источник (поставщик данных)
  • GEO (страна)
  • Продукт (A или B)
  • Позиция (продажа, производство, продажа)
  • Дата

Короче говоря, у меня есть несколько провайдеров данных для разных Product, Item, GEO и Date, то есть для разных срезов куба. Не все «источники» охватывают все даты, продукт, страны. У некоторых будет более свежая информация, но она будет предварительной.

Суть проблемы заключается в синтезе того, что говорят все источники.

Важно, что выбор данных, предоставляемых для каждого «среза» куба, осуществляется пользователем / аналитиком и должен быть таким (бизнес-знание методологии провайдера, качество и т. Д.).

То, что я ищу, это способ создания «центрального словаря» со всеми типами вычислений.

Такой словарь будет организован так:

 Operation          Source      GEO Item    Product     Date_start  Date_end
Assign              Source3     ITA Sales   Product_A   01/01/2016  01/01/2017
Assign              Source1     ITA Sales   Product_A   01/01/2017  last
Assign with %delta  Source2     ITA Sales   Product_A   01/01/2018  last

Это значит:

  • С января 2016 года по январь 2017 года продажи ProdA в Италии, источник 3
  • С 17 января до последнего доступного, взять Источник 1
  • С 18 января до последнего доступного, возьмите существующую, добавьте% разницу во времени от источника 2

Данные и расчеты являются примерами, есть и другие, более сложные, но суть этого в том, чтобы поместить кусочки «исходного» 5-мерного куба в «целевой» 4-мерный куб с набором последовательных вычислений.

В SQL это эквивалент группы отфильтрованных SELECT + INSERT, но сложность вычислений, вероятно, приведет к множеству вложенных соединений.

Решением, скорее всего, будут пользовательские функции, но мне было интересно, знает ли кто-нибудь другой язык или программное обеспечение, кроме DAX / MDX, которое позволило бы сделать это с минимальной настройкой?

Большое спасибо

...