Я пытаюсь добавить номера строк (по какому-либо столбцу сортировки) или по крайней мере ранжируется в вычисляемую таблицу внутри azure табличной модели служб анализа (мне нужен этот столбец ранга, чтобы использовать в TOPNSKIP
, он должен быть предварительно рассчитан столбец в таблице модели. Действительно, это не будет предварительно рассчитанный столбец только для одного столбца сортировки. Это будет какое-то выражение, которое я хочу предварительно рассчитать). Я использовал некоторые мысли здесь DAX - Получить номер текущей строки
Я использую Visual Studio с расширением Microsoft Analysis Services Projects для развертывания модели в ssas и SSMS для отладки запросов. Но, похоже, существуют различия между запросами dax в SSMS и в определениях табличных моделей.
SSMS использует синтаксис evaluate
и табличный конструктор = VAR RETURN
. И, похоже, некоторые функции недоступны для табличных моделей. Кажется, что ADDCOLUMNS
и RANKX
недоступны для табличных моделей. Также ,
используется в качестве разделителя операндов в SSMS и ;
в редакторе DAX модели (возможно из-за некоторых опций интернационализации на моем компьютере), что не очень удобно. Я не смог найти способ получить сообщение об ошибке для неверного запроса DAX для определения модели. Я вижу только неправильный запрос, который получил 0 записей во время развертывания модели, и если я пытаюсь выполнить какой-либо запрос к таблице после развертывания, я получаю сообщение об ошибке, что она пуста из-за неправильной конструкции, но без подробностей. Существует также возможность использовать вычисляемые столбцы при построении таблицы, но я не смог встроить функцию RANKX
в формулу для них. Также я не знаю, как использовать MEASURE
внутри функции построения. Подход фильтра из упомянутого вопроса stackoverflow был очень медленным на моем количестве данных. Я ждал около получаса и остановил развертывание.
Поскольку я не вижу ADDCOLUMNS
работ, которые я пробовал GENERATE
и SELECTCOLUMNS
. Например:
=
VAR NewTable = GENERATE(BaseTable; ROW("RowNumber"; RANKX(BaseTable; BaseTable[SortName];;1)))
RETURN NewTable
Это хорошо работает в SSMS, но не может быть использовано для построения таблицы. Пока:
=
VAR NewTable = GENERATE(BaseTable; ROW("RowNumber"; 50))
RETURN NewTable
везде отлично работает. Поэтому я думаю, что RANKX
не работает в определениях табличной модели.
Есть ли способ ранжировать или нумеровать строки в вычисляемой таблице ssas по некоторому столбцу сортировки?