В этой статье расскажу о том, как я свел статистику по всему контексту в одном месте с помощью BigQuery и Data Studio
У меня появилась необходимость визуализировать данные по всем источникам трафика.
Для данной задачи я использую Data Studio. Google Ads туда подтягивается прекраснейшим образом, а вот с Яндекс Директ все сложнее.
Я для себя выбрал полуручной способ сведения статистики: получение и отправка статистики со своего компьютера.
Я ежедневно получаю статитику в различных разрезах в DataFrame.
И это отлично потому, что в pandas есть библиотека pandas_gbq, которая умеет отправлять DataFrame в BigQuery.
Для начала давайте определимся с тем, какие разрезы статистики будем отправлять.
Так как мы в BigQuery можем хранить очень много информации, я откинул для себя статистику в разрезе дней.
Также нужно учитывать то, что нам нужно получать статистику минимум за месяц для перезаписи, так как рекламные системы обновляют старую статистику из-за скликивания.
Поэтому я для себя пока что не использую статистику в разрезе ключей, так как она часто бывает излишней.
Буду рассказывать все на примере ежедневной статистики в разрезе РК. (столбцы: дата и РК)
Далее речь пойдет о том, как модифицировать DataFrame, чтобы он отправился.
По некоторым РК мы будем получать пустые поля в поведенческих факторах и конверсиях
Чтобы обойти эту проблему, нужно заменить минусы на «0».
И назначить числовой тип данных.
Добавить отдельно индексируемый столбец. Если мы отправим такой DataFrame или посмотрим тип данных с помощью dtipe, увидим, что нет столбца с датами.
Чтобы исправить ситуацию, создадим столбец, который будет равняться индексируемому столбцу.
Получаем следующий DataFrame
Указываем название DataFrame, Название Датасета, название файла (он может пока что не существовать), название проекта и то, как будет записываться файл (в нашем случае будет полная перезапись файла).
Получаем в BigQuery следующее:
Остается лишь визуализировать данные в DataStudio. Конечный код:
Спасибо за внимание!
У меня появилась необходимость визуализировать данные по всем источникам трафика.
Для данной задачи я использую Data Studio. Google Ads туда подтягивается прекраснейшим образом, а вот с Яндекс Директ все сложнее.
Я для себя выбрал полуручной способ сведения статистики: получение и отправка статистики со своего компьютера.
Я ежедневно получаю статитику в различных разрезах в DataFrame.
И это отлично потому, что в pandas есть библиотека pandas_gbq, которая умеет отправлять DataFrame в BigQuery.
Какую статистику хранить в BigQuery
Для начала давайте определимся с тем, какие разрезы статистики будем отправлять.
Так как мы в BigQuery можем хранить очень много информации, я откинул для себя статистику в разрезе дней.
Также нужно учитывать то, что нам нужно получать статистику минимум за месяц для перезаписи, так как рекламные системы обновляют старую статистику из-за скликивания.
Поэтому я для себя пока что не использую статистику в разрезе ключей, так как она часто бывает излишней.
Буду рассказывать все на примере ежедневной статистики в разрезе РК. (столбцы: дата и РК)
Далее речь пойдет о том, как модифицировать DataFrame, чтобы он отправился.
Модификация DataFrame
Проблема 1
По некоторым РК мы будем получать пустые поля в поведенческих факторах и конверсиях
Чтобы обойти эту проблему, нужно заменить минусы на «0».
f['Conversions'].replace(['--'],[0],inplace=True)
f['CostPerConversion'].replace(['--'],[0],inplace=True)
f['ConversionRate'].replace(['--'],[0],inplace=True)
f['AvgPageviews'].replace(['--'],[0],inplace=True)
f['BounceRate'].replace(['--'],[0],inplace=True)
И назначить числовой тип данных.
f[["Conversions","CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]]=f[["Conversions","CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]].apply(pd.to_numeric)
Проблема 2
Добавить отдельно индексируемый столбец. Если мы отправим такой DataFrame или посмотрим тип данных с помощью dtipe, увидим, что нет столбца с датами.
Чтобы исправить ситуацию, создадим столбец, который будет равняться индексируемому столбцу.
f['Date']=f.index
Получаем следующий DataFrame
Отправляем DataFrame в BigQuery
pandas_gbq.to_gbq(f,'мой датасет.файл',project_id='мой проект',if_exists='replace')
Указываем название DataFrame, Название Датасета, название файла (он может пока что не существовать), название проекта и то, как будет записываться файл (в нашем случае будет полная перезапись файла).
Получаем в BigQuery следующее:
Остается лишь визуализировать данные в DataStudio. Конечный код:
f['Date']=f.index
f['Conversions'].replace(['--'],[0],inplace=True)
f['CostPerConversion'].replace(['--'],[0],inplace=True)
f['ConversionRate'].replace(['--'],[0],inplace=True)
f['AvgPageviews'].replace(['--'],[0],inplace=True)
f['BounceRate'].replace(['--'],[0],inplace=True)
f[["Conversions", "CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]] = f[["Conversions", "CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]].apply(pd.to_numeric)
pandas_gbq.to_gbq(f, 'YD_Days.my_client_rk', project_id='my_project',if_exists='replace')
Спасибо за внимание!