Manualul cu instrucțiuni BigQuery

Această funcție este disponibilă doar în Google Analytics 360, care face parte din Google Marketing Platform.
Aflați mai multe despre Google Marketing Platform.

Acest articol conține exemple de construire a interogărilor pentru datele Analytics pe care le exportați în BigQuery. Am creat un exemplu de set de date pe care puteți exersa câteva dintre interogările de aici.

În acest articol:

Optimizarea interogărilor

Fiecare interogare executată consumă o parte din volumul lunar de procesare a datelor. Dacă selectați câmpuri neesențiale, cantitatea datelor de procesat va crește și, prin urmare, veți utiliza un procent mai mare din volumul lunar de procesare a datelor. Interogările optimizate vor folosi mai eficient volumul lunar de procesare a datelor de care dispuneți.

Aflați mai multe despre prețuri.

Selectați numai elementele de care aveți nevoie

Când formulați o interogare, selectați câmpurile relevante cu ajutorul funcției SELECT. Evitați selectarea unor câmpuri neesențiale pentru a reduce volumul datelor procesate și timpul necesar pentru procesarea interogării.

Exemplu: evitați utilizarea operatorului metacaracter

Formă incorectă: utilizează operatorul metacaracter
SELECT *
FROM [nume tabel];

 

Formă mai eficientă: utilizați numele câmpurilor pentru a evita procesarea inutilă a datelor
SELECT câmp1, câmp2
FROM [nume tabel];

Permiteți stocarea în memoria cache

Atunci când este posibil, nu folosiți funcții drept câmpuri. Funcțiile (cum ar fi NOW() (acum) sau TODAY() (astăzi)) generează rezultate variabile, ceea ce previne stocarea interogărilor în memoria cache și obținerea mai rapidă a rezultatelor. Folosiți ore și date precise.

Rezultatele din cache nu sunt acceptate pentru interogări în mai multe tabele folosind un metacaracter, chiar dacă opțiunea Folosiți rezultatele din cache este bifată. Dacă rulați aceeași interogare cu un metacaracter de mai multe ori, vi se va factura fiecare interogare. Aflați mai multe

Folosiți tabele intermediare pentru interogările secundare folosite frecvent

Dacă utilizați frecvent o anumită interogare ca interogare secundară, o puteți salva sub forma unui tabel intermediar dând clic pe Salvați ca tabel deasupra rezultatelor interogării. Apoi, veți putea specifica tabelul respectiv în secțiunea FROM (Din) a interogării dvs., ceea ce va reduce atât cantitatea datelor de procesat, cât și timpul necesar pentru procesare.

Folosirea unui tabel intermediar
SELECT câmp1, câmp2
FROM [Nume set de date.nume tabel];

Remedierea erorilor legate de interogări

BigQuery remediază erorile din cod pe măsură ce îl scrieți. În fereastra de creare, depanarea este indicată chiar sub interogare. Depanarea este, de asemenea, disponibilă prin intermediul API cu marcajul dryRun.

Interogările valide au un indicator verde care puteți da clic pentru a vedea cantitatea de date procesată de către interogare. Această caracteristică vă oferă posibilitatea de a optimiza datele înainte de a executa interogarea și de a evita astfel procesarea inutilă a datelor.

Query Debugging - Success

 

Interogările nevalide au un indicator roșu pe care puteți da clic pentru a vedea informații privind eroarea și pentru a găsi rândul și coloana pe care se află eroarea. În exemplul de mai jos, declarația GROUP BY (Grupare după) este necompletată, iar eroarea este evidențiată.

Query Debugging - Error

 

Sfaturi și cele mai bune practici

Folosirea exemplului de set de date

Următoarele exemple folosesc setul de date eșantion Google Analytics.

Pentru a folosi interogările cu propriile date, înlocuiți numele proiectului și al setului de date din exemple cu propriile nume pentru proiect și setul de date.

Folosirea SQL standard vs. SQL vechi

BigQuery acceptă două dialecte SQL:

Migrarea la SQL standard explică diferențele dintre cele două dialecte.

SQL standard este acum dialectul SQL preferat pentru interogarea datelor stocate în BigQuery.

Consultați Activarea SQL standard pentru informații despre activarea SQL standard în IU, CLI, API BigQuery sau în orice interfață folosită.

Cea mai ușoară modalitate de a începe este să includeți comentariul „standardSQL” în partea de sus a interogărilor SQL standard, așa cum vedeți în exemplele următoare.

Cu SQL vechi, datele din Google Analytics 360 sunt transmise într-un nou tabel în fiecare zi. Pentru a interoga mai multe tabele simultan, puteți să separați prin virgule numele acestora ori să folosiți funcția de metacaracter pentru tabele TABLE_DATE_RANGE sau mai multe funcții TABLE_DATE_RANGE separate prin virgulă, ca în exemplele următoare.

Interogarea mai multor tabele

