Ошибка, слишком много аргументов передано в функцию NATURALLEFTOUTERJOIN. Максимальное количество аргументов для функции - PullRequest
0 голосов
/ 22 января 2020
EVALUATE
FILTER
(
SUMMARIZE (
NATURALLEFTOUTERJOIN (
    'Target',
    'Target_Category',
    --'Target_Form'
    ),
'Target'[Area],
'Target'[id],
'Target'[Target date],
'Target'[Target Time Range],
'Target_Category'[Origin],
'Target_Category'[Sectotion],
'Target'[Location],
'Target_Category'[Ethencity],
'Target_FormResponse'[Area Used],
'Target'[Description]
),
'Target'[id] = Value("111373268") 
)
ORDEr BY 'Target'[Target Key]

Я пытаюсь запросить табличный куб SSAS.

У меня есть приведенный выше пример кода DAX, в функции NATURALLEFTOUTERJOIN я присоединяюсь к таблицам Инцидент 'и' Incident_Category ', так что я могу получить столбцы из обеих таблиц.

Однако мне также нужно получить столбцы из третьей таблицы 'Target_Form' в том же DAX-запросе, но когда я пытаюсь добавить третью таблицу в функцию NATURALLEFTOUTERJOIN , я получаю следующее ошибка.

Слишком много аргументов передано функции NATURALLEFTOUTERJOIN. Максимальное количество аргументов для функции составляет 2.

Кто-нибудь знает, как я могу объединить более двух таблиц, имеющих отношения, так что я могу работать со столбцами в трех или более таблицах в тот же запрос?

1 Ответ

0 голосов
/ 24 января 2020

Как прокомментировали другие, вы, как правило, должны избегать использования таких функций, как NATURALLEFTOUTERJOIN, так как есть лучшие способы достичь того же, используя хорошо спроектированную модель данных (звездная схема), где Вы можете положиться на явные связи между таблицами.

NATURALLEFTOUTERJOIN может одновременно объединять только две таблицы. Так что, если вы абсолютно хотите использовать его таким образом, вам придется вложить его:

NATURALLEFTOUTERJOIN(
    NATURALLEFTOUTERJOIN(
        'Target',
        'Target_Category'
    ),
    'Target_Form'
)

Но опять же - я хочу подчеркнуть, что это очень плохой DAX . Гораздо лучше построить чистую модель данных с правильными отношениями между этими таблицами. Затем вы можете использовать такую ​​функцию, как SUMMARIZECOLUMNS для агрегирования и запроса данных.

Также, в общем, помните, что DAX лучше всего подходит для агрегирования данных - если вы хотите запрашивать данные на уровне отдельной записи, а затем реляционная база данных, такая как SQL Сервер, - гораздо лучший инструмент для вас.

...