Οδηγός του BigQuery

Αυτή η λειτουργία διατίθεται μόνο στο Analytics 360, το οποίο αποτελεί τμήμα του Google Marketing Platform.
Μάθετε περισσότερα σχετικά με το Google Marketing Platform.

Αυτό το άρθρο περιέχει παραδείγματα δημιουργίας ερωτημάτων για τα δεδομένα του Analytics που εξάγετε στο BigQuery. Για να εξασκηθείτε με ορισμένα από τα ερωτήματα που παρουσιάζονται σε αυτό το άρθρο, παρέχουμε ένα δείγμα συνόλου δεδομένων.

Σε αυτό το άρθρο:

Βελτιστοποίηση ερωτήματος

Κάθε ερώτημα που εκτελείτε επιβαρύνει το μηνιαίο όριο επεξεργασίας αιτημάτων που έχετε στη διάθεσή σας. Αν επιλέξετε εξωτερικά πεδία, αυξάνετε το ποσό δεδομένων που χρειάζεται επεξεργασία και, ως αποτέλεσμα, χρησιμοποιείτε μεγαλύτερο μέρος του μηνιαίου σας ορίου από όσο είναι απαραίτητο. Τα βελτιστοποιημένα ερωτήματα χρησιμοποιούν με αποτελεσματικό τρόπο το μηνιαίο σας όριο επεξεργασίας δεδομένων.

Μάθετε περισσότερα σχετικά με τη χρέωση.

Επιλογή μόνο των απαραίτητων στοιχείων

Κατά τη διατύπωση ενός ερωτήματος, επιλέξτε τα σχετικά πεδία εντός της δήλωσης SELECT. Αποφεύγοντας την κλήση εξωτερικών πεδίων, μειώνετε την ποσότητα των δεδομένων και το χρόνο που απαιτείται για την επεξεργασία του ερωτήματος.

Παράδειγμα: αποφυγή χρήσης του τελεστή χαρακτήρα μπαλαντέρ

Κακή μορφή: χρήση τελεστή με τη μορφή χαρακτήρα μπαλαντέρ
SELECT *
FROM [table name];

 

Καλύτερη μορφή: χρήση ονομάτων πεδίων για την αποφυγή μη αναγκαίας επεξεργασίας
SELECT field1, field2
FROM [table name];

Έγκριση αποθήκευσης στην κρυφή μνήμη

Όπου είναι δυνατό, αποφύγετε τη χρήση συναρτήσεων ως πεδίων. Οι συναρτήσεις (όπως οι NOW() ή TODAY()) επιστρέφουν μεταβλητά αποτελέσματα, κάτι που αποτρέπει την αποθήκευση των ερωτημάτων στην κρυφή μνήμη και, συνεπώς, τη γρηγορότερη ανάκτησή τους. Αντί για συναρτήσεις, χρησιμοποιήστε συγκεκριμένες ώρες και ημερομηνίες.

Προς το παρόν, δεν παρέχονται αποτελέσματα κρυφής μνήμης για ερωτήματα που έχουν υποβληθεί για πολλούς πίνακες μέσω ενός χαρακτήρα μπαλαντέρ, ακόμα και αν έχει οριστεί η επιλογή Χρήση αποτελεσμάτων κρυφής μνήμης. Αν εκτελέσετε πολλές φορές το ίδιο ερώτημα με χαρακτήρα μπαλαντέρ, θα χρεωθείτε για κάθε εκτέλεση. Μάθετε περισσότερα

Χρήση ενδιάμεσων πινάκων για υποερωτήματα που χρησιμοποιούνται συχνά

Αν διαπιστώσετε ότι χρησιμοποιείτε συχνά κάποιο συγκεκριμένο ερώτημα ως υποερώτημα, μπορείτε να αποθηκεύσετε το ερώτημα αυτό ως ενδιάμεσο πίνακα, κάνοντας κλικ στην επιλογή Save as Table επάνω από τα αποτελέσματα του ερωτήματος. Στη συνέχεια, θα μπορείτε να παραπέμπετε σε αυτόν τον πίνακα στην ενότητα FROM του ερωτήματός σας. Με αυτόν τον τρόπο θα μειωθεί τόσο η ποσότητα των δεδομένων που πρέπει να υποστούν επεξεργασία όσο και ο χρόνος που απαιτείται για την επεξεργασία.

