Я пытаюсь найти пересечение двух результирующих наборов, используя DAX, но я действительно изо всех сил пытаюсь вычислить два результата.Использование DAX, как вычислить таблицу при фильтрации по связанной таблице?
У меня есть таблица фактов, FactCheckForUpdates, которая имеет отношение к таблице дат, называемой «Дата регистрации». FactCheckForUpdates содержит идентификаторы машины, и я хочу вернуть идентификаторы за последние 2 полных месяца.
можно вычислить подсчет различных идентификаторов машин, использующих эту формулу:
2Month Distinct Machines:=CALCULATE (
[Distinct Machine Ids],
FILTER(
ALL('Log Date'),
('Log Date'[YearMonthNumber] >= MAX('Log Date'[YearMonthNumber]) - 3)
&& ('Log Date'[YearMonthNumber] <= MAX('Log Date'[YearMonthNumber]) - 1)
)
)
Где Distinct машина Идентификаторы 'вычисляется как:
:=DISTINCTCOUNT([MachineId])
и где «YearMonthNumber» вычисляется на Таблица «Дата регистрации»:
=('Log Date'[YearKey] - MIN('Log Date'[YearKey])) * 12 + 'Log Date'[MonthOfYearKey]
(фактически это дает номер месяца в контекст всего измерения даты).
Может ли кто-нибудь помочь мне обновить выражение [2Month Distinct Machines], чтобы вместо того, чтобы возвращать определенное количество идентификаторов машины за этот период, возвращается таблица идентификаторов машины?
Я пробовал использовать функцию РАСЧЕТОВ, но он не будет принимать агрегат МАКС в фильтр даты. Ближайший я получил это формула:
CALCULATETABLE (
ADDCOLUMNS (
SUMMARIZE (FactCheckForUpdates, FactCheckForUpdates[MachineId]),
"meh", CALCULATE (SUM (FactCheckForUpdates[CFUPing]))
),
FactCheckForUpdates[LogDateKey] > DATE (2016, 4, 1)
)
, но я не знаю, как использовать таблицу «Log Date» здесь.
Любая помощь массово ценится!
Спасибо, Грег. Я пробовал ваше предложение, но он возвращает 0 строк. Я думаю, что это возможно из-за функции CALCULATETABLE, игнорирующей контекст. Я использую выражение внутри другого, в основном хочу получить две таблицы идентификаторов машины, затем найти их пересечение и вернуть количество строк пересекающихся значений. Упрощенная форма будет выглядеть примерно так: 'КАЛЬКУЛЯЦИЯ (COUNTROWS (INTERSECT (, )))' –
Собственно, попытка вашего предложения за пределами DaxStudio и в моей модели действительно работала - моя плохо! –