Următoarele exemple vă prezintă interogările SQL standard și SQL vechi pentru aceleași date.

3 zile

SQL standard
3 zile, folosind UNION ALL
#standardSQL
WITH ga_tables AS (
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20160801`
GROUP BY date

UNION ALL

SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20160802`
GROUP BY date

UNION ALL

SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20160803`
GROUP BY date

)
SELECT
date,
visits,
pageviews,
transactions,
revenue,
FROM ga_tables
ORDER BY date ASC
SQL vechi
3 zile, folosind nume de tabele separate prin virgulă
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM
[bigquery-public-data.google_analytics_sample.ga_sessions_20160801],
[bigquery-public-data.google_analytics_sample.ga_sessions_20160802],
[bigquery-public-data.google_analytics_sample.ga_sessions_20160803]
GROUP BY
date
ORDER BY
date ASC

 

Ultimele 1095 de zile

SQL standard
Ultimele 1095 de zile, folosind _TABLE_SUFFIX
#standardSQL
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1095 DAY))
AND
FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY date
ORDER BY date ASC
SQL vechi
Ultimele 1095 de zile, folosind TABLE_DATE_RANGE
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM
(TABLE_DATE_RANGE([bigquery-public-data.google_analytics_sample.ga_sessions_],
DATE_ADD(CURRENT_TIMESTAMP(), -1095, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))
GROUP BY
date
ORDER BY
date ASC

 

Ultimele 36 de luni

SQL standard
Ultimele 36 de luni, folosind _TABLE_SUFFIX
#standardSQL
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 36 MONTH))
AND
FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY date
ORDER BY date ASC
SQL vechi
Ultimele 36 de luni, folosind TABLE_DATE_RANGE
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM
(TABLE_DATE_RANGE([bigquery-public-data.google_analytics_sample.ga_sessions_],
DATE_ADD(CURRENT_TIMESTAMP(), -36, 'MONTH'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))
GROUP BY
date
ORDER BY
date ASC

 

Ultimii 3 ani

SQL standard
Ultimii trei ani, folosind _TABLE_SUFFIX
#standardSQL
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 3 YEAR))
AND
FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY date
ORDER BY date ASC
SQL vechi
Ultimii 3 ani, folosind TABLE_DATE_RANGE
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM
(TABLE_DATE_RANGE([bigquery-public-data.google_analytics_sample.ga_sessions_],
DATE_ADD(CURRENT_TIMESTAMP(), -3, 'YEAR'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))
GROUP BY
date
ORDER BY
date ASC

 

Un anumit interval de date

SQL standard
Un anumit interval de date, folosind _TABLE_SUFFIX
#standardSQL
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN '20160801' AND '20170731'
GROUP BY date
ORDER BY date ASC
SQL vechi
Un anumit interval de date, folosind TABLE_DATE_RANGE
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM
(TABLE_DATE_RANGE([bigquery-public-data.google_analytics_sample.ga_sessions_],
TIMESTAMP('2016-08-01'), TIMESTAMP('2017-07-31')))
GROUP BY
date
ORDER BY
date ASC

Ultimii 3 ani, plus datele de astăzi (din cursul zilei)

SQL standard
Ultimii 3 ani, plus datele de astăzi (din cursul zilei), folosind UNION ALL & _TABLE_SUFFIX
Notă: acest exemplu de interogare nu va funcționa cu setul de date public Google Analytics, deoarece nu există un tabel din cursul zilei.
#standardSQL
WITH ga_tables AS ( SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 3 YEAR))
AND
FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY date
UNION ALL

SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
AND
FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY))
GROUP BY date
)
SELECT
date,
visits,
pageviews,
transactions,
revenue,
FROM ga_tables
ORDER BY date ASC

SQL vechi

Ultimii 3 ani, plus datele de astăzi (din cursul zilei), folosind mai multe TABLE_DATE_RANGE
Notă: acest exemplu de interogare nu va funcționa cu setul de date public Google Analytics, deoarece nu există un tabel din cursul zilei.
SELECT
date,
SUM(totals.visits) AS visits,
SUM(totals.pageviews) AS pageviews,
SUM(totals.transactions) AS transactions,
SUM(totals.transactionRevenue)/1000000 AS revenue
FROM
(TABLE_DATE_RANGE([bigquery-public-data.google_analytics_sample.ga_sessions_],
DATE_ADD(CURRENT_TIMESTAMP(), -3, 'YEAR'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))),
(TABLE_DATE_RANGE([bigquery-public-data.google_analytics_sample.ga_sessions_intraday_],
DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'), CURRENT_TIMESTAMP()))
GROUP BY
date
ORDER BY
date ASC

 

 

Exemple de interogări simple

Această secțiune explică modul de construire a unor interogări simple folosind valori și parametri din eșantionul de date din Google Analytics.

[Valoare] totală pe [parametru]?

Mai jos sunt exemple de scripturi pentru întrebarea: Care este numărul total de tranzacții generate pe fiecare browser de dispozitiv în iulie 2017?

SQL standard

Numărul total de tranzacții pe fiecare browser de dispozitiv în iulie 2017
#standardSQL
SELECT
device.browser,
SUM ( totals.transactions ) AS total_transactions
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN '20170701' AND '20170731'
GROUP BY
device.browser
ORDER BY
total_transactions DESC

SQL vechi

Numărul total de tranzacții pe fiecare browser de dispozitiv în iulie 2017
SELECT
device.browser,
SUM ( totals.transactions ) AS total_transactions
FROM TABLE_DATE_RANGE( [bigquery-public-data.google_analytics_sample.ga_sessions_],
TIMESTAMP('2017-07-01'), TIMESTAMP('2017-07-31') )
GROUP BY
device.browser
ORDER BY
total_transactions DESC

 

 

Rata de respingere medie pe [parametru]?

Rata de respingere reală este definită ca procent al vizitelor cu o singură vizualizare de pagină. Mai jos sunt exemple de scripturi pentru întrebarea: Care a fost rata reală de respingere pe fiecare sursă de trafic?

SQL standard

Rata de respingere pentru fiecare sursă de trafic în iulie 2017
#standardSQL
SELECT
source,
total_visits,
total_no_of_bounces,
( ( total_no_of_bounces / total_visits ) * 100 ) AS bounce_rate
FROM (
SELECT
trafficSource.source AS source,
COUNT ( trafficSource.source ) AS total_visits,
SUM ( totals.bounces ) AS total_no_of_bounces
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN '20170701' AND '20170731'
GROUP BY
source )
ORDER BY
total_visits DESC

SQL vechi

Rata de respingere pentru fiecare sursă de trafic în iulie 2017
SELECT
source,
total_visits,
total_no_of_bounces,
( ( total_no_of_bounces / total_visits ) * 100 ) AS bounce_rate
FROM (
SELECT
trafficSource.source AS source,
COUNT ( trafficSource.source ) AS total_visits,
SUM ( totals.bounces ) AS total_no_of_bounces
FROM
TABLE_DATE_RANGE( [bigquery-public-data.google_analytics_sample.ga_sessions_],
TIMESTAMP('2017-07-01'), TIMESTAMP('2017-07-31') )
GROUP BY
source )
ORDER BY
total_visits DESC

 

 

Numărul mediu de vizualizări de pagină de produs în funcție de tipul de cumpărător (cumpărători în comparație cu non-cumpărători)

Mai jos sunt exemple de scripturi pentru întrebarea: Care a fost numărul mediu de vizualizări de pagină de produs pentru utilizatorii care au făcut o achiziție în iulie 2017?

SQL standard

Numărul mediu de vizualizări de pagină de produs pentru utilizatorii care au făcut o achiziție în iulie 2017
#standardSQL
SELECT
( SUM(total_pagesviews_per_user) / COUNT(users) ) AS avg_pageviews_per_user
FROM (
SELECT
fullVisitorId AS users,
SUM(totals.pageviews) AS total_pagesviews_per_user
FROM`bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN '20170701' AND '20170731'
AND
totals.transactions >=1
GROUP BY
users )