Χρήση ενδιάμεσου πίνακα
SELECT field1, field2
FROM [Dataset name.table name];

Εντοπισμός και διόρθωση σφαλμάτων ερωτήματος

Το BigQuery εντοπίζει τα σφάλματα στον κώδικά σας καθώς τον συντάσσετε. Στο παράθυρο σύνταξης, ο εντοπισμός σφαλμάτων υποδεικνύεται ακριβώς κάτω από το ερώτημα. Ο εντοπισμός σφαλμάτων διατίθεται, επίσης, μέσω του API, με τη σημαία dryRun.

Τα έγκυρα ερωτήματα φέρουν έναν πράσινο δείκτη στον οποίο μπορείτε να κάνετε κλικ, για να δείτε την ποσότητα δεδομένων που επεξεργάζεται το ερώτημα. Αυτή η λειτουργία σάς δίνει την ευκαιρία να βελτιστοποιήσετε τα δεδομένα σας προτού εκτελέσετε το ερώτημα, ώστε να αποφύγετε τυχόν μη αναγκαία επεξεργασία δεδομένων.

Query Debugging - Success

 

Τα μη έγκυρα ερωτήματα διαθέτουν έναν κόκκινο δείκτη στον οποίο μπορείτε να κάνετε κλικ, για να δείτε πληροφορίες σχετικά με το σφάλμα και να εντοπίσετε τη γραμμή και τη στήλη όπου βρίσκεται το σφάλμα. Στο παρακάτω παράδειγμα, όπου η δήλωση GROUP BY είναι κενή, η θέση αυτού του σφάλματος υποδεικνύεται με ακρίβεια.

Query Debugging - Error

 

Συμβουλές και βέλτιστες πρακτικές

Χρήση του δείγματος συνόλου δεδομένων

Τα ακόλουθα παραδείγματα χρησιμοποιούν το δείγμα συνόλου δεδομένων του Google Analytics.

Για να χρησιμοποιήσετε τα ερωτήματα στα δικά σας δεδομένα, απλώς αντικαταστήστε το όνομα του έργου και του συνόλου δεδομένων στα παραδείγματα με το όνομα του δικού σας έργου και συνόλου δεδομένων.

Χρήση βασικής SQL έναντι SQL παλαιού τύπου

Το BigQuery υποστηρίζει δύο διαλέκτους SQL:

Στη σελίδα Migrating to Standard SQL (Μετάβαση σε βασική SQL) επεξηγούνται οι διαφορές μεταξύ των δύο διαλέκτων.

Η βασική SQL είναι πλέον η προτιμώμενη διάλεκτος SQL για την υποβολή ερωτημάτων δεδομένων που έχουν αποθηκευτεί στο BigQuery.

Ανατρέξτε στην ενότητα Enabling Standard SQL (Ενεργοποίηση βασικής SQL) για πληροφορίες σχετικά με την ενεργοποίηση της βασικής SQL στη διεπαφή χρήστη του BigQuery, στο CLI, στο API ή σε οποιαδήποτε διεπαφή χρησιμοποιείτε.

Ο ευκολότερος τρόπος να ξεκινήσετε είναι να συμπεριλάβετε το σχόλιο standardSQL στο επάνω μέρος των ερωτημάτων βασικής SQL, όπως φαίνεται στα ακόλουθα παραδείγματα.

Με την SQL παλαιού τύπου, τα δεδομένα του Google Analytics 360 μεταβιβάζονται καθημερινά σε νέο πίνακα. Για να υποβάλετε ερώτημα σε πολλούς πίνακες ταυτόχρονα, μπορείτε να διαχωρίσετε τα ονόματα των πινάκων με κόμματα, να χρησιμοποιήσετε τη συνάρτηση TABLE_DATE_RANGE, η οποία είναι συνάρτηση χαρακτήρα μπαλαντέρ πίνακα, ή να χρησιμοποιήσετε πολλές συναρτήσεις TABLE_DATE_RANGE διαχωρισμένες με κόμματα, όπως στα ακόλουθα παραδείγματα.

Ερώτημα σε πολλαπλούς πίνακες

