Как сделать быструю и удобную визуализацию в Data studio на базе BigQuery
Google data stduio один из самых простых инструментов визуализации, который сейчас есть на рынке, и так как он бесплатный и активно расширяется, то, если бы проводили какое-то сравнение подобных инструментов, по количеству пользователей, он был бы в топе.

DataStudio на борту имеет множество готовых коннекторов для подключения к различным источникам данных, включая и множество продуктов google. В том числе и популярной системе хранения данных — google bigquery, которая входит в google cloud.

Кроме того, есть возможность использовать платные коннекторы, например от supermetrics или же opensource коннекторы.

Также, активно расширяется и типы визуализации, где в Community Gallery можно найти интересные решения:
Рекомендую, иногда заглядывать туда, исследуя новые типы решений, а чтобы включить возможность использовать их, нужно в своем коннекторе включить возможность работы с community visualisation:
Простой и не самый эффективный способ
Собственно, мы можем просто подключить нужную нам таблицу выбрав пункт bigqeury в списке доступных коннекторов
В этом случае, вы получаете доступ ко всей таблице firebase / app+web, с, слегка причесанными, метриками и параметрами. Как и в обычной таблице в интерфейсе bigquery из метрик у вас есть users, events count и всё, что касается денег.

Все параметры событий и user_propities уже разложены и с помощью создания собственных функций, вы можете получить доступ к аттрибутам.

Например, чтобы получить доступ к параметру page_location в событии page_view, можно создать новое поле Pages и написать такую формулу:
case when Event Name = 'page_view' and Event Param Name = 'page_location' then Event Param Value (String) else '' end
Визуализация воронок
То, чего давно не хватало, это возможность построить воронку на базе своих событий или страниц, с нужными условиями. Недавно, ребятами из powermyanalytics.com, была добавлена такая возможность:
Например, если мы хотим построить воронку на базе определенных страниц, можем создать несколько метрик, указав вот такие значения:
CASE
  WHEN Event Name = 'session_start' AND Event Param Name = 'page_location' AND CONTAINS_TEXT(Event Param Value (String), 'https://web-analytics.me/') THEN 1
  ELSE 0
END
А работая с фильтрами, можем включить только определенный сегмент аудитории, например, трафик, только с google:
После добавления нужных метрик, каждая из которых будет соответствовать отдельному шагу в нашей воронке, можем получить подобный результат:
При необходимости, можем посчитать не по количеству page view, а по уникальному пользователю, тогда меняем формулу на вот такую:
case 
when 
Event Name = 'page_view' and Event Param Name = 'page_location' and Event Param Value (String) = 'https://web-analytics.me/' then User Pseudo ID 
else '' 
end
И указываем count distinct:
Распределение по времени
С помощью визуализации от https://www.clickinsight.ca/ мы можем сделать line chars с распределением пользователей по часам:
И с помощью фильтров, поискать интересные закономерности. Чтобы найти час из параметра времени, нам нужно создать еще один параметр, воспользовавшись формулой:
HOUR(Event Time)
Google maps
Скорее для красоты, но наконец-то добавлена возможность положить данные на google maps без лишних хлопот:
И так, как это встроенная визуализация, то возможностей для тюнинга, больше чем достаточно.
Gauge chart
Не смотря, на свою мало привлекательность, это классная визуализация которая позволяет понять, насколько наш показатель находится в нормальной зоне, что сильно проще позволяет оценить его.
Но все таки, чаще всего, мы работаем с таблицами, где, в том числе есть возможность сравнения текущих показателей с предыдущим или каким-то жестко заданным периодом, для включения этой возможности, выбираем в comparison data range, в верхнем правом меню previous period:
И на выходе получаем что-то типа этого:
Картинки в таблице
Прекрасная возможность оценить эффективность баннеров, это посмотреть на креативы в виде картинки, которые мы можем добавить прямо в таблицу, для этого, соответствующее поле должно содержать url адрес картинки, и если это так, то в настройке параметра, меняем значение на url и в пункте show as указываем image:
Способ посложнее, но более гибкий
Так как мы имеем доступ к сырым данным в bigquery, то у нас есть возможность составлять свои sql запросы с необходимыми нам данными и визуализировать результат. Особенно, это актуально, если кроме наших данных app+web, есть данные по рекламе google ads, данные из search console, рекламе facebook или данные о продажах из базы данных.

Составляя запросы, которые работают сразу с несколькими таблицами с данных, у нас есть возможность объединять нужные нам данные и предрассчитывать метрики на sql, а в google data studio просто визуализировать результаты этих вычислений.

Но часто бывает, что даже супер быстрый bigquery, может обрабатывать значительный объем данных продолжительное время и наши визуализации будут работать не очень быстро.

Самый простой способ добавить свой запрос, при добавлении источника данных, это выбор пункта custom query:
Причем, в таком случае, мы можем обращаться не к всей таблице, а фильтруя результаты с помощью custom parametrs:
Что значительно ускорит выборку данных. Особенно это касается кластеризованных и партиционных таблиц:
WHERE
  _TABLE_SUFFIX >= PARSE_DATE('%Y%m%d', @DS_START_DATE)
And _TABLE_SUFFIX <= PARSE_DATE('%Y%m%d', @DS_END_DATE)
 
Where
_PARTITIONTIME >= PARSE_DATE('%Y%m%d', @DS_START_DATE);
  AND _PARTITIONTIME <= PARSE_DATE('%Y%m%d', @DS_END_DATE);
Кстати, недавно появилась возможность работы не только с датами, но и другими параметрами, включая свои собственные.

Или же, у нас есть возможность создавать View на базе запросов, нажав на кнопку save view:
Скорость выполнения обращения к такой таблице не ускорится, по сравнению с обычным запросом, но так удобнее хранить готовые запросы.

После создания и проверки вашего запроса, мы можем сохранить результат его работы уже в настоящую таблицу, для этого в разделе more, выбираем Query settings:
Те, фактически, это уже готовая, посчитанная таблица, скорость работы с которой будет на порядок выше, чем выполнять весь запрос.

Если же, мы работаем не со статическими данными, а как правило, так и есть, необходимо, чтобы наша таблица рассчитывалась регулярно, например раз в день, и для этого, нам подойдут scheduled queries, функционал, который позволяет рассчитывать таблицы по расписанию:
Причем, составляя такие запросы, мы можем работать не со всем датасетом, а только с последним днем, используя возможность append to table:
А в наших запросах, указываем выборку только за вчера:
where parse_date('%Y%m%d', event_date) = date_sub(current_date(), interval 1 day)
Как правило, в реальной работе, я добавляю раз день или чаще, через scheduled queries результаты запросов в партиционные по дням таблицы, с метриками и параметрами, которые визуализирую на одном листе в datastudio, причем подключая эти таблицы, используя custom parametrs, что позволяет максимально уменьшить время и ресурсы, как при создании таких таблиц, так и значительно увеличить скорость работы самих отчетов.
Made on
Tilda