SQL vechi

Numărul mediu de vizualizări de pagină de produs pentru utilizatorii care au făcut o achiziție în iulie 2017
SELECT
( SUM(total_pagesviews_per_user) / COUNT(users) ) AS avg_pageviews_per_user
FROM (
SELECT
fullVisitorId AS users,
SUM(totals.pageviews) AS total_pagesviews_per_user
FROM
TABLE_DATE_RANGE( [bigquery-public-data.google_analytics_sample.ga_sessions_],
TIMESTAMP('2017-07-01'), TIMESTAMP('2017-07-31') ) WHERE
totals.transactions >=1
GROUP BY
users )

 

 

Mai jos sunt exemplele de scripturi pentru întrebarea: Care a fost numărul mediu al vizualizărilor de pagină de produs pentru utilizatorii care nu au făcut o achiziție în iulie 2017?

SQL standard

Numărul mediu al vizualizărilor de pagină de produs pentru utilizatorii care nu au făcut o achiziție în iulie 2017
#standardSQL
SELECT
( SUM(total_pagesviews_per_user) / COUNT(users) ) AS avg_pageviews_per_user
FROM (
SELECT
fullVisitorId AS users,
SUM(totals.pageviews) AS total_pagesviews_per_user
FROM`bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN '20170701' AND '20170731'
AND
totals.transactions IS NULL
GROUP BY
users )

SQL vechi

Numărul mediu al vizualizărilor de pagină de produs pentru utilizatorii care nu au făcut o achiziție în iulie 2017
SELECT
( SUM(total_pagesviews_per_user) / COUNT(users) ) AS avg_pageviews_per_user
FROM (
SELECT
fullVisitorId AS users,
SUM(totals.pageviews) AS total_pagesviews_per_user
FROM
TABLE_DATE_RANGE( [bigquery-public-data.google_analytics_sample.ga_sessions_],
TIMESTAMP('2017-07-01'), TIMESTAMP('2017-07-31') ) WHERE
totals.transactions IS NULL
GROUP BY
users )

 

 

Numărul mediu de tranzacții pe cumpărător

Mai jos sunt exemple de scripturi pentru întrebarea: Care a fost suma totală a tranzacțiilor pe utilizator care a făcut o achiziție în iulie 2017?

SQL standard

Numărul mediu de tranzacții pe utilizator care a făcut o achiziție în iulie 2017
#standardSQL
SELECT
(SUM (total_transactions_per_user) / COUNT(fullVisitorId) ) AS avg_total_transactions_per_user
FROM (
SELECT
fullVisitorId,
SUM (totals.transactions) AS total_transactions_per_user
FROM
`bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN '20170701' AND '20170731'
AND totals.transactions IS NOT NULL
GROUP BY
fullVisitorId )