Στα ακόλουθα παραδείγματα μπορείτε να δείτε ερωτήματα βασικής SQL και SQL παλαιού τύπου για τα ίδια δεδομένα.

3 ημέρες

Βασική SQL
3 ημέρες με χρήση της συνάρτησης 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 παλαιού τύπου
Τρεις ημέρες με χρήση ονομάτων πινάκων τα οποία διαχωρίζονται με κόμματα
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

 

Τελευταίες 1.095 ημέρες

Βασική SQL
Τελευταίες 1.095 ημέρες με χρήση της συνάρτησης _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 παλαιού τύπου
Τελευταίες 1.095 ημέρες με χρήση της συνάρτησης 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

 

Τελευταίοι 36 μήνες

Βασική SQL
Τελευταίοι 36 μήνες με χρήση της συνάρτησης _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 παλαιού τύπου
Τελευταίοι 36 μήνες με χρήση της συνάρτησης 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

 

Τελευταία 3 έτη

Βασική SQL
Τελευταία 3 έτη με χρήση της συνάρτησης _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 παλαιού τύπου
Τελευταία τρία έτη με χρήση της συνάρτησης 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

 

Συγκεκριμένο εύρος ημερομηνιών

Βασική SQL
Συγκεκριμένο εύρος ημερομηνιών με χρήση της συνάρτησης _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 παλαιού τύπου
Συγκεκριμένο εύρος ημερομηνιών με χρήση της συνάρτησης 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

Τελευταία τρία έτη συν τα σημερινά δεδομένα (εντός της ημέρας)

Βασική SQL
Τελευταία 3 έτη συν τα σημερινά δεδομένα (εντός της ημέρας) με χρήση των συναρτήσεων UNION ALL και _TABLE_SUFFIX
Σημείωση: Αυτό το παράδειγμα ερωτήματος δεν θα λειτουργήσει με το δημόσιο σύνολο δεδομένων του Google Analytics, επειδή προς το παρόν δεν υπάρχει ενδοημερήσιος πίνακας.
#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 παλαιού τύπου

Τελευταία 3 έτη συν τα σημερινά δεδομένα (εντός της ημέρας) με πολλές συναρτήσεις TABLE_DATE_RANGE
Σημείωση: Αυτό το παράδειγμα ερωτήματος δεν θα λειτουργήσει με το δημόσιο σύνολο δεδομένων του Google Analytics, επειδή προς το παρόν δεν υπάρχει ενδοημερήσιος πίνακας.
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

 

 

Παραδείγματα βασικών ερωτημάτων

Σε αυτήν την ενότητα εξηγείται ο τρόπος σύνταξης βασικών ερωτημάτων, χρησιμοποιώντας μετρήσεις και ιδιότητες από παραδείγματα δεδομένων του Analytics.

Συνολική [μέτρηση] ανά [ιδιότητα];

Ακολουθούν παραδείγματα σεναρίων για την ερώτηση: Ποιος είναι ο συνολικός αριθμός των συναλλαγών που δημιουργήθηκαν ανά πρόγραμμα περιήγησης συσκευής τον Ιούλιο του 2017;

Βασική SQL

Συνολικές συναλλαγές ανά πρόγραμμα περιήγησης συσκευής τον Ιούλιο του 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 παλαιού τύπου

Συνολικές συναλλαγές ανά πρόγραμμα περιήγησης συσκευής τον Ιούλιο του 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

 

 

Μέσο ποσοστό εγκατάλειψης ανά [ιδιότητα];

Το πραγματικό ποσοστό εγκατάλειψης ορίζεται ως το ποσοστό των επισκέψεων με μία μόνο προβολή σελίδας. Ακολουθούν παραδείγματα σεναρίων για την ερώτηση: Ποιο ήταν το πραγματικό ποσοστό εγκατάλειψης ανά πηγή επισκεψιμότητας;

Βασική SQL

Ποσοστό εγκατάλειψης ανά πηγή επισκεψιμότητας τον Ιούλιο του 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 παλαιού τύπου

Ποσοστό εγκατάλειψης ανά πηγή επισκεψιμότητας τον Ιούλιο του 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

 

 

