Конвертировать MDX в оператор SQL - PullRequest
2 голосов
/ 27 июня 2019

Я использую SQL Server 2016.

Я новичок в MDX.Можно ли преобразовать оператор MDX в SQL?Есть ли конвертер?

Ниже приведен мой MDX - как мне преобразовать это в SQL?:

WITH MEMBER _x AS   
IIF( [Measures].[Inherit from Material Group] <> 0, 
[Measures].[Splitting Percent at Material Group m], 
[Measures].[Splitting Percent at SKU m] )  
SELECT _X  ON 0,  NON EMPTY (  
[Product].[Sales Org SKU].[Sales Org SKU],  
[MARKET].[Sales Org Ship to Party].[Sales Org Ship to Party]  
) ON 1 FROM TEST

1 Ответ

3 голосов
/ 27 июня 2019

Вы должны понимать, что у вас может быть эквивалентный запрос MDX в SQL, но версия SQL будет работать на схеме измерения Модель / Звезда, которая обеспечивает ваше решение SSAS.

В приведенном ниже переводе я имеюПредполагается следующее о вашей размерной модели / звездообразной схеме

  1. Имя вашей таблицы фактов - "yourfactTable", и оно содержит следующие столбцы a) Productkey, который является foreginkey.б) MarkeyKey, который является foreginkey.c) Следующие три столбца являются фактами и имеют числовой характер. [Наследовать из группы материалов], [Процент разделения в группе материалов m], [Процент разделения в SKU м] 2)
  2. У вас есть измерение с именемТовар.Основной ключ этой таблицы - productkey.В нем также есть столбец [Sales Org SKU]
  3. У вас есть измерение с именем Markey.Основной ключ этой таблицы - marketkey. В ней также есть столбец [Sales Org Ship to Party]

На основании этого взгляните на следующий запрос

 select [Product].[Sales Org SKU],
    [MARKET].[Sales Org Ship to Party],
    case when sum([Inherit from Material Group])<>0 
    then sum([Splitting Percent at Material Group m]) 
    else sum([Splitting Percent at SKU m]) end as  _x 
    from
    yourfactTable f
    inner join 
    [Product] p
    on f.productkey=p.productkey
    inner join 
    [MARKET] m
    on f.marketkey=m.marketkey
    group by 
    [Product].[Sales Org SKU],[MARKET].[Sales Org Ship to Party]
...