выражение содержит несколько столбцов (и) в выражении True / false? - PullRequest
0 голосов
/ 24 сентября 2019

Я создаю новую меру, как показано ниже

CountAllVehicleLateEmtracWork =
VAR t =
    SUMMARIZE (
        'tm-all-late-flag',
        'tm-all-late-flag'[Date],
        "tripDistinct", CALCULATE (
            DISTINCTCOUNT ( 'tm-all-late-flag'[tm-all-late-flag-1.emtrac.index] ),
            AND (
                'tm-all-late-flag'[tm-all-late-flag-1.emtrac.index] <> BLANK (),
                'tm-all-late-flag'[Vehicle-work] <> BLANK ()
            )
        )
    )
RETURN
    SUMX ( t, [tripDistinct] )

Я получил ошибку. Выражение содержит несколько столбцов, но только один столбец можно использовать в выражении True / false, которое используется в качестве фильтра таблицы.выражение.

1 Ответ

0 голосов
/ 24 сентября 2019

Ваше выражение CALCULATE ссылается на несколько столбцов в простом выражении предиката.В частности, эта часть недопустима в DAX:

            AND (
                'tm-all-late-flag'[tm-all-late-flag-1.emtrac.index] <> BLANK (),
                'tm-all-late-flag'[Vehicle-work] <> BLANK ()
            )

Это ссылка на два столбца.

Вы можете легко изменить рефакторинг на использование двух простых предикатов в CALCULATE, так как все аргументы фильтралогически И вместе:

CountAllVehicleLateEmtracWork =
VAR t =
    SUMMARIZE (
        'tm-all-late-flag',
        'tm-all-late-flag'[Date],
        "tripDistinct", CALCULATE (
            DISTINCTCOUNT ( 'tm-all-late-flag'[tm-all-late-flag-1.emtrac.index] ),
            'tm-all-late-flag'[tm-all-late-flag-1.emtrac.index] <> BLANK (),
            'tm-all-late-flag'[Vehicle-work] <> BLANK ()
        )
    )
RETURN
    SUMX ( t, [tripDistinct] )

Кроме того, вы можете упростить и улучшить производительность с помощью рефакторинга, как показано ниже.Ваш VAR t материализует промежуточную таблицу в памяти и затем выполняет итерацию этой таблицы.Мы можем избежать этого промежуточного распределения следующим образом:

CountAllVehicleLateEmtracWork =
SUMX (
    VALUES ( 'tm-all-late-flag'[Date] ), // VALUES returns the unique values in a column
    // Rather than materializing a new column, we can just return the count inline in
    // the SUMX.
    CALCULATE (
        DISTINCTCOUNT ( 'tm-all-late-flag'[tm-all-late-flag-1.emtrac.index] ),
        'tm-all-late-flag'[tm-all-late-flag-1.emtrac.index] <> BLANK (),
        'tm-all-late-flag'[Vehicle-work] <> BLANK ()
    )
)

Кроме того, вы можете рассмотреть возможность замены 'Table'[Field] <> BLANK () на NOT ( ISBLANK ( 'Table'[Field] ) ).В DAX 0 = BLANK () оценивается как ИСТИНА.Вы исключаете как пробелы, так и нули.

...