У меня есть данные в кубе, организованные по 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, которое позволило бы сделать это с минимальной настройкой?
Большое спасибо