Tableau смешанный вопрос расчета агрегации
Я пытаюсь смешать 2 источника данных в таблице.
Когда поле переносится из вторичного источника данных в вычисляемое поле в первичном источнике данных, это заставляет меня агрегировать в этой точке.
Мой расчет - умножение, и когда промежуточные итоги Таблицы, он делает это интересным способом:
Formula = SUM(primary.a) x MAX(secondary.b)
Expected subtotal method = SUM(SUM(primary.a) x MAX(secondary.b))
Actual behavior seen = SUM(SUM(primary.a)) x MAX(secondary.b)
Он подытоживает поле, а затем применяет умножение max b после.
Любые идеи, как контролировать способ расчета?
1 ответ
Была такая же проблема несколько дней назад. Реальное поведение правильное, поскольку оно зависит от используемых вами разделов (измерений на рабочем листе). Позволь мне объяснить. Предположим, у вас есть таблица A и таблица B:
A:
Id MeasureA
1 10
2 20
3 15
4 25
5 10
6 5
B:
Id MeasureB
1 5
2 10
3 20
4 5
5 15
6 25
Теперь, если вы перетащите Id в строки, а вашу формулу - в столбцы (в столбчатой диаграмме), у вас должно получиться что-то вроде:
Id MeasureB
1 50
2 200
3 300
4 125
5 150
6 125
Для первой строки у вас будет SUM(A.MeasureA) = 10 и MAX(B.MeasureB) = 5. И умножение 50
Теперь, если вы удалите Id из строк, у вас будет SUM(A.MeasureA) = 85 и MAX(B.MeasureB) = 25. И умножение будет 2125, а не ожидаемое 950 (сумма значений в моей третьей таблице)
Помните, что агрегация происходит на уровне измерений, которые явно указаны на листе.
Чтобы получить точные результаты, вам нужно присоединиться к таблицам, прежде чем подключаться к Tableau. Не очень сложно сделать на SQL, я думаю. Невозможно получить то, что вы хотите (только в агрегации самого низкого уровня), только путем смешивания данных
Если вы хотите воспроизвести логику SUM(SUM(primary.a) × MAX(secondary.b))
, Я думаю, вам понадобится выражение LOD, которое задает максимум secondary.b
в каждую строку в primary.a
.
Я думаю такое выражение:
{EXCLUDE[id]:MAX[secondary.b]}
… Должен сработать.