دليل BigQuery

لا تتوفّر هذه الميزة سوى في برنامج "إحصاءات Google 360" الذي يشكّل جزءًا من "منصة Google للتسويق".
اطّلع على مزيد من المعلومات عن "منصة Google للتسويق".

تتضمّن هذه المقالة أمثلة حول كيفية إنشاء طلبات بحث لبيانات "إحصاءات Google" التي يتم تصديرها من جانبك إلى BigQuery. وأتحنا نموذجًا لمجموعة بيانات حتى يمكنك التدريب باستخدام بعض طلبات البحث في هذه المقالة.

يتمّ شرح ما يلي في هذه المقالة:

تحسين طلبات البحث

يستهلك كل طلب بحث تجريه جزءًا من مخصص معالجة البيانات المتاح لك شهريًا. في حالة تحديد حقول غير ذات جدوى، يزيد كم البيانات المطلوب معالجته، ونتيجةً لذلك، يتم استخدام جزء أكبر من اللازم من المخصص الشهري؛ أمّا طلبات البحث المحسّنة، فتتميّز بكفاءة استغلال المخصَّص الشهري لمعالجة البيانات.

اطّلِع على مزيد من المعلومات عن الأسعار.

تحديد ما تحتاج إليه فقط

عند صياغة طلب بحث، حدد الحقول الملائمة ضمن عبارة SELECT. ومن خلال عدم استدعاء حقول غير ذات جدوى، يتم الحد من كم البيانات، والوقت اللازم لمعالجة طلب البحث.

مثال: تجنب استخدام عامل تشغيل أحرف البدل

شكل سيء: استخدام عامل تشغيل أحرف البدل
SELECT *
FROM [table name];

 

شكل أفضل: استخدام أسماء حقول لتجنب المعالجة غير الضرورية
SELECT field1, field2
FROM [table name];

السماح بالتخزين المؤقت

تجنب، إن أمكن، استخدام الدالات كحقول. تعيد الدالات (مثل NOW() أو TODAY()) نتائج متغيّرة، مما يمنع التخزين المؤقت لطلبات البحث، وبالتالي يمنع إعادتها بسرعة أكبر. وبدلاً من ذلك، استخدِم أوقاتًا وتواريخ معيّنة.

حاليًا، لا تتم إتاحة النتائج المخزّنة مؤقتًا لطلبات البحث في جداول متعددة باستخدام حرف بدل حتى إذا تم وضع علامة في المربّع بجانب الخيار "استخدام النتائج المخزّنة مؤقتًا". في حال تشغيل استعلام حرف البدل عدة مرات، يتم تحرير فاتورة لكل طلب بحث. مزيد من المعلومات

استخدام الجداول الوسيطة لطلبات البحث الفرعية شائعة الاستخدام

إذا وجدت أنك تستخدم طلب بحث أو طلب بحث فرعي معيّنًا بشكل متكرر، يمكنك حفظ طلب البحث هذا كجدول وسيط بالنقر على حفظ كجدول أعلى نتائج طلب البحث. يمكنك بعد ذلك الإشارة إلى هذا الجدول في قسم FROM من طلب البحث، ما سيحدّ من كم البيانات المطلوب معالجته والوقت اللازم للمعالجة.

استخدام جدول وسيط
SELECT field1, field2
FROM [Dataset name.table name];

تصحيح أخطاء طلبات البحث

يصحح BigQuery أخطاء الشفرة أثناء إنشائها. في نافذة الإنشاء، تتم الإشارة إلى تصحيح الأخطاء أسفل طلب البحث مباشرةً. يتوفر تصحيح الأخطاء أيضًا من خلال واجهة برمجة التطبيقات باستخدام علامة dryRun.

تحتوي طلبات البحث الصالحة على مؤشر أخضر يمكنك النقر عليه لمعرفة كم البيانات التي تمت معالجتها من جانب طلب البحث. تمنحك هذه الميزة الفرصة لتحسين بياناتك قبل تشغيل طلب البحث بحيث يمكنك تجنب أي معالجة غير ضرورية للبيانات.

Query Debugging - Success

 

تحتوي طلبات البحث غير الصالحة على مؤشر أحمر يمكنك النقر عليه لمعرفة معلومات حول الخطأ، والعثور على السطر والعمود اللذين يحدث فيهما الخطأ. في المثال التالي، العبارة GROUP BY فارغة، وقد تم تحديد الخطأ بدقة.

Query Debugging - Error

 

النصائح وأفضل الممارسات

استخدام نموذج لمجموعة بيانات

تستخدِم الأمثلة التالية نموذجًا لمجموعة بيانات "إحصاءات Google".

لاستخدام طلبات البحث عن بياناتك الخاصة، اكتب اسم مشروعك الخاص واسم مجموعة بياناتك الخاصة بدلاً من اسم المشروع واسم مجموعة البيانات في الأمثلة.

المقارنة بين استخدام الإصدار القياسي من لغة البرمجة SQL والإصدار القديم منها

تُتيح أداة BigQuery استخدام إصدارَين من لغة الاستعلامات البنيوية (SQL):

تشرح مقالة نقل البيانات إلى الإصدار العادي من لغة الاستعلامات البنيوية (SQL) الفروق بين الإصدارَين.