Συνολικός αριθμός προβολών σελίδων προϊόντων ανά τύπο αγοραστή (αγοραστές έναντι χρηστών που δεν αγοράζουν)

Ακολουθούν παραδείγματα σεναρίων για την ερώτηση: Ποιος ήταν ο μέσος αριθμός προβολών σελίδων προϊόντων για τους χρήστες που πραγματοποίησαν αγορά τον Ιούλιο του 2017;

Βασική SQL

Μέσος αριθμός προβολών σελίδων προϊόντων για τους χρήστες που πραγματοποίησαν αγορά τον Ιούλιο του 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 παλαιού τύπου

Μέσος αριθμός προβολών σελίδων προϊόντων για τους χρήστες που πραγματοποίησαν αγορά τον Ιούλιο του 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 )

 

 

Ακολουθούν παραδείγματα σεναρίων για την ερώτηση: Ποιος ήταν ο μέσος αριθμός προβολών σελίδων προϊόντων για τους χρήστες που δεν πραγματοποίησαν αγορά τον Ιούλιο του 2017;

Βασική SQL

Μέσος αριθμός προβολών σελίδων προϊόντων για τους χρήστες που δεν πραγματοποίησαν αγορά τον Ιούλιο του 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 παλαιού τύπου

Μέσος αριθμός προβολών σελίδων προϊόντων για τους χρήστες που δεν πραγματοποίησαν αγορά τον Ιούλιο του 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 )

 

 

Μέσος αριθμός συναλλαγών ανά αγοραστή

Ακολουθούν παραδείγματα σεναρίων για την ερώτηση: Ποιο ήταν ο μέσος συνολικός αριθμός συναλλαγών ανά χρήστη που πραγματοποίησε αγορά τον Ιούλιο του 2017;

Βασική SQL

Μέσος αριθμός συναλλαγών ανά χρήστη που πραγματοποίησε αγορά τον Ιούλιο του 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 παλαιού τύπου

Μέσος αριθμός συναλλαγών ανά χρήστη που πραγματοποίησε αγορά τον Ιούλιο του 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 )

 

 

Μέσο χρηματικό ποσό που δαπανήθηκε ανά περίοδο σύνδεσης

Ακολουθούν παραδείγματα σεναρίων για την ερώτηση: Ποιο είναι το μέσο χρηματικό ποσό που δαπανήθηκε ανά περίοδο σύνδεσης τον Ιούλιο του 2017;

Βασική SQL

Μέσο χρηματικό ποσό που δαπανήθηκε ανά περίοδο σύνδεσης τον Ιούλιο του 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 παλαιού τύπου

Μέσο χρηματικό ποσό που δαπανήθηκε ανά περίοδο σύνδεσης τον Ιούλιο του 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 )

 

 

Ακολουθία επισκέψεων

Ακολουθούν παραδείγματα σεναρίων για την ερώτηση: Ποια είναι η ακολουθία των σελίδων που προβλήθηκαν;

Βασική SQL

Ακολουθία των σελίδων που προβλήθηκαν από χρήστες τον Ιούλιο του 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 παλαιού τύπου

Ακολουθία των σελίδων που προβλήθηκαν από χρήστες τον Ιούλιο του 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

Σε αυτό το ερώτημα, περιορίζετε τον τύπο επισκέψεων σε PAGES, προκειμένου να αποφευχθεί η προβολή συμβάντων ή αλληλεπιδράσεων συναλλαγών. Κάθε γραμμή της εξόδου αντιπροσωπεύει μια προβολή σελίδας και εμφανίζεται με βάση την προεπιλεγμένη σειρά πεδίων στη δήλωση SELECT.

 

 

Πολλαπλές προσαρμοσμένες ιδιότητες σε επίπεδο επίσκεψης ή περιόδου σύνδεσης

προσαρμοσμένη ιδιότητα στο επίπεδο επίσκεψης
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

 

προσαρμοσμένη ιδιότητα στο επίπεδο περιόδου σύνδεσης
SELECT fullVisitorId, visitId,
MAX(IF(customDimensions.index=2,
customDimensions.value,
NULL)) WITHIN RECORD AS customDimension2,
FROM [tableID.ga_sessions_20150305]
LIMIT 100

Σε κάθε ερώτημα:

Η δήλωση SELECT υποβάλλει ερώτημα για τα σχετικά πεδία ιδιότητας και μέτρησης.

Η συνάρτηση MAX:

  • Εμφανίζει την προσαρμοσμένη ιδιότητα ως νέα στήλη. Μπορείτε να επαναλάβετε την εκτέλεση της συνάρτησης, προκειμένου να εμφανίζονται πολλαπλές προσαρμοσμένες ιδιότητες ως νέες στήλες.
  • Οι δηλώσεις WITHIN hits και WITHIN RECORD αξιολογούν τη συνθήκη μέσα σε επαναλαμβανόμενα πεδία του BigQuery.
  • Η συνθήκη μέσα στη συνάρτηση MAX αξιολογείται για κάθε προσαρμοσμένη ιδιότητα, αλλά για κάθε ιδιότητα για την οποία δεν ισχύει index=1 (hits) ή index=2 (sessions), εμφανίζει την τιμή NULL.
  • Εμφανίζει τη μέγιστη τιμή, που είναι η τιμή της προσαρμοσμένης ιδιότητας 1 για επισκέψεις ή της προσαρμοσμένης ιδιότητας 2 για περιόδους σύνδεσης, καθώς κάθε άλλη τιμή ισούται με NULL.

Παραδείγματα σύνθετων ερωτημάτων

Έχοντας πλέον εξοικειωθεί με τα απλά ερωτήματα, μπορείτε να δημιουργήσετε ερωτήματα χρησιμοποιώντας τις σύνθετες συναρτήσεις και δυνατότητες που διατίθενται στο BigQuery.

Προϊόντα που αγοράστηκαν από πελάτες που έχουν αγοράσει το προϊόν A (Κλασικό ηλεκτρονικό εμπόριο)

Παρακάτω ακολουθεί ένα σχηματικό σενάριο για το ερώτημα: Ποια είναι τα υπόλοιπα προϊόντα που αγοράστηκαν από πελάτες που αγόρασαν το προϊόν A;

προϊόντα που αγοράστηκαν από έναν πελάτη που αγοράζει το προϊόν A (κλασικό ηλεκτρονικό εμπόριο)
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity
FROM [‘Dataset Name’ ]
WHERE fullVisitorId IN (
  SELECT fullVisitorId
  FROM [‘Dataset Name’ ]
  WHERE hits.item.productName CONTAINS 'Product Item Name A'
   AND totals.transactions>=1
  GROUP BY fullVisitorId
)
 AND hits.item.productName IS NOT NULL
 AND hits.item.productName != 'Product Item Name A'
GROUP BY other_purchased_products
ORDER BY quantity DESC;
  1. Στην πρώτη γραμμή επιλέγετε όλα τα υπόλοιπα είδη που αγοράστηκαν από έναν χρήστη. Η συγκεντρωτική συνάρτηση COUNT() χρησιμοποιείται για τον υπολογισμό της ποσότητας καθενός από τα υπόλοιπα είδη που αγοράστηκαν. Το αποτέλεσμα προβάλλεται κατόπιν σε ένα πεδίο με την ένδειξη quantity, όπου το συσχετιζόμενο είδος στο πεδίο προϊόντος φέρει την επισήμανση other_purchased_products.
  2. Στο γκρίζο υποερώτημα επιλέγονται μόνο οι μοναδικοί χρήστες (fullVisitorId) που έχουν πραγματοποιήσει συναλλαγές (totals.transactions>=1) και κατά τη διάρκεια μιας συναλλαγής αγόρασαν το προϊόν A (WHERE hits.item.productName CONTAINS 'Product Item Name A').

Οι κανόνες (δηλώσεις WHERE και AND) στο ερώτημα ανώτερου επιπέδου (με πράσινο χρώμα) χρησιμοποιούνται για την παράβλεψη των τιμών στο πεδίο hits.item.productName που ισούνται με μηδέν και περιέχουν το προϊόν A.

Δείτε ένα παράδειγμα του ερωτήματος Αν ένας χρήστης έχει αγοράσει Μεταλλικά στυλό - Σετ των 4, ποια άλλα προϊόντα αγόρασε;

