Сначала создайте новую таблицу «Актив»:
Эта таблица содержит уникальные активы, и мы будем использовать ее для создания слайсера, которыйвлияет на измерение DAX, но не влияет на визуальное (таблица).Для этого таблица активов должна быть отключена от таблицы просмотра (без связей).
В вашей таблице просмотра я просто переименовал «asset» в «asset_id», чтобы соответствовать:
Далее создайтемера:
Status =
VAR Selected_Asset = SELECTEDVALUE(Asset[asset_id])
VAR Customer_Asset = SELECTEDVALUE(Viewership[asset_id])
RETURN
IF(Customer_Asset = Selected_Asset, "Watched", "Not Watched")
Результат:
Слайсер здесь создается из таблицы «Актив», а таблица являетсявизуальная таблица с customer_id и asset_id из таблицы Viewership (установите для них значения «не суммировать»).Я выключил «Всего», предполагая, что вам это не нужно.
В этом проекте требуется установить слайсер активов в режим «одиночного выбора», чтобы убедиться, что вы получаете только одно значение из него.Если вы хотите, чтобы модель работала с мультиселектором, измените меру DAX следующим образом:
Multi Status =
VAR Selected_Assets = ALLSELECTED(Asset[asset_id])
VAR Customer_Asset = SELECTEDVALUE(Viewership[asset_id])
RETURN
IF(Customer_Asset IN Selected_Assets, "Watched", "Not Watched")
Результат:
Редактировать:
Чтобы заставить его работать на уровне клиента:
Customer Status =
VAR Selected_Assets = ALLSELECTED(Asset[asset_id])
VAR Customer_Assets = VALUES(Viewership[asset_id])
VAR Assets_Watched = COUNTROWS(INTERSECT(Customer_Assets, Selected_Assets))
RETURN
IF(Assets_Watched > 0, "Watched", "Not Watched")
Результат:
Объяснение: сохранить выбранные активы в табличной переменной.Затем сохраните активы, видимые для каждого клиента, в другой табличной переменной.Найти пересечение двух таблиц (что у них общего) и подсчитать количество пересеченных строк.Если нет - не смотрел, иначе смотрел.Если вы хотите, вы можете отобразить количество просмотренных фильмов (просто верните «Assets_Watched» вместо оператора IF).