Size: a a a

2019 April 24

AO

Alexandr Odainik in Чат Tableau
Yuri Fal
то есть на каждый день взять   SUM(IF Group = 'Group 1' THEN Value END) / SUM(IF Group = 'Group 2' THEN Value END)   ?  А затем взять AVG этих отошений по всем дням?    Или внутри каждого дня тоже считать AVG (а не SUM) по строкам?
по идее да. но проблема в том, что в оригинальном дашборде у меня еще миллион параметров, метрик, групп и т.п.
Тут я привел тестовые данные.
По сути если говорить верхоуровнево, то я хочу из длинной таблицы взять подтаблицу (например только по group 1), что-то посчитать, потом это по сути LEFT JOIN сделать к основной длинной. Т.е. перевести из длинного формата в широкий только по части данных.
Если еще точнее говорить, то могу ли я работать с агрегацией в Табло как с отдельной таблицей? просто из сырых это не сделать, так как почти все данные, которые визуализируются в конце концов это рассчетные, причем скользящие.
источник

AO

Alexandr Odainik in Чат Tableau
и поэтому и смотрел на FIXED, чтобы он посчитал что-то по FIXED и это потом можно было применить как список коэфициентов для основной таблице, и чтобы это функционально пересчитывалось во времени, фильтрах и параметрах, чтобы не делать костыльно из LEFT JOIN на сырой таблице
источник

AO

Alexandr Odainik in Чат Tableau
в том же CH это можно через array сделать, так как там колоночное оперирование
или в каком-нить data.table где это вообще гиперссылки на ячейки в матрице. И там отдельно можно все что угодно делать с любыми данными.
но сколь я понимаю, в табло такого просто не сделать.
источник

YF

Yuri Fal in Чат Tableau
Alexandr Odainik
и поэтому и смотрел на FIXED, чтобы он посчитал что-то по FIXED и это потом можно было применить как список коэфициентов для основной таблице, и чтобы это функционально пересчитывалось во времени, фильтрах и параметрах, чтобы не делать костыльно из LEFT JOIN на сырой таблице
если нужна как бы "еще одна колонка в источнике данных" с предрасчитанным агрегатом, то с помощью FIXED ее можно получить. Далее уже идет конкретика (какой результат в каких строках источника хочется увидеть).  Другое дело, что SQL-код таких запросов будет сильно неоптимален --  как для CH, так и для любой СУБД (которая "не любит джойнов").
источник

AO

Alexandr Odainik in Чат Tableau
тогда как?) вот на этом тестовом наборе данных? )
Есть две группы на линейке времени. Нужно получить отношение их также на линейке
источник

YF

Yuri Fal in Чат Tableau
для CH можно попробовать написать CH-специфичный код и обернуть его в RAWSQL_()
источник

AO

Alexandr Odainik in Чат Tableau
Если я правильно понял, то так, как написали выше
источник

AO

Alexandr Odainik in Чат Tableau
SUM(IF Group = 'Group 1' THEN Value END) / SUM(IF Group = 'Group 2' THEN Value END)
источник

AO

Alexandr Odainik in Чат Tableau
сейчас попробую на боевых данных, вроде там какая-то проблема была.
источник

YF

Yuri Fal in Чат Tableau
Alexandr Odainik
тогда как?) вот на этом тестовом наборе данных? )
Есть две группы на линейке времени. Нужно получить отношение их также на линейке
если в результате хочется получить колонку в источнике данных с одним и тем же результатом в ней, то формула будет вот такая:

{ AVG(
{ FIXED [Date] : ZN(
SUM(IF Group = 'Group 1' THEN Value END ) /
SUM(IF Group = 'Group 2' THEN Value END )
) }
) }
источник

YF

Yuri Fal in Чат Tableau
а все остальные фильтры (которые ограничивают scope) нужно добавить в Context  (у фильтра крыжик Add to Context)
источник

AO

Alexandr Odainik in Чат Tableau
если факторов кроме Date больше, их просто все надо добавить?
источник

AO

Alexandr Odainik in Чат Tableau
да, фильтры и так в контексте. но почему - то не рисует ничего. пишет что все NULL
источник

YF

Yuri Fal in Чат Tableau
Alexandr Odainik
если факторов кроме Date больше, их просто все надо добавить?
если они бьют эту агрегацию то да
источник

YF

Yuri Fal in Чат Tableau
Alexandr Odainik
да, фильтры и так в контексте. но почему - то не рисует ничего. пишет что все NULL
а у меня (на Ваших данных в Вашей книге) нарисовал циферку 1.5
источник

AO

Alexandr Odainik in Чат Tableau
в тестовых нарисовал, там все работает. пытаюсь разобраться что мешает в боевых, где сильно больше всего другого
источник

AO

Alexandr Odainik in Чат Tableau
вроде справился. были проблемы с параметрами. Спасибо большое всем за помощь. Но FIXED я все-таки пока не понимаю как функцию)))
источник

YF

Yuri Fal in Чат Tableau
Alexandr Odainik
вроде справился. были проблемы с параметрами. Спасибо большое всем за помощь. Но FIXED я все-таки пока не понимаю как функцию)))
FIXED генерит подзапрос, в котором вычисляется агрегат (то что после двоеточия ) с GROUP BY по всем колонкам типа Dimensions (то что до двоеточия ), и затем джойнит результат к основной таблице-источнику -- опять же по всем колонкам типа Dimensions, которые до двоеточия.
источник

AO

Alexandr Odainik in Чат Tableau
Хм. Доходчиво. Спасибо
источник

YF

Yuri Fal in Чат Tableau
Alexandr Odainik
вроде справился. были проблемы с параметрами. Спасибо большое всем за помощь. Но FIXED я все-таки пока не понимаю как функцию)))
возьмите Вашу книжку-пример и прогоните через Performance Recording (чтобы посмотреть SQL-код, который Табло генерит к своему движку HyPer, синтаксис напоминает диалект Postgre)
источник