Ця функція доступна лише в Analytics 360, що є сервісом Google Marketing Platform. Докладніше про Google Marketing Platform. |
У цій статті описано, як формувати запити на отримання даних Analytics, які експортуються в BigQuery. Ви також зможете попрацювати з деякими описаними запитами на прикладі зразка набору даних.
Зміст- Оптимізація запитів
- Рекомендації та практичні поради
- Приклади основних запитів
- Загальна кількість [показник] для кожного [параметр]
- Середній показник відмов для кожного [параметр]
- Середня кількість переглядів сторінок товарів за типом покупця
- Середня кількість трансакцій на покупця
- Середня сума витрат за сеанс
- Послідовність звернень (аналіз шляхів)
- Кілька спеціальних параметрів на рівні звернення або сеансу
- Приклади додаткових запитів
- Товари, придбані клієнтами, які купили товар А (класична електронна комерція)
- Товари, придбані клієнтами, які купили товар А (розширена електронна комерція)
- Середня кількість взаємодій із користувачем перед покупкою
- Відсоток запасу, проданого для кожного товару
- Прибуток від кожного товару
- Реальний прибуток від кожного товару
Оптимізація запитів
Кожен запит збільшує щомісячну плату за обробку даних. Зайві поля збільшують обсяг даних, які необхідно обробити. Це призводить до необґрунтованого підвищення щомісячних витрат. Оптимізовані запити дають змогу зменшити щомісячні витрати на обробку даних.
Докладніше про розрахунок ціни.
Вибирайте лише потрібні поля
Під час формулювання запиту рекомендуємо вибирати за допомогою оператора SELECT лише релевантні поля. Якщо не викликати зайві поля, можна зменшити обсяг даних і час обробки запиту.
Приклад. Уникайте використання оператора підстановки
Погана форма: використовується оператор підстановки |
---|
SELECT * |
Краща форма: використовуються назви полів для зменшення часу обробки |
---|
SELECT field1, field2 |
Дозвіл на кешування
Якщо це можливо, уникайте використання функцій як полів. Функції (як-от NOW()
або TODAY()
) повертають результати змінних. Це не дає запитам кешуватися й пришвидшує виведення результату. Натомість використовуйте конкретні значення часу й дати.
Використовуйте проміжні таблиці для часто використовуваних підзапитів
Якщо ви постійно використовуєте конкретний запит як підзапит, збережіть його як проміжну таблицю, натиснувши кнопку Зберегти як таблицю над результатами запиту. Тоді в подальших запитах ви зможете посилатися на цю таблицю в розділі FROM
. Це призведе до зменшення обсягу даних і пришвидшить обробку.
використання проміжної таблиці |
---|
SELECT field1, field2 |
Налагодження запитів
У BigQuery код налагоджується під час створення. У вікні створення статус налагодження показується прямо під запитом. Налагодження також доступне через API за допомогою позначки dryRun.
Дійсні запити позначені індикатором зеленого кольору. Його можна натиснути, щоб побачити обсяг оброблених запитом даних. Ця функція дає змогу оптимізувати дані перед виконанням запиту, щоб уникнути обробки необов’язкової інформації.
Недійсні запити мають індикатор червоного кольору, за натискання якого відображається інформація про помилку та вказується рядок і стовпець, де сталася помилка. У наведеному нижче прикладі оператор GROUP BY порожній і вказано помилку.
Рекомендації та практичні поради
Як використовувати зразок набору даних
У наведених нижче прикладах використовується зразок набору даних Google Analytics.
Щоб застосувати запити до власних даних, просто замініть назви проекту й набору даних у зразках власними назвами.
Як використовувати стандартну та застарілу версії SQL
У BigQuery підтримуються два діалекти SQL.
У статті Як перейти на стандартну версію SQL описано відмінності між цими двома діалектами.
Для запитів даних, збережених у BigQuery, зараз рекомендованим діалектом SQL є його стандартна версія.
Перегляньте цю статтю, щоб дізнатися більше про ввімкнення стандартної версії SQL у BigQuery, CLI, API або будь-якому іншому інтерфейсі, що ви використовуєте.
Найпростіший спосіб розпочати роботу – додати коментар "standardSQL" угорі запитів у стандартній версії SQL так, як показано на прикладах нижче.
Якщо використовується застаріла версія SQL, дані Google Analytics 360 групуються в окремі таблиці для кожного дня. Щоб отримати дані кількох таблиць одночасно, можна включити їх назви в запит, розділивши їх комами, скористатися функцією TABLE_DATE_RANGE
(функція символів підстановки) або застосувати кілька розділених комами функцій TABLE_DATE_RANGE
, як показано на прикладах нижче.
Запити на отримання даних кількох таблиць
У прикладах нижче показано запити на отримання даних у стандартній і застарілій версіях SQL.
3 дні
Стандартна версія SQL
3 дні за допомогою функції UNION ALL |
---|
#standardSQL |
Застаріла версія SQL
3 дні за допомогою назв таблиць, розділених комами |
---|
SELECT |
Останні 1095 днів
Стандартна версія SQL
Останні 1095 днів за допомогою функції _TABLE_SUFFIX |
---|
#standardSQL |
Застаріла версія SQL
Останні 1095 днів за допомогою функції TABLE_DATE_RANGE |
---|
SELECT |
Останні 36 місяців
Стандартна версія SQL
Останні 36 місяців за допомогою функції _TABLE_SUFFIX |
---|
#standardSQL |
Застаріла версія SQL
Останні 36 місяців за допомогою функції TABLE_DATE_RANGE |
---|
SELECT |
Останні 3 роки
Стандартна версія SQL
Останні 3 роки за допомогою функції _TABLE_SUFFIX |
---|
#standardSQL |
Застаріла версія SQL
Останні 3 роки за допомогою функції TABLE_DATE_RANGE |
---|
SELECT |
Певний діапазон дат
Стандартна версія SQL
Певний діапазон дат за допомогою функції _TABLE_SUFFIX |
---|
#standardSQL |
Застаріла версія SQL
Певний діапазон дат за допомогою функції TABLE_DATE_RANGE |
---|
SELECT |
Останні 3 роки включно із сьогоднішнім днем (проміжними даними)
Стандартна версія SQL
Останні 3 роки включно із сьогоднішнім (поточним) за допомогою функцій UNION ALL і _TABLE_SUFFIX |
---|
Зверніть увагу, що цей зразок запиту не працюватиме із загальнодоступним набором даних Google Analytics, оскільки в ньому наразі немає проміжної таблиці за день. |
#standardSQL |
Застаріла версія SQL
Останні 3 роки включно із сьогоднішнім (поточним) із використанням функції TABLE_DATE_RANGE |
---|
Зверніть увагу, що цей зразок запиту не працюватиме із загальнодоступним набором даних Google Analytics, оскільки в ньому наразі немає проміжної таблиці за день. |
SELECT |
Приклади основних запитів
У цьому розділі описано, як створювати основні запити за допомогою показників і параметрів із даних Analytics.
Яка загальна кількість [показник] для кожного [параметр]?
Нижче наведено приклади скриптів для такого запитання: Яка загальна кількість трансакцій для кожного веб-переглядача пристрою в липні 2017 року?
Стандартна версія SQL
Загальна кількість трансакцій для кожного веб-переглядача пристрою в липні 2017 року |
---|
#standardSQL |
Застаріла версія SQL
Загальна кількість трансакцій для кожного веб-переглядача пристрою в липні 2017 року |
---|
SELECT |
Середній показник відмов для кожного [параметр]
Реальний показник відмов визначається як відсоток відвідувань з одним переглядом сторінки. Нижче наведено приклади скриптів для такого запитання: Який реальний показник відмов для кожного джерела трафіку?
Стандартна версія SQL
Показник відмов для кожного джерела трафіку в липні 2017 року |
---|
#standardSQL |
Застаріла версія SQL
Показник відмов для кожного джерела трафіку в липні 2017 року |
---|
SELECT |
Середня кількість переглядів сторінок товарів за типом покупця (покупці та користувачі, які не здійснили покупку)
Нижче наведено приклади скриптів для такого запитання: Яка середня кількість переглядів сторінок товарів для користувачів, які здійснили покупку в липні 2017 року?
Стандартна версія SQL
Середня кількість переглядів сторінок товарів для користувачів, які здійснили покупку в липні 2017 року |
---|
#standardSQL |
Застаріла версія SQL
Середня кількість переглядів сторінок товарів для користувачів, які здійснили покупку в липні 2017 року |
---|
SELECT |
Нижче наведено приклади скриптів для такого запитання: Яка середня кількість переглядів сторінок товарів для користувачів, які не здійснили покупку в липні 2017 року?
Стандартна версія SQL
Середня кількість переглядів сторінок товарів для користувачів, які не здійснили покупку в липні 2017 року |
---|
#standardSQL |
Застаріла версія SQL
Середня кількість переглядів сторінок товарів для користувачів, які не здійснили покупку в липні 2017 року |
---|
SELECT |
Середня кількість трансакцій на покупця
Нижче наведено приклади скриптів для такого запитання: Яка середня кількість трансакцій на користувача, який здійснив покупку в липні 2017 року?
Стандартна версія SQL
Середня кількість трансакцій на користувача, який здійснив покупку в липні 2017 року |
---|
#standardSQL |
Застаріла версія SQL
Середня кількість трансакцій на користувача, який здійснив покупку в липні 2017 року |
---|
SELECT |
Середня сума витрат за сеанс
Нижче наведено приклади скриптів для такого запитання: Яка середня сума витрат за сеанс у липні 2017 року?
Стандартна версія SQL
Середня сума витрат за сеанс у липні 2017 року |
---|
#standardSQL |
Застаріла версія SQL
Середня сума витрат за сеанс у липні 2017 року |
---|
SELECT |
Послідовність звернень
Нижче наведено приклади скриптів для такого запитання: Яка послідовність переглянутих сторінок?
Стандартна версія SQL
Послідовність сторінок, переглянутих користувачами в липні 2017 року |
---|
#standardSQL |
Застаріла версія SQL
Послідовність сторінок, переглянутих користувачами в липні 2017 року |
---|
SELECT |
У цьому запиті ви обмежуєте звернення типом PAGES
, щоб виключити події або трансакції. Кожен рядок отриманих даних відображає перегляд сторінки й показується в порядку полів за умовчанням в операторі SELECT
.
Кілька спеціальних параметрів на рівні звернення або сеансу
спеціальний параметр на рівні звернення |
---|
SELECT fullVisitorId, visitId, hits.hitNumber, hits.time, |
спеціальний параметр на рівні сеансу |
---|
SELECT fullVisitorId, visitId, |
Докладна інформація про кожен запит
Оператор SELECT
запитує поля релевантних параметрів і показників.
Функція MAX
виконує наведені нижче дії.
- Повертає спеціальний параметр як новий стовпець. Ви можете повторити функцію, щоб отримати кілька спеціальних параметрів.
- Оператори
WITHIN hits
іWITHIN RECORD
обчислюють умову в повторюваних полях у BigQuery. - Умова у функції
MAX
оцінюється для кожного спеціального параметра, але для тих, які не єindex=1 (hits)
абоindex=2 (sessions)
повертається значенняNULL
. - Повертає максимальне значення, тобто значення спеціального параметра 1 для звернень або значення спеціального параметра 2 для сеансів, оскільки всі інші параметри отримують значення
NULL
.
Приклади додаткових запитів
Знаючи прості запити, ви зможете використовувати додаткові функції BigQuery.
Товари, придбані клієнтами, які купили товар А (класична електронна комерція)
Нижче наведено схематичний скрипт для такого запитання: Які ще товари придбали клієнти, які купили товар А?
товари, придбані клієнтом, який купив товар А (класична електронна комерція) |
---|
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity |
- У першому рядку ви вибираєте всі інші товари, придбані користувачем, і за допомогою агрегатної функції
COUNT()
розраховуєте кількість інших куплених товарів. Результат з’явиться в поліquantity
, а відповідний товар – у поліother_purchased_products
. - У сірому підзапиті ви вибираєте лише унікальних користувачів (
fullVisitorId
), які здійснили трансакції (totals.transactions>=1
) і під час трансакції придбали товар A (WHERE hits.item.productName CONTAINS Назва товару А
).
Правила (оператори WHERE
та AND
) у запиті вищого рівня (зеленого кольору) ігнорують значення параметра hits.item.productName
, які дорівнюють нулю й містять товар А.
Нижче наведено приклад такого запиту: Клієнт купив товар "Кулькові ручки (4 шт.)". Які ще товари він придбав?
товари, придбані клієнтом, який купив товар "Кулькові ручки (4 шт.)" 24 червня 2013 року |
---|
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity |
У Dremel/BigQuery використання WHERE expr IN
активує JOIN, після чого застосовуються обмеження розміру, зокрема, розмір правої сторони JOIN (у цьому випадку це кількість відвідувачів) має бути менше ніж 8 МБ. У Dremel це називається broadcast JOIN. Якщо розмір перевищує 8 МБ, потрібно активувати shuffled JOIN. Для цього скористайтеся синтаксисом JOIN EACH. Оператор IN у цьому разі не працюватиме, але той самий запит можна переписати за допомогою JOIN.
Товари, придбані клієнтами, які купили товар А (розширена електронна комерція)
Цей скрипт схожий на попередній, але призначений для розширеної електронної комерції. У ньому також використовується функція TABLE_DATE_RANGE
для отримання даних за кілька днів.
товари, придбані клієнтом, який купив товар А (розширена електронна комерція) |
---|
SELECT hits.product.productSKU AS other_purchased_products, COUNT(hits.product.productSKU) AS quantity |
Середня кількість взаємодій із користувачем перед покупкою
Це приклад запиту команди JOIN() [...] ON
, яка залежить лише від даних Analytics.
Нижче наведено схематичний скрипт для такого запитання: Яка середня кількість взаємодій із користувачем перед покупкою?
кількість взаємодій із користувачем перед покупкою |
---|
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number |
- У першому рядку виконується основна математична операція з пошуку середньої кількості взаємодій користувача на товар. Цей запит створює зв’язок між двома підзапитами Псевдонім_1 і Псевдонім_2.
- Псевдонім_1 використовується для отримання поля, у якому за допомогою агрегатної функції
SUM()
додаються всі звернення, зареєстровані для товару. - Псевдонім_2 використовується для визначення кількості звернень, зроблених користувачами для кожного товару, за допомогою функції
COUNT()
. - В останньому рядку показано спільне поле (
hits.item.productSku
) двох наборів даних.
Нижче наведено приклад запиту для запитання: Яка середня кількість взаємодій користувачів перед покупкою 10 вересня 2013 року?
кількість взаємодій із користувачем перед покупкою, здійсненою ним 10 вересня 2013 року |
---|
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number |
Відсоток запасу, проданого для кожного товару
Це приклад запиту, який залежить не лише від даних Analytics. Об’єднавши два набори даних, можна детальніше проаналізувати поведінку користувачів. Другий набір можна імпортувати в BigQuery, але через це щомісячна плата за збереження даних може підвищитися.
Нижче наведено схематичний скрипт для такого запитання: Який відсоток запасу продано для кожного товару?
відсоток запасу, проданого для кожного товару |
---|
SELECT AnalyticsImport.product_data_20130728.productId, ((( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold )) * 100 ) AS percentage_of_stock_sold |
- Перший рядок виводить два поля: одне містить усі ідентифікатори товарів, а інше є математичною операцією, за допомогою якої знаходимо відсоток запасу, проданого для цих товарів.
- Оскільки цей запит використовує два набори даних, для нього потрібна функція
JOIN() ... ON
. Ця команда об’єднує на основі спільного поля рядки з двох наборів даних (тут –[Імпортований набір даних]
іПсевдонім
). [Імпортований набір даних]
– це дані зі сторонніх сервісів (не Analytics). Цей набір містить поле показника запасу, що залишився (Imported DataSet.’stock_left_field’
), і поле параметра "Ідентифікатор товару" (Imported_DataSet.’productId_field’
).Псевдонім
– це назва, що призначається даним, які повернуто сірим підзапитом. Цей підзапит використовує дані Analytics для пошуку загальної кількості проданих одиниць кожного товару.- В останньому рядку використовується оператор
ON
, який відображає спільне поле двох наборів даних, а також точку їх об’єднання.
Перед назвами багатьох змінних у цьому запиті стоїть назва відповідного набору даних (наприклад, Imported_DataSet.’productId_field’, Alias_Name.quantity_sold
). Це дає змогу зрозуміти, яке поле ви вибираєте, і до якого набору даних воно належить.
Нижче наведено приклад такого запиту для запитання: Який відсоток запасу продано для кожного товару 28 липня 2013 року?
відсоток запасу, проданого для кожного товару 28 липня 2013 року |
---|
SELECT AnalyticsImport.product_data_20130728.productId, ( ( ( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold ) ) * 100 ) AS percentage_of_stock_sold |
Прибуток від кожного товару
Нижче наведено схематичний скрипт для такого запитання: Який прибуток від кожного товару?
прибуток від кожного товару |
---|
SELECT Alias_Name.hits.item.productSku, ( Imported_DataSet.’product profit field’ * Alias_Name.quantity ) AS profit |
- Перший рядок містить математичну операцію, необхідну для підрахунку загального прибутку від кожного товару.
- Сірий підзапит використовує дані додаткового набору даних про розмір прибутку від продажу товару.
- Червоний підзапит використовує дані Analytics, які буде об’єднано з інформацією в другому наборі даних. Він підраховує кількість проданих одиниць кожного товару.
- В останньому рядку використовується оператор
ON
, який уточнює спільне для двох наборів даних поле. У цьому випадку це ідентифікатор товару.
Нижче наведено приклад запиту для запитання: Який прибуток отримано від кожного товару 28 липня 2013 року?
прибуток від кожного товару за 28 липня 2013 року |
---|
SELECT two.hits.item.productSku, ((AnalyticsImport.product_data_20130728.productprice-AnalyticsImport.product_data_20130728.productcost)*two.quantity) AS profit |
Прибуток обчислюється як різниця ціни товару та його собівартості. Ця інформація зберігається в сторонньому наборі даних.
Реальний прибуток від кожного товару (з урахуванням повернутих коштів)
Нижче наведено схематичний скрипт для такого запитання: Який реальний прибуток від кожного товару?
реальний прибуток від кожного товару |
---|
SELECT Alias_Name.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit |
- Цей запит дуже схожий на запит Який прибуток від кожного товару? Різниця лише в тому, що сірий підзапит використовує додатковий набір даних, а перший рядок містить математичну операцію підрахунку реального прибутку.
- На основі імпортованого набору даних також підраховується загальна сума, витрачена на повернення коштів (в операторі
SELECT
червоного підзапиту). - Відтак виконується математична операція з рядка 1, яка показує реальний прибуток (для цього від валового прибутку віднімається дохід, витрачений на повернення коштів).
Докладніше про запит читайте в розділі Прибуток від кожного товару.
Нижче наведено приклад такого запиту для запитання: Який реальний прибуток отримано від кожного товару 28 липня 2013 року?
реальний прибуток від кожного товару 28 липня 2013 року |
---|
SELECT two.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit |
Реальний прибуток – це прибуток від товару після повернення коштів. Нижче описано, як розрахувати загальний дохід від товару після повернення коштів.
Загальний дохід від товару після повернення коштів = (ціна товару + ціна повернення коштів за товар) * кількість товарів, за які повернено гроші