الإصدار العادي من لغة الاستعلامات البنيوية (SQL) هو الآن الإصدار المفضّل من SQL لإجراء طلبات بحث في البيانات المحفوظة على BigQuery.

يمكنك الاطّلاع على مقالة تفعيل الإصدار العادي من لغة الاستعلامات البنيوية (SQL) للحصول على معلومات عن تفعيله في واجهة مستخدِم BigQuery أو واجهة سطر الأوامر أو واجهة برمجة التطبيقات أو أي واجهة مستخدِم تتعامل معها.

إنّ أسهل طريقة للبدء هي تضمين التعليق "standardSQL" أعلى صفحة طلبات البحث في الإصدار العادي من لغة الاستعلامات البنيوية (SQL)، كما هو موضّح في الأمثلة التالية.

باستخدام الإصدار القديم من لغة الاستعلامات البنيوية (SQL)، يتم تمرير بيانات "إحصاءات Google‏ 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)
بيانات 3 أيام باستخدام أسماء الجداول المفصولة بفاصلة
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

 

آخر 1095 يومًا

الإصدار العادي من لغة الاستعلامات البنيوية (SQL)
بيانات آخر 1095 يومًا باستخدام ‎_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)
بيانات آخر 1095 يومًا باستخدام 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)
بيانات آخر 3 سنوات باستخدام 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

بيانات آخر 3 سنوات بالإضافة إلى بيانات اليوم (خلال اليوم)

الإصدار العادي من لغة الاستعلامات البنيوية (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.

المنتجات التي اشتراها العملاء الذين اشتروا المنتج "أ" (التجارة الإلكترونية الكلاسيكية)

في ما يلي نص برمجي أساسي للسؤال: ما هي المنتجات الأخرى التي يشتريها العملاء الذين يشترون المنتج (أ)؟

المنتجات التي اشتراها عميل اشترى المنتج "أ" (التجارة الإلكترونية الكلاسيكية)
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) وخلال إحدى المعاملات اشتروا المنتج (أ) (‪WHERE hits.item.productName CONTAINS 'اسم عنصر المنتجات أ'‬).

إنّ القواعد (العبارتان WHERE وAND) في أعلى مستوى (الأخضر) من طلب البحث تتجاهل القيم في hits.item.productName التي تكون فارغة وتحتوي على المنتج "أ".

في ما يلي مثال على طلب البحث إذا اشترى أحد العملاء أقلام برايتون فضية - مجموعة من 4، فما المنتج أو المنتجات الأخرى التي تم شراؤها؟

المنتجات التي اشتراها عميل اشترى أيضًا المنتج Brighton Metallic Pens (Set of 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 ميغابايت. في Dremel، يُطلق على ذلك اسم broadcast JOIN. عندما يتخطى الحجم 8 ميغابايت، ستحتاج إلى تشغيل shuffled JOIN، والذي يمكن تنفيذه باستخدام بناء الجملة JOIN EACH. لا يمكن تنفيذ ذلك باستخدام IN، ولكن يمكن إعادة كتابة طلب البحث نفسه باستخدام JOIN.

المنتجات التي اشتراها العملاء الذين اشتروا المنتج "أ" (التجارة الإلكترونية المحسَّنة)

تشبه هذه العملية طلب البحث الأساسي السابق الذي يعمل مع التجارة الإلكترونية المحسنة. ويتم أيضًا استخدام TABLE_DATE_RANGE لإجراء طلب بحث في البيانات على مدار أيام متعددة.

المنتجات التي اشتراها عميل اشترى المنتج "أ" (التجارة الإلكترونية المحسَّنة)
SELECT hits.product.productSKU AS other_purchased_products, COUNT(hits.product.productSKU) AS quantity
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 والذي يعتمد فقط على بيانات "إحصاءات Google".

في ما يلي نص برمجي أساسي للسؤال: ما هو متوسط عدد تفاعلات المستخدِم قبل أي عملية شراء؟

عدد تفاعلات المستخدِم قبل أي عملية شراء
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. يستخدِم طلب البحث الفرعي باللون الرمادي بيانات لا تتبع "إحصاءات Google"، ويجمع البيانات حول مبلغ الأرباح المحقّقة عند بيع المنتج.
  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. يشبه هذا إلى حدٍ بعيد طلب البحث التالي: ما هي الربحية لكل منتج؟ تقتصر الفروق على مجموعة البيانات التي لا تتبع "إحصاءات Google" في طلب البحث الفرعي باللون الرمادي والعملية الحسابية لاحتساب الربح الحقيقي في السطر الأول.
  2. في مجموعة البيانات التي لا تتبع "إحصاءات Google"، يتم أيضًا احتساب إجمالي مبلغ الإنفاق على عمليات ردّ الأموال (في عبارة 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‏ 4". يتضمّن هذا الموقع الإلكتروني الجديد فيديوهات ومقالات ومسارات إرشادية، كما يوفّر روابط تؤدّي إلى مجموعة متنوعة من المَراجع والموارد المتعلّقة بخدمة "إحصاءات Google"، مثل Discord والمدوّنة وقناة YouTube ومستودع GitHub.

بدء التعلّم اليوم

بحث
محو البحث
إغلاق البحث
القائمة الرئيسية
2226435241155728700
true
مركز مساعدة البحث
true
true
true
true
true
69256
false
false