SQL vechi

Numărul mediu de tranzacții pe utilizator care a făcut o achiziție în iulie 2017
SELECT
(SUM (total_transactions_per_user) / COUNT(fullVisitorId) ) AS avg_total_transactions_per_user
FROM (
SELECT
fullVisitorId,
SUM (totals.transactions) AS total_transactions_per_user
FROM
TABLE_DATE_RANGE( [bigquery-public-data.google_analytics_sample.ga_sessions_],
TIMESTAMP('2017-07-01'), TIMESTAMP('2017-07-31') )
WHERE
totals.transactions IS NOT NULL
GROUP BY
fullVisitorId )

 

 

Suma medie de bani cheltuită pe sesiune

Mai jos sunt exemple de scripturi pentru întrebarea: Care este suma medie de bani cheltuită pe sesiune în iulie 2017?

SQL standard

Suma medie cheltuită pe sesiune în iulie 2017
#standardSQL
SELECT
( SUM(total_transactionrevenue_per_user) / SUM(total_visits_per_user) ) AS
avg_revenue_by_user_per_visit
FROM (
SELECT
fullVisitorId,
SUM( totals.visits ) AS total_visits_per_user,
SUM( totals.transactionRevenue ) AS total_transactionrevenue_per_user
FROM
`bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN '20170701' AND '20170731'
AND
totals.visits > 0
AND totals.transactions >= 1
AND totals.transactionRevenue IS NOT NULL
GROUP BY
fullVisitorId )

SQL vechi

Suma medie cheltuită pe sesiune în iulie 2017
SELECT
( SUM(total_transactionrevenue_per_user) / SUM(total_visits_per_user) ) AS
avg_revenue_by_user_per_visit
FROM (
SELECT
fullVisitorId,
SUM( totals.visits ) AS total_visits_per_user,
SUM( totals.transactionRevenue ) AS total_transactionrevenue_per_user
FROM
TABLE_DATE_RANGE( [bigquery-public-data.google_analytics_sample.ga_sessions_],
TIMESTAMP('2017-07-01'), TIMESTAMP('2017-07-31') )
WHERE
totals.visits > 0
AND totals.transactions >= 1
AND totals.transactionRevenue IS NOT NULL
GROUP BY
fullVisitorId )

 

 

Succesiunea accesărilor

Mai jos sunt exemple de scripturi pentru întrebarea: Care este secvența paginilor vizualizate?

SQL standard

Secvența paginilor vizualizate de utilizatori în iulie 2017
#standardSQL
SELECT
fullVisitorId,
visitId,
visitNumber,
hits.hitNumber AS hitNumber,
hits.page.pagePath AS pagePath
FROM
`bigquery-public-data.google_analytics_sample.ga_sessions_*`,
UNNEST(hits) as hits
WHERE
_TABLE_SUFFIX BETWEEN '20170701' AND '20170731'
AND
hits.type="PAGE"
ORDER BY
fullVisitorId,
visitId,
visitNumber,
hitNumber

SQL vechi

Secvența paginilor vizualizate de utilizatori în iulie 2017
SELECT
fullVisitorId,
visitId,
visitNumber,
hits.hitNumber AS hitNumber,
hits.page.pagePath AS pagePath
FROM
TABLE_DATE_RANGE( [bigquery-public-data.google_analytics_sample.ga_sessions_],
TIMESTAMP('2017-07-01'), TIMESTAMP('2017-07-31') )
WHERE
hits.type="PAGE"
ORDER BY
fullVisitorId,
visitId,
visitNumber,
hitNumber

În această interogare, limitați tipurile de accesări la cele de tip PAGE (Pagină) pentru a evita afișarea interacțiunilor de tip eveniment sau tranzacție. Fiecare rând al rezultatului reprezintă o vizualizare de pagină și este determinat de ordinea standard a câmpurilor din propoziția SELECT (Selectare)

 

 

Parametrii personalizați multipli la nivel de accesare sau sesiune

parametru personalizat la nivel de accesare
SELECT fullVisitorId, visitId, hits.hitNumber, hits.time,
MAX(IF(hits.customDimensions.index=1,
hits.customDimensions.value,
NULL)) WITHIN hits AS customDimension1,
FROM [tableID.ga_sessions_20150305]
LIMIT 100

 

parametru personalizat la nivel de sesiune
SELECT fullVisitorId, visitId,
MAX(IF(customDimensions.index=2,
customDimensions.value,
NULL)) WITHIN RECORD AS customDimension2,
FROM [tableID.ga_sessions_20150305]
LIMIT 100

În fiecare interogare:

Propoziția SELECT (Selectare) trimite o interogare pentru câmpurile relevante cu parametri și valori.

Funcția MAX:

  • returnează parametrul personalizat sub formă de coloană nouă. Puteți repeta funcția în așa fel încât să returneze mai mulți parametri personalizați sub formă de coloane noi.
  • funcțiile WITHIN hits și WITHIN RECORD evaluează condiția din câmpurile repetate din BigQuery;
  • condiția din MAX este evaluată pentru fiecare parametru personalizat, dar returnează NULL pentru parametrii care nu sunt index=1 (hits) or index=2 (sessions);
  • returnează valoarea maximă, care este valoarea Parametrului personalizat 1 pentru accesări sau a Parametrului personalizat 2 pentru sesiuni întrucât toate celelalte valori sunt NULL.

Exemple de interogări avansate

După ce v-ați familiarizat cu interogările simple, puteți crea interogări folosind funcțiile și caracteristicile avansate din BigQuery.

Produsele achiziționate de clienții care au achiziționat Produsul A (comerț electronic clasic)

Puteți vedea mai jos o schemă de script pentru întrebarea: Ce alte produse sunt achiziționate de clienții care achiziționează produsul A?

produsele achiziționate de un client care achiziționează produsul A (comerț electronic clasic)
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity
FROM [‘Nume set de date’ ]
WHERE fullVisitorId IN (
  SELECT fullVisitorId
  FROM [‘Nume set de date’ ]
  WHERE hits.item.productName CONTAINS 'Nume produs A'
   AND totals.transactions>=1
  GROUP BY fullVisitorId
)
 AND hits.item.productName IS NOT NULL
 AND hits.item.productName != 'Nume produs A'
GROUP BY other_purchased_products
ORDER BY quantity DESC;
  1. Pe primul rând, selectați toate celelalte articole achiziționate de un utilizator; funcția agregată COUNT() se utilizează pentru calcularea cantității din fiecare produs achiziționat. Rezultatul este afișat într-un câmp marcat quantity, iar articolul asociat din câmpul produsului va avea eticheta other_purchased_products.
  2. În interogarea secundară afișată cu gri, selectați numai utilizatorii unici (fullVisitorId) care au efectuat tranzacții (totals.transactions>=1), precum și, în timpul unei tranzacții, au achiziționat produsul A (WHERE hits.item.productName CONTAINS 'Nume produs A').

Regulile (propozițiile WHERE și AND) din interogarea de la nivelul superior (de culoare verde) ignoră valorile de la hits.item.productName care sunt nule și care conțin produsul A.

Iată un exemplu pentru interogarea: Dacă un client achiziționează Pixuri metalice Brighton – set de 4, ce alt(e) produs(e) a cumpărat?

produsele achiziționate de un client care achiziționează „Pixuri metalice Brighton (set de 4)” pe 24 iunie 2013
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity
FROM [GoogleStore.ga_sessions_20130624]
WHERE fullVisitorId IN (
  SELECT fullVisitorId
  FROM [GoogleStore.ga_sessions_20130624]
  WHERE hits.item.productName CONTAINS 'Pixuri metalice Brighton – set de 4'
   AND totals.transactions>=1
  GROUP BY fullVisitorId
)
 AND hits.item.productName IS NOT NULL
 AND hits.item.productName !='Pixuri metalice Brighton – set de 4'
GROUP BY other_purchased_products
ORDER BY quantity DESC;

În Dremel/BigQuery, utilizarea WHERE expr IN declanșează acțiunea JOIN și aplică restricții de dimensiune, în special pentru dimensiunea părții din dreapta a acțiunii JOIN (în acest caz, numărul de vizitatori), care trebuie să fie mai mică de 8 MB. În Dremel, această acțiune este numită broadcast JOIN. Când dimensiunea depășește 8 MB, este necesar să declanșați o acțiune shuffled JOIN, folosind sintaxa JOIN EACH. Din păcate, aceasta nu poate fi realizată cu operatorul IN, însă aceeași interogare poate fi rescrisă cu ajutorul unei funcții JOIN.

Produsele achiziționate de clienții care au achiziționat Produsul A (comerț electronic optimizat)

Aceasta este similară schemei de interogare anterioare, dar funcționează pentru comerțul electronic optimizat. În plus, utilizează TABLE_DATE_RANGE pentru a interoga date din mai multe zile.

produsele achiziționate de un client care achiziționează produsul A (comerț electronic optimizat)
SELECT hits.product.productSKU AS other_purchased_products, COUNT(hits.product.productSKU) AS quantity
FROM SELECT fullVisitorId, hits.product.productSKU, hits.eCommerceAction.action_type FROM TABLE_DATE_RANGE([73156703.ga_sessions_], TIMESTAMP('2015-07-01'), TIMESTAMP('2015-07-14')))
WHERE fullVisitorId IN (
  SELECT fullVisitorId
FROM TABLE_DATE_RANGE([73156703.ga_sessions_], TIMESTAMP('2015-07-01'), TIMESTAMP('2015-07-14'))
WHERE hits.product.productSKU CONTAINS '10 15103'
AND hits.eCommerceAction.action_type = '6'
GROUP BY fullVisitorId
)
AND hits.product.productSKU IS NOT NULL
AND hits.product.productSKU !='10 15103'
AND hits.eCommerceAction.action_type = '6'
GROUP BY other_purchased_products
ORDER BY quantity DESC;

Numărul mediu de interacțiuni ale utilizatorilor înainte de achiziție

Acesta este un exemplu de interogare a unei comenzi JOIN() [...] ON, care depinde numai de datele Google Analytics.

Puteți vedea, mai jos, schema de script pentru întrebarea Care este numărul mediu de interacțiuni ale utilizatorilor de dinaintea unei achiziții?

numărul de interacțiuni ale utilizatorilor înainte de o achiziție
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number
FROM (
 SELECT hits.item.productSku, SUM(hits.hitNumber) AS sum_of_hit_number
 FROM [‘Nume set de date GA’ ]
 WHERE hits.item.productSku IS NOT NULL
  AND totals.transactions>=1
 GROUP BY hits.item.productSku
) AS ‘Alias_Name_1’
JOIN (
 SELECT hits.item.productSku, COUNT( fullVisitorId ) AS total_hits
 FROM [‘Nume set de date GA’ ]
 WHERE hits.item.productSku IS NOT NULL
  AND totals.transactions>=1
 GROUP BY hits.item.productSku
) AS ‘Alias_Name_2’
ON Alias_Name_1.hits.item.productSku = Alias_Name_2.hits.item.productSku;
  1. Prima linie efectuează operațiunea matematică principală pentru a determina numărul mediu interacțiuni ale utilizatorilor pe produs, iar interogarea efectuează o operație de alăturare a celor două interogări secundare numite „Alias_Name_1” și „Alias_Name_2”.
  2. Interogarea secundară „Alias_Name_1” este folosită pentru a genera un câmp care utilizează funcția agregată SUM() pentru a însuma toate accesările înregistrate pentru un produs.
  3. Interogarea secundară „Alias_Name_2” se utilizează pentru a determina numărul de accesări efectuate de utilizatori pentru fiecare produs, utilizând funcția COUNT().
  4. Ultimul rând arată câmpul comun (hits.item.productSku) folosit de cele două seturi de date la îmbinare.

Iată un exemplu pentru interogarea: Pe 10 septembrie 2013, care este numărul mediu de interacțiuni ale utilizatorilor înainte de o achiziție?

numărul de interacțiuni ale utilizatorilor înainte de o achiziție pe 10 septembrie 2013
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number
FROM (
 SELECT hits.item.productSku, SUM(hits.hitNumber) AS sum_of_hit_number
 FROM [GoogleStore.ga_sessions_20130728]
 WHERE hits.item.productSku IS NOT NULL
  AND totals.transactions>=1
 GROUP BY hits.item.productSku 
) AS one
JOIN (
 SELECT hits.item.productSku, COUNT( fullVisitorId ) AS total_hits
 FROM [GoogleStore.ga_sessions_20130728]
 WHERE hits.item.productSku IS NOT NULL
  AND totals.transactions>=1
 GROUP BY hits.item.productSku
) AS two
ON one.hits.item.productSku = two.hits.item.productSku;

Procentul vândut din stoc pentru fiecare produs

Acesta este un exemplu de interogare care nu depinde numai de date Google Analytics, ci și de date din afara programului. Prin combinarea celor două seturi de date, puteți începe să înțelegeți comportamentul utilizatorilor la un nivel mai segmentat. Puteți importa în BigQuery date din afara programului Google Analytics, însă rețineți că li se va aplica taxa lunară de stocare a datelor.

Puteți vedea, mai jos, o schemă de script pentru întrebarea Ce procent din stoc a fost vândut pentru fiecare produs?

procentul vândut din stoc pentru fiecare produs
SELECT AnalyticsImport.product_data_20130728.productId, ((( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold )) * 100 ) AS percentage_of_stock_sold
FROM [ ‘Imported_DataSet’ ]
JOIN (
  SELECT hits.item.productSku, SUM( hits.item.itemQuantity ) AS quantity_sold
  FROM [‘Set date GA’ ]
  WHERE hits.item.productSku IS NOT NULL
   AND totals.transactions>=1
  GROUP BY hits.item.productSku
) AS ‘Alias_Name’
ON Imported_DataSet.’productId_field’ = Alias_Name.hits.item.productSku;
  1. Primul rând generează două câmpuri: unul conține toate codurile de produs, iar celălalt aplică operația matematică prin care se va determina procentul vândut din stoc pentru codul de produs respectiv.
  2. Întrucât această interogare depinde de două seturi de date, trebuie să folosiți funcția JOIN() ... ON. Această comandă îmbină rândurile din cele două seturi de date pe baza câmpului comun dintre acestea. În acest caz, cele două seturi de date sunt [ ‘Imported_DataSet’ ] și 'Alias_Name'.
  3. [ ‘Imported_DataSet’ ] reprezintă datele din afara programului Google Analytics. Acesta este setul de date care conține câmpul cu valoarea stocului rămas (Imported DataSet.'stock_left_field') și câmpul cu parametrul codului de produs (Imported_DataSet.'productId_field').
  4. 'Alias_Name' este numele atribuit datelor returnate de interogarea secundară afișată cu gri. Această interogare secundară folosește datele Google Analytics pentru a determina cantitatea totală de articole vândute pentru fiecare produs.
  5. Ultimul rând folosește propoziția ON pentru a afișa câmpul comun al celor două seturi de date și secțiunea în care cele două seturi de date sunt unite.

Multe dintre variabilele din această interogare au numele setului de date atașat ca prefix la numele acestora (de exemplu, Set_de_date_importat.'productId_field', Alias_Name.quantity_sold). Acest lucru are rolul de a indica în mod clar câmpul selectat și setul de date căruia îi aparține acesta.

Iată un exemplu pentru interogarea: Ce procent din stoc a fost vândut pe produs pe 28 iulie 2013?

procentajul vândut din stoc pentru fiecare produs în 28 iulie 2013
SELECT AnalyticsImport.product_data_20130728.productId, ( ( ( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold ) ) * 100 ) AS percentage_of_stock_sold
FROM AnalyticsImport.product_data_20130728
JOIN (
  SELECT hits.item.productSku, SUM( hits.item.itemQuantity ) AS quantity_sold
  FROM GoogleStore.ga_sessions_20130728
  WHERE hits.item.productSku IS NOT NULL
   AND totals.transactions>=1
  GROUP BY hits.item.productSku
) AS one
ON AnalyticsImport.product_data_20130728.productId = one.hits.item.productSku
ORDER BY percentage_of_stock_sold DESC;

Profitabilitatea fiecărui produs

Puteți vedea, mai jos, o schemă de script pentru întrebarea Care este profitabilitatea fiecărui produs?

profitul în funcție de produs
SELECT Alias_Name.hits.item.productSku, ( Imported_DataSet.’product profit field’ * Alias_Name.quantity ) AS profit
FROM (
  SELECT Alias_Name.hits.item.productSku, Imported_DataSet.’product profit field’
  FROM [ ‘Imported Data Set’ ]
  JOIN (
    SELECT hits.item.productSku, SUM( hits.item.itemQuantity ) AS quantity
    FROM [ ‘Nume set de date GA’ ]
    WHERE hits.item.productSku IS NOT NULL
    GROUP BY hits.item.productSku
) AS ‘Alias_Name’
  ON Imported_DataSet.productId = Alias_Name.hits.item.productSku
);
  1. Primul rând conține operația matematică necesară pentru a calcula profitul total obținut pentru fiecare produs.
  2. Interogarea secundară gri folosește date din afara programului Google Analytics și culege informații despre profitul obținut la vânzarea unui produs.
  3. Interogarea secundară roșie este asociată datelor Google Analytics și va fi combinată cu datele din afara programului. Aceasta calculează cantitatea de articole vândute pentru fiecare produs.
  4. Ultimul rând folosește propoziția ON pentru a indica în mod clar câmpul comun al celor două seturi de date. În acest caz, este vorba despre codul produsului.

Iată un exemplu pentru interogarea Care a fost profitabilitatea fiecărui produs pe 28 iulie 2013?

profitul pe produs în 28 iulie 2013
SELECT two.hits.item.productSku, ((AnalyticsImport.product_data_20130728.productprice-AnalyticsImport.product_data_20130728.productcost)*two.quantity) AS profit
FROM (
  SELECT two.hits.item.productSku, AnalyticsImport.product_data_20130728.productcost, two.quantity, AnalyticsImport.product_data_20130728.productprice
  FROM AnalyticsImport.product_data_20130728
  JOIN (
    SELECT hits.item.productSku, SUM( hits.item.itemQuantity ) AS quantity
    FROM GoogleStore.ga_sessions_20130728
    WHERE hits.item.productSku IS NOT NULL
    GROUP BY hits.item.productSku
) AS two
  ON AnalyticsImport.product_data_20130728.productId = two.hits.item.productSku
);

Profitul se calculează prin identificarea diferenței dintre prețul la care este vândut produsul și costul de fabricare a acestuia. Aceste informații sunt stocate în setul de date non-Google Analytics.

Profitabilitatea reală a fiecărui produs (luând în considerare rambursările)

Puteți vedea mai jos o schemă de script pentru întrebarea: Care este profitabilitatea reală a fiecărui produs?

profitul real în funcție de produs
SELECT Alias_Name.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit
FROM (
  SELECT Alias_Name.hits.item.productSku, ( ( Imported_DataSet.productprice - Imported_DataSet.productcost ) * Alias_Name.quantity ) AS gross_profit, ( ( Imported_DataSet.refunddeliveryprice + Imported_DataSet.productprice ) * Imported_DataSet.refundquantity ) AS total_refund_revenue
  FROM (

    SELECT Alias_Name.hits.item.productSku, Imported_DataSet.productcost, Alias_Name.quantity, Imported_DataSet.productprice, Imported_DataSet.refunddeliveryprice, Imported_DataSet.refundquantity
    FROM [ ‘Nume set de date importat’ ] AS 'Imported_DataSet'
    JOIN (
      
SELECT hits.item.productSku, SUM( hits.item.itemQuantity ) AS quantity
      FROM [‘Nume set de date GA’]
      WHERE hits.item.productSku IS NOT NULL
       AND totals.transactions >=1
      GROUP BY hits.item.productSku
) AS 'Alias_Name'
    ON Imported_DataSet.productId = Alias_Name.hits.item.productSku )
);
  1. Aceasta este o interogare foarte similară cu Care este profitabilitatea fiecărui produs? Singurele diferențe constau în setul de date din afara programului Google Analytics, din interogarea secundară gri, și în operația matematică de calculare a profitului real, de pe primul rând.
  2. În setul de date din afara programului Google Analytics, calculați și suma totală cheltuită pentru rambursări (în propoziția SELECT din interogarea secundară roșie).
  3. Apoi veți face o operație matematică pe rândul 1 pentru a afla profitul real, prin scăderea sumei cheltuite pentru rambursări din profitul brut.

Pentru mai multe informații cu privire la interogare, consultați secțiunea privind profitabilitatea fiecărui produs.

Iată un exemplu pentru interogarea Care a fost profitabilitatea reală a fiecărui produs pe 28 iulie 2013?

profitul real pe produs în 28 iulie 2013
SELECT two.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit
FROM (
  SELECT two.hits.item.productSku, ( ( AnalyticsImport.product_data_20130728.productprice - AnalyticsImport.product_data_20130728.productcost ) * two.quantity ) AS gross_profit, ( ( AnalyticsImport.product_data_20130728.refunddeliveryprice + AnalyticsImport.product_data_20130728.productprice ) * AnalyticsImport.product_data_20130728.refundquantity ) AS total_refund_revenue
  FROM (

    SELECT two.hits.item.productSku, Analytics.product_data_20130728.productcost, two.quantity, AnalyticsImport.product_data_20130728.productprice, AnalyticsImport.product_data_20130728.refunddeliveryprice, AnalyticsImport.product_data_20130728.refundquantity
    FROM AnalyticsImport.product_data_20130728
    JOIN (

      SELECT hits.item.productSku, SUM( hits.item.itemQuantity ) AS quantity
      FROM GoogleStore.ga_sessions_20130728
      WHERE hits.item.productSku IS NOT NULL
       AND totals.transactions >=1
      GROUP BY hits.item.productSku
) AS two
    ON AnalyticsImport.product_data_20130728.productId = two.hits.item.productSku )
);

Profitul real ține cont de profitabilitatea unui produs după ce se iau în calcul produsele rambursate. Pentru a calcula venitul total rambursat pentru un produs:

venitul total rambursat pentru un produs = (prețul produsului + prețul de livrare rambursat al produsului) * cantitatea de produse rambursate

A fost util?

Cum putem să îmbunătățim această pagină?
true
Alegeți-vă propriul parcurs de formare

Consultați google.com/analytics/learn, o nouă resursă care vă va ajuta să profitați la maximum de Google Analytics 4. Noul site web include videoclipuri, articole și fluxuri ghidate și oferă linkuri către Discord Google Analytics, Blog, canalul YouTube și directorul GitHub.

Începeți să învățați chiar de astăzi!

Căutare
Șterge căutarea
Închide căutarea
Meniu principal
12480451189640061860
true
Căutaţi în Centrul de ajutor
true
true
true
true
true
69256
false
false