powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS Tabular DAX CROSSFILTER скорость работы без/с фильтрами таблицы с фактами
4 сообщений из 4, страница 1 из 1
SSAS Tabular DAX CROSSFILTER скорость работы без/с фильтрами таблицы с фактами
    #39561039
100ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый день!

вот эта мера работает быстро

EVALUATE
ROW (
"MyResult", CALCULATE (
DISTINCTCOUNT ( 'ClientProduct'[Client_ID] ),
CROSSFILTER ( 'Fact'[Product_ID], ClientProduct[Product_ID], BOTH )
)
)

а вот эта медленно? та, что выше и не нужна в таком чистом виде, нужно, чтобы считалось не по всей таблице фактов
буду признателен, если кто-то сталкивался, или как решал подобные задачи

DEFINE
VAR HelpTest =
CALCULATETABLE (
'Fact',
'VidOfSum'[VidOfSumID] = 1,
'Fact'[FlagSumValNotNull] = 2,
FIRSTDATE ( 'Calendar'[Date] )
)
EVALUATE
ROW (
"MyResult", CALCULATE (
CALCULATE (
DISTINCTCOUNT ( 'ClientProduct'[Client_ID] ),
CROSSFILTER ( 'Fact'[Product_ID], ClientProduct[Product_ID], BOTH )
),
HelpTest
)
)
...
Рейтинг: 0 / 0
SSAS Tabular DAX CROSSFILTER скорость работы без/с фильтрами таблицы с фактами
    #39561124
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
EVALUATE
ROW ( "MyResult"
    , CALCULATE ( DISTINCTCOUNT ( 'ClientProduct'[Client_ID] )
                , CROSSFILTER ( 'Fact'[Product_ID]
                              , ClientProduct[Product_ID]
                              , BOTH )
                , 'VidOfSum'[VidOfSumID] = 1
                , 'Fact'[FlagSumValNotNull] = 2
                , FIRSTDATE ( 'Calendar'[Date] )
                ))

могу в синтаксисе ошибаться, но суть понятна.
...
Рейтинг: 0 / 0
SSAS Tabular DAX CROSSFILTER скорость работы без/с фильтрами таблицы с фактами
    #39561141
100ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVT,

вот с этой мерой сравниваю, так по старинке делал
EVALUATE
ROW (
"MyResults", CALCULATE (
DISTINCTCOUNT ( 'ClientProduct'[Client_ID] ),
CALCULATETABLE (
'Fact',
'VidOfSum'[VidOfSumID] = 1,
'Fact'[FlagSumValNotNull] = 2,
FIRSTDATE ( 'Calendar'[Date] )
)
)
)

и проверяю через DAX Studio

ваш подход дает лучше результаты, а я упершись в старинку никогда бы не стал писать фильтры просто, как вы
к вашему варианту только два калькулейта сделал: внешний фильтрует, потом внутренний кроссит

спасибо вам большое-большое!!! сделали мой день!!!
с уважением!
...
Рейтинг: 0 / 0
SSAS Tabular DAX CROSSFILTER скорость работы без/с фильтрами таблицы с фактами
    #39561178
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
Calculate( [expression / measure]
             , 'Customers'[Title] = "Пупкин")



Фильтр будет оцениваться первым, все выражение будет выполнено именно так:

Код: sql
1.
2.
3.
Calculate( [expression / measure]
             , Filter( All( 'Customers')
                      , 'Customers'[Title] = "Пупкин"))


а у Вас два расчета (Calculate), отсюда и стоимость не лучшая, все дело в оценке контекста, лучше откажитесь от своей привычки.
Об этом есть отлична статью у Руссо на SQLBI.... там же прочтите про оценку фильтра (порядок действий движка).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS Tabular DAX CROSSFILTER скорость работы без/с фильтрами таблицы с фактами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]