Перечислите перекрестное соединение двух измерений, используя MDX или DAX - PullRequest
3 голосов
/ 01 мая 2019

У меня есть отчет SSRS, в котором в качестве источника используется куб SSAS, и сам отчет работает нормально, который включает два параметра в виде каскадных выпадающих списков и содержит несколько значений. Теперь я хотел бы настроить управляемую данными подписку на сервере отчетов, где я сталкиваюсь с проблемой, связанной с обеспечением перекрестного объединения двух измерений, которые должны вводиться в параметры отчета в качестве основного источника данных.

TSQL-эквивалент ожидаемого результата:

Select programyear,AssignCounty, convert(varchar(10), tb1.year) + '_' + 
tb2.county 'FileName'  from
(select '[Date].[Program Year].&[' + Convert(varchar(10), [Program Year]) 
+ ']' 'ProgramYear', [Program Year] 'year'
From d_mcaa_date) tb1,
(select '[Plan].[Auto Assignment County].&[' + Convert(varchar(10), [Auto 
Assignment County]) + ']' 'AssignCounty', [Auto Assignment County] 
'county' From d_mcaa_plan) tb2

Я ожидаю указать параметры отчета ниже: ProgramYear: [Date]. [Program Year]. & [13] Округ: [План]. [Округ автоматического назначения]. & [Сакраменто]

Обратите внимание, что Дата и План - мои измерения.

Я ищу код MDX / DAX, в котором я могу перечислить два столбца со всеми значениями «Год программы» из измерения даты и «Округ автоматического назначения» из измерения плана рядом друг с другом в виде перекрестного соединения. Это позволит сформировать набор данных, который, в свою очередь, может вводиться в параметры отчета SSRS при настройке подписки.

Я попробовал следующий код:

select {} on 0, 
{
[Date].[Program Year].Children  
*
[Plan].[Auto Assignment County].Children
}  on 1
from [Model]

Но при этом отсутствует имя столбца и подписка не приняла этот код.

Вот изображение ожидаемого результата, хотя запрос - это TSQL, а не ожидаемый MDX / DAX.

Expected format of results

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Я не уверен, что полностью понимаю вашу проблему, но для перекрестного соединения вы можете использовать следующий код

select non empty
{[Date].[Program Year].Children,[Plan].[Auto Assignment County].Children} 
on 0, 
from [Model]

Нет необходимости использовать ось строки, так как все, что вам нужно, это перекрестное соединение

Редактировать: на основе изображения

with 
member measures.t 
as
[Date].[Program Year].currentmember.name + '_'+ [Plan].[Auto Assignment County].currentmember.name

select measures.t on 0,
non empty
([Date].[Program Year].Children,[Plan].[Auto Assignment County].Children)
on 1, 
from [Model]

Редактировать На основании комментария

with 
member measures.t
as
[Date].[Calendar Year].currentmember.name + '_'+ [Product].[Category].currentmember.name

member measures.t1
as
[Date].[Calendar Year].currentmember.unique_name + '_'+ [Product].[Category].currentmember.unique_name

member measures.t3
as
[Date].[Calendar Year].currentmember.unique_name

member measures.t4
as
[Product].[Category].currentmember.unique_name

select {measures.t3,measures.t4,measures.t,measures.t1}
 on 0,
non empty
([Date].[Calendar Year].Children,[Product].[Category].Children)
on 1
from [Adventure Works]

Результат Edit

0 голосов
/ 02 мая 2019

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

Evaluate    
    ADDCOLUMNS(
        CROSSJOIN(
                DISTINCT('Plan'[Auto Assignment County]),DISTINCT('Date'[Program 
Year] )
                )
                ,
                "ProgramYeare", CONCATENATE(CONCATENATE("[Date].[Program Year].& 
        [",'Date'[Program Year]),"]"),
                "AssignCounty", CONCATENATE(CONCATENATE("[Plan].[Auto Assignment 
     County].&[",'Plan'[Auto Assignment County]),"]"),
                "FileName", CONCATENATE('Plan'[Auto Assignment County],'Date'[Program 
       Year])
                )

enter image description here

Я должен признать, что это был вопросбыло больше, чем само MDX, но вполне работоспособное решение с использованием MDX / DAX.Я обновил вопрос, чтобы быть таким.

...