προϊόντα που αγοράστηκαν από έναν πελάτη που αγοράζει Μεταλλικά στυλό (σετ των 4) στις 24 Ιουνίου 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 'Brighton Metallic Pens - Set of 4'
   AND totals.transactions>=1
  GROUP BY fullVisitorId
)
 AND hits.item.productName IS NOT NULL
 AND hits.item.productName !='Brighton Metallic Pens - Set of 4'
GROUP BY other_purchased_products
ORDER BY quantity DESC;

Στο Dremel/BigQuery, με τη χρήση του WHERE expr IN ενεργοποιείται μια εντολή JOIN και ισχύουν περιορισμοί μεγέθους. Συγκεκριμένα, το μέγεθος της δεξιάς πλευράς της εντολής JOIN (σε αυτήν την περίπτωση, ο αριθμός των επισκεπτών) θα πρέπει να είναι μικρότερο από 8 MB. Στο Dremel, αυτό ονομάζεται JOIN μετάδοσης. Όταν το μέγεθος υπερβαίνει τα 8 MB, πρέπει να ενεργοποιηθεί μια εντολή JOIN ανακατάταξης, κάτι που μπορεί να γίνει με χρήση της σύνταξης JOIN EACH. Δυστυχώς, αυτό δεν μπορεί να γίνει με χρήση του IN, αλλά το ίδιο ερώτημα μπορεί να συνταχθεί ξανά με μια εντολή JOIN.

Προϊόντα που αγοράστηκαν από πελάτες που έχουν αγοράσει το προϊόν A (Βελτιωμένο ηλεκτρονικό εμπόριο)

Αυτό το ερώτημα είναι παρόμοιο με το προηγούμενο σχηματικό ερώτημα, αλλά λειτουργεί για το Βελτιωμένο ηλεκτρονικό εμπόριο. Επίσης, χρησιμοποιεί τη συνάρτηση TABLE_DATE_RANGE, για να υποβάλει ερώτημα δεδομένων για πολλές ημέρες.

προϊόντα που αγοράστηκαν από έναν πελάτη που αγοράζει το προϊόν A (Βελτιωμένο ηλεκτρονικό εμπόριο)
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;

Μέσος αριθμός αλληλεπιδράσεων χρήστη πριν την αγορά

Αυτό είναι ένα παράδειγμα ερωτήματος για μια εντολή JOIN() [...] ON, το οποίο εξαρτάται μόνο από δεδομένα του Analytics.

Παρακάτω ακολουθεί ένα σχηματικό σενάριο για την ερώτηση: Ποιος είναι ο μέσος αριθμός αλληλεπιδράσεων χρήστη πριν από μια αγορά;

αριθμός αλληλεπιδράσεων χρήστη πριν από μια αγορά
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 [‘GA Dataset Name’ ]
 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 [‘GA Dataset Name’ ]
 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. Στην πρώτη γραμμή εκτελείται η μαθηματική πράξη για την εύρεση του μέσου αριθμού αλληλεπιδράσεων χρήστη ανά προϊόν. Αυτό το ερώτημα δημιουργεί μια ένωση μεταξύ δύο υποερωτημάτων που ονομάζονται Alias_Name_1 και Alias_Name_2.
  2. Το υποερώτημα ‘Alias_Name_1’ υπολογίζει ένα πεδίο όπου χρησιμοποιείται η συγκεντρωτική συνάρτηση SUM() για να αθροιστεί το πλήθος όλων των επισκέψεων που έχουν καταγραφεί για ένα προϊόν.
  3. Το υποερώτημα ‘Alias_Name_2’ χρησιμοποιείται για την εύρεση του αριθμού των επισκέψεων που πραγματοποιήθηκαν από τους χρήστες ανά προϊόν. Για το σκοπό αυτό χρησιμοποιείται η συνάρτηση COUNT().
  4. Στην τελευταία γραμμή εμφανίζεται η κοινή χρήση του πεδίου (hits.item.productSku) μεταξύ των δύο συνόλων δεδομένων της ένωσης.

Δείτε ένα παράδειγμα του ερωτήματος Στις 10 Σεπτεμβρίου 2013, ποιος είναι ο μέσος αριθμός των αλληλεπιδράσεων χρηστών πριν από μια αγορά;

