Aquesta funció només està disponible a Analytics 360, que forma part de Google Marketing Platform. Obteniu més informació sobre Google Marketing Platform. |
Aquest article conté exemples de com podeu crear consultes de les dades de Google Analytics que exporteu a BigQuery. A més, disposeu d'un conjunt de dades de mostra per practicar amb les consultes de l'article.
Contingut d'aquest article:- Optimització de les consultes
- Consells i pràctiques recomanades
- Exemples de consultes bàsiques
- Total de [mètrica] per [dimensió]
- Percentatge de rebots mitjà per [dimensió]
- Nombre mitjà de visualitzacions de pàgina de producte per tipus de comprador
- Nombre mitjà de transaccions per comprador
- Import de diners mitjà gastat per sessió
- Seqüència de peticions de fitxer (anàlisi de camins)
- Diverses dimensions personalitzades al nivell de petició de fitxer o de sessió
- Exemples de consultes avançades
- Productes adquirits pels clients que han comprat el producte A (comerç electrònic clàssic)
- Productes adquirits pels clients que han comprat el producte A (comerç electrònic millorat)
- Nombre mitjà d'interaccions d'usuari abans d'una compra
- Percentatge d'estoc venut per producte
- Rendibilitat de cada producte
- Rendibilitat real de cada producte
Optimització de les consultes
Cada consulta que executeu contribueix a la vostra assignació mensual de tractament de dades. Si seleccioneu camps superflus, augmenteu la quantitat de dades que s'han de tractar i, com a resultat, utilitzeu més assignació mensual de la necessària. Les consultes optimitzades fan un ús eficient de l'assignació mensual de tractament de dades.
Obteniu més informació sobre els preus.
Seleccionar només el que es necessita
Quan formuleu una consulta, seleccioneu els camps pertinents de la instrucció SELECT. Si no crideu camps superflus, reduïu la quantitat de dades i el temps necessari per tractar la consulta.
Exemple: no utilitzeu l'operador de comodí
Forma incorrecta: utilitzar l'operador de comodí |
---|
SELECT * |
Forma adequada: utilitzar noms de camps per evitar el tractament innecessari |
---|
SELECT field1, field2 |
Permetre que es desin dades a la memòria cau
Sempre que sigui possible, eviteu utilitzar funcions com a camps. Les funcions (com ara NOW()
o TODAY()
) ofereixen resultats variables, que impedeixen que les consultes s'emmagatzemin a la memòria cau i, per tant, ofereixin una resposta més ràpida. És millor que utilitzeu hores i dates específiques.
Fer servir taules intermèdies per a les subconsultes més utilitzades
Si detecteu que sovint utilitzeu una consulta concreta com a subconsulta, podeu desar-la com a taula intermèdia fent clic a Save as a Table (Desa com una taula) al damunt dels resultats de la consulta. A continuació, podeu fer referència a aquesta taula a la secció FROM
de la consulta, cosa que reduirà tant la quantitat de dades que s'han de tractar com el temps necessari per fer-ho.
Utilitzar una taula intermèdia |
---|
SELECT field1, field2 |
Depuració de consultes
BigQuery depura el codi mentre el creeu. A la finestra de creació del codi, la depuració s'indica just a sota de la consulta. La depuració també es pot dur a terme a través de l'API amb la marca dryRun.
Les consultes vàlides tenen un indicador verd en el qual podeu fer clic per veure la quantitat de dades que han tractat. Aquesta funció us dona l'oportunitat d'optimitzar les dades abans d'executar la consulta, de manera que pugueu evitar que es tractin dades innecessàries.
Les consultes no vàlides tenen un indicador vermell en el qual podeu fer clic per veure informació sobre l'error i trobar la línia i la columna en què es produeix. A l'exemple següent, la instrucció GROUP BY és buida, i s'assenyala l'error.
Consells i pràctiques recomanades
Utilitzar el conjunt de dades de mostra
Els exemples següents utilitzen el conjunt de dades de mostra de Google Analytics.
Per utilitzar aquestes consultes amb les vostres dades, només cal que substituïu el nom del projecte i del conjunt de dades dels exemples pels noms reals.
SQL estàndard vs. SQL heretat
BigQuery és compatible amb dos dialectes d'SQL:
L'article sobre la migració a SQL estàndard explica les diferències entre tots dos dialectes.
Actualment, el dialecte SQL estàndard és el preferit per consultar dades emmagatzemades a BigQuery.
Llegiu l'article sobre l'activació d'SQL estàndard per obtenir informació sobre com podeu activar SQL estàndard a la interfície d'usuari (IU), a la interfície de línia d'ordres (CLI) o a l'API de BigQuery, o en qualsevol interfície que utilitzeu.
La manera més senzilla de començar és incloure el comentari "standardSQL" a la part superior de les consultes en SQL estàndard, tal com es mostra als exemples següents.
Amb SQL heretat, les dades de Google Analytics 360 es transfereixen cada dia a una taula nova. Per consultar diverses taules alhora, podeu separar els noms de les taules amb comes, utilitzar la funció de comodí de taula
TABLE_DATE_RANGE o bé fer servir diverses funcions TABLE_DATE_RANGE
separades per comes, tal com es mostra als exemples següents.
Consultar diverses taules
Els exemples següents mostren consultes de les mateixes dades en SQL estàndard i SQL heretat.
3 dies
SQL estàndard
3 dies amb UNION ALL |
---|
#standardSQL |
SQL heretat
3 dies amb noms de taula separats per comes |
---|
SELECT |
Els 1.095 darrers dies
SQL estàndard
Els 1.095 darrers dies amb _TABLE_SUFFIX |
---|
#standardSQL |
SQL heretat
Els 1.095 darrers dies amb TABLE_DATE_RANGE |
---|
SELECT |
Els 36 darrers mesos
SQL estàndard
Els 36 darrers mesos amb _TABLE_SUFFIX |
---|
#standardSQL |
SQL heretat
Els 36 darrers mesos amb TABLE_DATE_RANGE |
---|
SELECT |
Els 3 darrers anys
SQL estàndard
Els 3 darrers anys amb _TABLE_SUFFIX |
---|
#standardSQL |
SQL heretat
Els 3 darrers anys amb TABLE_DATE_RANGE |
---|
SELECT |
Interval de dates específic
SQL estàndard
Interval de dates específic amb _TABLE_SUFFIX |
---|
#standardSQL |
SQL heretat
Interval de dates específic amb TABLE_DATE_RANGE |
---|
SELECT |
Els 3 darrers anys més les dades d'avui (intradia)
SQL estàndard
Els 3 darrers anys més les dades d'avui (intradia) amb UNION ALL i _TABLE_SUFFIX |
---|
Nota: aquesta consulta d'exemple no funcionarà amb el conjunt de dades públic de Google Analytics perquè actualment no hi ha cap taula intradiària. |
#standardSQL |
SQL heretat
Els 3 darrers anys més les dades d'avui (intradia) amb diferents TABLE_DATE_RANGE |
---|
Nota: aquesta consulta d'exemple no funcionarà amb el conjunt de dades públic de Google Analytics perquè actualment no hi ha cap taula intradiària. |
SELECT |
Exemples de consultes bàsiques
En aquesta secció s'explica com es construeixen consultes bàsiques mitjançant mètriques i dimensions d'exemples de dades d'Analytics.
Total de [mètrica] per [dimensió]?
A continuació es mostren scripts d'exemple per a la pregunta: Quantes transaccions en total es van generar per navegador de dispositiu el juliol de 2017?
SQL estàndard
Total de transaccions per navegador de dispositiu el juliol de 2017 |
---|
#standardSQL |
SQL heretat
Total de transaccions per navegador de dispositiu el juliol de 2017 |
---|
SELECT |
Percentatge de rebots mitjà per [dimensió]?
El percentatge de rebots real es defineix com el percentatge de visites amb una sola visualització de pàgina. A continuació es mostren scripts d'exemple per a la pregunta: Quin va ser el percentatge de rebots real per font del trànsit?
SQL estàndard
Percentatge de rebots per font del trànsit el juliol de 2017 |
---|
#standardSQL |
SQL heretat
Percentatge de rebots per font del trànsit el juliol de 2017 |
---|
SELECT |
Nombre mitjà de visualitzacions de pàgina de producte per tipus de comprador (compradors vs. no compradors)
A continuació es mostren scripts d'exemple per a la pregunta: Quin va ser el nombre mitjà de visualitzacions de pàgina de producte per part dels usuaris que van fer una compra el juliol de 2017?
SQL estàndard
Nombre mitjà de visualitzacions de pàgina de producte per part dels usuaris que van fer una compra el juliol de 2017 |
---|
#standardSQL |
SQL heretat
Nombre mitjà de visualitzacions de pàgina de producte per part dels usuaris que van fer una compra el juliol de 2017 |
---|
SELECT |
A continuació es mostren scripts d'exemple per a la pregunta: Quin va ser el nombre mitjà de visualitzacions de pàgina de producte per part dels usuaris que no van fer cap compra el juliol de 2017?
SQL estàndard
Nombre mitjà de visualitzacions de pàgina de producte per part dels usuaris que no van fer cap compra el juliol de 2017 |
---|
#standardSQL |
SQL heretat
Nombre mitjà de visualitzacions de pàgina de producte per part dels usuaris que no van fer cap compra el juliol de 2017 |
---|
SELECT |
Nombre mitjà de transaccions per comprador
A continuació es mostren scripts d'exemple per a la pregunta: Quin va ser el total mitjà de transaccions per cada usuari que va fer una compra el juliol de 2017?
SQL estàndard
Nombre mitjà de transaccions per cada usuari que va fer una compra el juliol de 2017 |
---|
#standardSQL |
SQL heretat
Nombre mitjà de transaccions per cada usuari que va fer una compra el juliol de 2017 |
---|
SELECT |
Import de diners mitjà gastat per sessió
A continuació es mostren scripts d'exemple per a la pregunta: Quin va ser l'import de diners mìtjà gastat per sessió el juliol de 2017?
SQL estàndard
Import de diners mitjà gastat per sessió el juliol de 2017 |
---|
#standardSQL |
SQL heretat
Import de diners mitjà gastat per sessió el juliol de 2017 |
---|
SELECT |
Seqüència de peticions de fitxer
A continuació es mostren scripts d'exemple per a la pregunta: Quina és la seqüència de pàgines visualitzades?
SQL estàndard
Seqüència de pàgines visualitzades pels usuaris el juliol de 2017 |
---|
#standardSQL |
SQL heretat
Seqüència de pàgines visualitzades pels usuaris el juliol de 2017 |
---|
SELECT |
En aquesta consulta, limiteu els tipus de peticions de fitxer a PAGES
per evitar veure interaccions d'esdeveniment o de transacció. Cada línia del resultat representa una visualització de pàgina i es mostra segons l'ordre predeterminat dels camps de la instrucció SELECT
.
Diverses dimensions personalitzades al nivell de petició de fitxer o de sessió
Dimensió personalitzada al nivell de petició de fitxer |
---|
SELECT fullVisitorId, visitId, hits.hitNumber, hits.time, |
Dimensió personalitzada al nivell de sessió |
---|
SELECT fullVisitorId, visitId, |
En totes dues consultes:
La instrucció SELECT
consulta els camps de dimensió i de mètrica rellevants.
La funció MAX
:
- Torna la dimensió personalitzada en una columna nova. Podeu repetir la funció per mostrar diverses dimensions personalitzades en columnes noves.
WITHIN hits
iWITHIN RECORD
avaluen la condició dins de camps repetits a BigQuery.- La condició dins de
MAX
s'avalua per a cada dimensió personalitzada, però en el cas de les que no sónindex=1 (hits)
oindex=2 (sessions)
, tornaNULL
. - Torna el valor màxim, que és el valor de la dimensió personalitzada 1 per a les peticions de fitxer o de la dimensió personalitzada 2 per a les sessions, ja que la resta de valors són
NULL
.
Exemples de consultes avançades
Ara que ja us heu familiaritzat amb les consultes senzilles, podeu crear consultes amb les funcions avançades i amb les funcions disponibles a BigQuery.
Productes adquirits pels clients que han comprat el producte A (comerç electrònic clàssic)
A continuació es mostra un script bàsic per a la pregunta: Quins altres productes han adquirit els clients que han comprat el producte A?
Productes adquirits per un client que ha comprat el producte A (comerç electrònic clàssic) |
---|
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity |
- A la primera línia, seleccioneu tots els altres articles que ha comprat un usuari, i la funció de suma
COUNT()
es fa servir per calcular la quantitat de cada article comprat. A continuació, el resultat es mostra en un camp etiquetat com aquantity
, amb el seu article associat al camp de producte etiquetat com aother_purchased_products
. - A la subconsulta en gris, seleccioneu només els usuaris únics (
fullVisitorId
) que han realitzat transaccions (totals.transactions>=1
) i que durant una transacció han comprat el producte A (WHERE hits.item.productName CONTAINS 'nom del producteProduct Item Name A'
).
Les regles (instruccions WHERE
i AND
) de la consulta de nivell superior (en verd) ometen els valors de hits.item.productName
, que són nuls i contenen el producte A.
A continuació es mostra un exemple de la consulta següent: si un client compra un paquet de quatre bolígrafs metàl·lics Brighton, quins altres productes ha comprat?
Productes adquirits per un client que va comprar un paquet de quatre bolígrafs metàl·lics Brighton el 24 de juny de 2013 |
---|
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity |
A Dremel/BigQuery, l'ús de WHERE expr IN
activa una ordre JOIN, i s'apliquen restriccions de mida; concretament, la mida del costat dret de JOIN (en aquest cas, el nombre de visitants) ha de ser inferior a 8 MB. A Dremel, això s'anomena broadcast JOIN. Quan la mida supera els 8 MB, heu d'activar una ordre shuffled JOIN, cosa que es pot fer amb la sintaxi JOIN EACH. Malauradament, no es pot fer mitjançant IN, però la mateixa consulta es pot tornar a escriure amb una ordre JOIN.
Productes adquirits pels clients que han comprat el producte A (comerç electrònic millorat)
L'script d'aquesta consulta és semblant al de la consulta anterior, però es pot utilitzar amb el comerç electrònic millorat. A més, fa servir la funció TABLE_DATE_RANGE
per consultar dades corresponents a diversos dies.
Productes adquirits per un client que ha comprat el producte A (comerç electrònic millorat) |
---|
SELECT hits.product.productSKU AS other_purchased_products, COUNT(hits.product.productSKU) AS quantity |
Nombre mitjà d'interaccions d'usuari abans d'una compra
A continuació es mostra un exemple d'una consulta amb una ordre JOIN() [...] ON
, que només depèn de les dades d'Analytics.
A continuació es mostra un script bàsic per a la pregunta: Quin és el nombre mitjà d'interaccions d'usuari abans d'una compra?
Nombre d'interaccions d'usuari abans d'una compra |
---|
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number |
- La primera línia duu a terme l'operació matemàtica principal per calcular el nombre mitjà d'interaccions d'usuari per producte, i aquesta consulta crea una unió entre dues subconsultes anomenades ‘Alias_Name_1’ i ‘Alias_Name_2’.
- ‘Alias_Name_1’ s'utilitza per crear un camp que fa servir la funció de suma
SUM()
per sumar totes les peticions de fitxer registrades d'un producte. - ‘Alias_Name_2’ s'utilitza per calcular el nombre de peticions de fitxer que fan els usuaris per producte, mitjançant la funció
COUNT()
. - L'última línia inclou el camp comú (
hits.item.productSku
) que comparteixen els dos conjunts de dades combinats.
A continuació es mostra un exemple de la consulta següent: el 10 de setembre de 2013, quina va ser la mitjana d'interaccions d'usuari abans d'una compra?
Nombre d'interaccions d'usuari el 10 de setembre de 2013 abans d'una compra |
---|
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number |
Percentatge d'inventari venut per producte
A continuació teniu un exemple d'una consulta que depèn tant de les dades que són d'Analytics com de les que no ho són. La combinació d'ambdós conjunts de dades permet començar a conèixer el comportament de l'usuari en un nivell més segmentat. Tot i que podeu importar les dades que no són d'Analytics a BigQuery, tingueu en compte que s'inclouran a la capacitat d'emmagatzematge de dades mensual que teniu assignada.
A continuació es mostra un script bàsic per a la pregunta: Quin percentatge d'inventari s'ha venut per producte?
Percentatge d'inventari venut per producte |
---|
SELECT AnalyticsImport.product_data_20130728.productId, ((( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold )) * 100 ) AS percentage_of_stock_sold |
- La primera línia genera dos camps: un conté tots els identificadors de producte i l'altre és una operació matemàtica que mostra el percentatge d'inventari venut corresponent a cada identificador de producte.
- Com que aquesta consulta depèn de dos conjunts de dades, heu d'utilitzar la funció
JOIN() ... ON
. Aquesta ordre combina les files dels dos conjunts de dades basant-se en el camp que tenen en comú. En aquest cas, els dos conjunts de dades són[ ‘Imported_DataSet’ ]
i‘Alias_Name’
. - El conjunt de dades
[ ‘Imported_DataSet’ ]
és el que no conté dades d'Analytics. Aquest és el conjunt de dades que conté el camp de mètrica per saber la quantitat d'inventari disponible (Imported DataSet.’stock_left_field’
) i el camp de dimensió d'identificador de producte (Imported_DataSet.’productId_field’
). ‘Nom de l'àlies’
és el nom assignat a les dades que s'obtenen amb la subconsulta en gris. Aquesta subconsulta utilitza dades d'Analytics per calcular la quantitat total d'articles venuts per producte.- L'última línia utilitza la instrucció
ON
per mostrar el camp comú entre els dos conjunts de dades i on s'uneixen.
Moltes de les variables d'aquesta consulta tenen el nom del seu conjunt de dades adjuntat com a prefixos (p. ex., Imported_DataSet.’productId_field’, Alias_Name.quantity_sold
). D'aquesta manera queda clar quin camp esteu seleccionant i es fa explícit a quin conjunt de dades pertany.
A continuació es mostra un exemple de la consulta següent: quin percentatge d'inventari es va vendre per producte el 28 de juliol de 2013?
Percentatge d'inventari venut per producte el 28 de juliol de 2013 |
---|
SELECT AnalyticsImport.product_data_20130728.productId, ( ( ( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold ) ) * 100 ) AS percentage_of_stock_sold |
Rendibilitat de cada producte
A continuació es mostra l'script bàsic corresponent a la pregunta: Quina és la rendibilitat de cada producte?
Benefici per producte |
---|
SELECT Alias_Name.hits.item.productSku, ( Imported_DataSet.’product profit field’ * Alias_Name.quantity ) AS profit |
- La primera línia inclou l'operació matemàtica que permet calcular el benefici total que s'obté de cada producte.
- La subconsulta en gris utilitza dades que no són d'Analytics, que permeten calcular els beneficis que s'obtenen de la venda d'un producte.
- La subconsulta en vermell utilitza les dades d'Analytics, que s'afegiran a les que no són d'Analytics. Calcula la quantitat d'articles venuts per producte.
- L'última línia utilitza la instrucció
ON
per aclarir quin camp comparteixen els dos conjunts de dades. En aquest cas, és el número d'identificació del producte.
A continuació es mostra un exemple de la consulta següent: quina va ser la rendibilitat de cada producte el 28 de juliol de 2013?
Benefici per producte el 28 de juliol de 2013 |
---|
SELECT two.hits.item.productSku, ((AnalyticsImport.product_data_20130728.productprice-AnalyticsImport.product_data_20130728.productcost)*two.quantity) AS profit |
El benefici es calcula a partir de la diferència entre el preu de venda i el cost de fabricació del producte. Aquesta informació s'emmagatzema al conjunt de dades que no pertany a Google Analytics.
Rendibilitat real de cada producte (tenint en compte els reembossaments)
A continuació es mostra l'script bàsic corresponent a la pregunta: Quina és la rendibilitat real de cada producte?
Benefici real per producte |
---|
SELECT Alias_Name.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit |
- Aquesta consulta és molt semblant a: quina és la rendibilitat de cada producte? Les úniques diferències es troben en el conjunt de dades que no són d'Analytics de la subconsulta en gris i en l'operació matemàtica de la primera línia que calcula el benefici real.
- Al conjunt de dades que no són d'Analytics, també calculeu l'import total de diners que heu invertit en reembossaments (a la instrucció
SELECT
de la subconsulta en vermell). - A continuació, dueu a terme una operació matemàtica a la línia 1 per calcular el benefici real, restant del benefici brut l'import invertit en reembossaments.
Per obtenir més informació sobre la consulta, llegiu la secció sobre la rendibilitat de cada producte.
A continuació es mostra un exemple de la consulta següent: quina va ser la rendibilitat real de cada producte el 28 de juliol de 2013?
Benefici real per producte el 28 de juliol de 2013 |
---|
SELECT two.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit |
El benefici real té en compte la rendibilitat d'un producte un cop considerat l'import dels reembossaments. Per calcular l'import de reembossament total d'un producte:
Total d'ingressos per reembossaments d'un producte = (preu del producte + preu d'enviament del reembossament del producte) * quantitat de productes reembossats