αριθμός των αλληλεπιδράσεων χρήστη στις 10 Σεπτεμβρίου 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;

Ποσοστό αποθέματος που πωλήθηκε ανά προϊόν

Αυτό είναι ένα παράδειγμα ερωτήματος που δεν εξαρτάται μόνο από δεδομένα του Analytics, αλλά και από δεδομένα εκτός του Analytics. Συνδυάζοντας και τα δύο σύνολα δεδομένων, μπορείτε να κατανοήσετε τη συμπεριφορά των χρηστών σε πιο τμηματοποιημένο επίπεδο. Μπορείτε να εισαγάγετε δεδομένα εκτός του 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
FROM [ ‘Imported_DataSet’ ]
JOIN (
  SELECT hits.item.productSku, SUM( hits.item.itemQuantity ) AS quantity_sold
  FROM [‘GA Dataset’ ]
  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. Η έξοδος της πρώτης γραμμής αποτελείται από δύο πεδία: ένα πεδίο που περιέχει όλα τα αναγνωριστικά προϊόντων και ένα πεδίο που αποτελεί μαθηματική πράξη και εμφανίζει το ποσοστό του αποθέματος που πωλήθηκε για το αντίστοιχο αναγνωριστικό προϊόντος.
  2. Εφόσον αυτό το ερώτημα εξαρτάται από δύο σύνολα δεδομένων, πρέπει να χρησιμοποιήσετε τη συνάρτηση JOIN() ... ON. Αυτή η εντολή ενώνει τις σειρές των δύο συνόλων δεδομένων με βάση το κοινό τους πεδίο. Σε αυτήν την περίπτωση, τα δύο σύνολα δεδομένων είναι τα [ ‘Imported_DataSet’ ] και ‘Alias_Name’.
  3. Το [ ‘Imported_DataSet’ ] περιέχει τα δεδομένα που προέρχονται εκτός του Analytics. Αυτό είναι το σύνολο δεδομένων που περιέχει το πεδίο μέτρησης όπου εμφανίζεται η ποσότητα του αποθέματος που απομένει (Imported DataSet.’stock_left_field’) και το πεδίο ιδιότητας αναγνωριστικού προϊόντος (Imported_DataSet.’productId_field’).
  4. Το ‘Alias_Name’ είναι το όνομα που εκχωρείται στα δεδομένα που εμφανίζει το γκρίζο υποερώτημα. Σε αυτό το ερώτημα χρησιμοποιούνται δεδομένα του Analytics για την εύρεση της συνολικής ποσότητας των στοιχείων που πωλήθηκαν ανά προϊόν.
  5. Στην τελευταία γραμμή χρησιμοποιείται η δήλωση 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
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;

Κερδοφορία κάθε προϊόντος

Παρακάτω ακολουθεί ένα σχηματικό σενάριο για το ερώτημα: Ποια είναι η κερδοφορία κάθε προϊόντος;

κέρδος ανά προϊόν
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 [ ‘GA Dataset Name’ ]
    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. Η πρώτη γραμμή περιέχει τη μαθηματική πράξη για τον υπολογισμό του συνολικού κέρδους που αποκτάται για κάθε προϊόν.
  2. Το γκρίζο υποερώτημα χρησιμοποιεί δεδομένα εκτός Analytics, από όπου προέρχονται τα δεδομένα σχετικά με το κέρδος που αποκτάται όταν πωλείται ένα προϊόν.
  3. Το κόκκινο υποερώτημα είναι το υποερώτημα δεδομένων Analytics, που θα ενωθούν με τα δεδομένα εκτός Analytics. Υπολογίζει την ποσότητα στοιχείων που πωλήθηκε ανά προϊόν.
  4. Στην τελευταία γραμμή χρησιμοποιείται η δήλωση ON, για να αποσαφηνιστεί το πεδίο που χρησιμοποιούν από κοινού τα δύο σύνολα δεδομένων. Σε αυτήν την περίπτωση, το πεδίο αυτό είναι ο αριθμός αναγνωριστικού προϊόντος.

Δείτε ένα παράδειγμα του ερωτήματος Ποια ήταν η κερδοφορία κάθε προϊόντος στις 28 Ιουλίου 2013;

κέρδος ανά προϊόν στις 28 Ιουλίου 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
);

Το κέρδος υπολογίζεται, βρίσκοντας τη διαφορά μεταξύ της τιμής πώλησης του προϊόντος και του κόστους κατασκευής του. Αυτή η πληροφορία αποθηκεύεται στο σύνολο δεδομένων που προέρχεται εκτός του GA.

Πραγματική κερδοφορία κάθε προϊόντος (λαμβάνοντας υπόψη τις επιστροφές χρημάτων λογαριασμού)

Παρακάτω ακολουθεί ένα σχηματικό σενάριο για το ερώτημα: Ποια είναι η πραγματική κερδοφορία κάθε προϊόντος;

πραγματικό κέρδος ανά προϊόν
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 [ ‘Imported DataSet Name’ ] AS 'Imported_DataSet'
    JOIN (
      
SELECT hits.item.productSku, SUM( hits.item.itemQuantity ) AS quantity
      FROM [‘GA Dataset Name’ ]
      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. Αυτό το ερώτημα είναι πολύ παρόμοιο με το Ποια είναι η κερδοφορία κάθε προϊόντος; Οι μόνες διαφορές βρίσκονται στη χρήση του συνόλου δεδομένων εκτός Analytics στο γκρίζο υποερώτημα, καθώς και στη μαθηματική πράξη για τον υπολογισμό του πραγματικού κέρδους στην πρώτη γραμμή.
  2. Στο σύνολο δεδομένων εκτός Analytics, υπολογίζεται επίσης το συνολικό χρηματικό ποσό που δαπανήθηκε σε επιστροφές χρημάτων (στη δήλωση SELECT του κόκκινου υποερωτήματος).
  3. Στη συνέχεια, εκτελείται μια μαθηματική πράξη στη γραμμή 1 για την εύρεση του πραγματικού κέρδους, αφαιρώντας τα έσοδα που δαπανήθηκαν σε επιστροφές χρημάτων από τα ακαθάριστα κέρδη.

Για περισσότερες πληροφορίες σχετικά με το ερώτημα, δείτε την ενότητα σχετικά με την κερδοφορία κάθε προϊόντος.

Δείτε ένα παράδειγμα του ερωτήματος Ποια ήταν η πραγματική κερδοφορία κάθε προϊόντος στις 28 Ιουλίου 2013;

πραγματικό κέρδος ανά προϊόν στις 28 Ιουλίου 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 )
);

Για τον υπολογισμό του πραγματικού κέρδους λαμβάνεται υπόψη η κερδοφορία ενός προϊόντος, λαμβάνοντας υπόψη τα προϊόντα για τα οποία πραγματοποιήθηκε επιστροφή χρημάτων. Για να υπολογίσετε τα συνολικά έσοδα που χρησιμοποιήθηκαν για επιστροφή χρημάτων για ένα προϊόν:

συνολικά έσοδα που χρησιμοποιήθηκαν για επιστροφή χρημάτων για ένα προϊόν = (τιμή του προϊόντος + τιμή παράδοσης της επιστροφής χρημάτων για το προϊόν) * ποσότητα των προϊόντων για τα οποία επιστράφηκαν τα χρήματα

Σας βοήθησε αυτό;

Με ποιον τρόπο μπορούμε να το βελτιώσουμε;
true
Επιλέξτε τη δική σας διαδρομή εκμάθησης

Ανατρέξτε στον ιστότοπο google.com/analytics/learn, όπου θα βρείτε μια νέα πηγή πόρων που θα σας βοηθήσει να αξιοποιήσετε στο έπακρο το Google Analytics 4. Ο νέος ιστότοπος περιλαμβάνει βίντεο, άρθρα και ροές καθοδήγησης, ενώ παρέχει και συνδέσμους προς το Discord, το ιστολόγιο, το κανάλι YouTube και τον χώρο φύλαξης GitHub του Google Analytics.

Ξεκινήστε να μαθαίνετε σήμερα!

Αναζήτηση
Διαγραφή αναζητήσεων
Κλείσιμο αναζήτησης
Κύριο μενού
2188444402239523849
true
Αναζήτηση στο Κέντρο Βοήθειας
true
true
true
true
true
69256
false
false