ساختار و بندهای پرس و جو

یک پرس‌وجو از تعدادی عبارت تشکیل شده است: SELECT ، FROM ، WHERE ، ORDER BY ، LIMIT و PARAMETERS .

بندها از نام فیلدها ، نام منابع ، عملگرها ، شرط‌ها و ترتیب‌هایی استفاده می‌کنند که در یک درخواست پرس‌وجوی واحد ترکیب می‌شوند.

به طور کلی، برای ساخت یک پرس و جو شما باید:

  • منبعی را برای بازیابی داده‌ها مشخص کنید.
  • فیلدها و معیارها را برای تعریف داده‌هایی که می‌خواهید برگردانید، اضافه کنید.
  • برای گروه‌بندی نتایج خود، بخش‌ها را اضافه کنید.
  • منابع نسبت داده شده را اضافه کنید تا به طور ضمنی داده‌های منابع مرتبط را به هم متصل کنید.
  • نتایج خود را فیلتر، مرتب و محدود کنید.

بند SELECT

بند SELECT :

  • یک عبارت الزامی در یک پرس‌وجو است.
  • مجموعه‌ای از فیلدها را برای دریافت در درخواست مشخص می‌کند.
  • لیستی از فیلدهای منابع، ستون‌های سفارشی، متغیرهای Floodlight سفارشی، فیلدهای سگمنت و معیارها را که با کاما از هم جدا شده‌اند، می‌گیرد و مقادیر موجود در پاسخ را برمی‌گرداند.

این نمونه کوئری به شما نشان می‌دهد که چگونه ویژگی‌های منبع campaign را انتخاب کنید:

SELECT
  campaign.id,
  campaign.name
FROM campaign

انواع فیلدهای چندگانه

شما می‌توانید انواع فیلدهای مختلف را در یک درخواست واحد درخواست کنید.

مثال زیر یک پرس‌وجوی واحد با ترکیبی از موارد زیر را نشان می‌دهد:

  • فیلدهای منبع: campaign.id ، campaign.name ، bidding_strategy.id و bidding_strategy.name .

  • فیلدهای قطعه: segments.device و segments.date .

  • فیلدهای معیارها: metrics.impressions و metrics.clicks .

SELECT
  campaign.id,
  campaign.name,
  bidding_strategy.id,
  bidding_strategy.name,
  segments.device,
  segments.date,
  metrics.impressions,
  metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

برای کسب اطلاعات بیشتر در مورد بخش‌بندی گزارش‌های جستجوی خود، به بخش بخش‌بندی مراجعه کنید.

فیلد منابع اصلی

معمولاً، شما فیلد منبع اصلی خود را در عبارت SELECT قرار می‌دهید، اما این اختیاری است (الزامی نیست ).

این مثال کوئری از یک فیلد منبع اصلی ( ad_group.status ) برای فیلتر کردن نتایج استفاده می‌کند.

SELECT campaign.id
FROM ad_group
WHERE ad_group.status = PAUSED

متغیرهای نورافکن سفارشی

شما می‌توانید متغیرهای Floodlight سفارشی را با استفاده از شناسه‌های (id) آنها در عبارت SELECT وارد کنید.

در این مثال، کوئری شامل یک متغیر سفارشی با شناسه ۱۲۳۴۵۴۳۲۱ برای منبع کمپین است.

SELECT
  conversion_custom_metrics.id[123454321]
FROM campaign
SELECT
  conversion_custom_dimensions.id[123454321]
FROM campaign

ستون‌های سفارشی

شما می‌توانید ستون‌های سفارشی را با استفاده از شناسه‌های (ID) آنها در عبارت SELECT وارد کنید.

در این مثال، کوئری شامل یک ستون سفارشی با شناسه ۱۲۳۴۵۶۷۸ برای منبع کمپین است.

SELECT
  custom_columns.id[12345678]
FROM campaign

ببینید چگونه می‌توانید شناسه‌های ستون سفارشی را دریافت کنید .

فیلدهای معیارها

شما می‌توانید فیلدهای معیار را برای یک منبع مشخص انتخاب کنید، بدون اینکه هیچ فیلد دیگری از منبع را در عبارت SELECT وارد کنید.

این نمونه کوئری، معیارهای impressions و clicks را برای منبع campaign انتخاب می‌کند.

SELECT
  metrics.impressions,
  metrics.clicks
FROM campaign

برای مشاهده فهرست فیلدهای معیار که می‌توانید در پرس‌وجوهای خود استفاده کنید، metrics مراجعه کنید.

فیلدهای سگمنت

شما می‌توانید فیلدهای سگمنت را بدون مشخص کردن فیلدهای منبع یا معیارهای همراه در بند SELECT انتخاب کنید.

این مثال، نتایج پرس‌وجو را بر اساس دستگاه تقسیم‌بندی می‌کند.

SELECT segments.device
FROM campaign

برای مشاهده‌ی فهرستی از فیلدهای سگمنت که می‌توانید در کوئری‌های خود استفاده کنید، به segments مراجعه کنید.

زمینه‌های ممنوعه

شما نمی‌توانید از فیلدهای زیر در عبارت SELECT استفاده کنید:

  • فیلدهای غیرقابل انتخاب، یعنی فیلدهایی که ویژگی فراداده Selectable آنها با مقدار false مشخص شده است.

  • فیلدهای تکراری، یعنی فیلدهایی که ویژگی فراداده Repeated با مقدار true مشخص شده است.

  • فیلدهایی که برای منبع داده شده در بند FROM در دسترس نیستند. ویژگی‌های برخی از منابع را نمی‌توان با هم انتخاب کرد. برخی از منابع فقط زیرمجموعه‌ای از تمام معیارها و بخش‌ها را در دسترس قرار می‌دهند.

  • بخش‌ها یا معیارهای ناسازگار. برای اطلاعات بیشتر به بخش تقسیم‌بندی مراجعه کنید.

برای جزئیات بیشتر در مورد محل یافتن این اطلاعات برای هر منبع، به مستندات مرجع مراجعه کنید.

بند از

بند FROM :

  • یک بند الزامی برای کوئری‌های SearchAds360Service (هر دو روش Search و SearchStream ) است.

  • نباید برای کوئری‌های SearchAds360FieldService لحاظ شود.

  • منبع اصلی که کوئری برمی‌گرداند را مشخص می‌کند.

  • فقط می‌تواند یک منبع واحد را مشخص کند.

  • فیلدهایی را که می‌توانید در تمام بندهای دیگر در پرس‌وجو استفاده کنید، تعریف می‌کند.

منابع منتسب

اگر منابع دارای ویژگی در دسترس باشند، به طور ضمنی به منبعی که در بند FROM مشخص کرده‌اید، متصل می‌شوند. برای بازگرداندن مقادیر آنها، فقط باید ویژگی‌های آنها را به بند SELECT اضافه کنید.

این مثال کوئری هم شناسه گروه تبلیغاتی و هم شناسه کمپین را برمی‌گرداند، زیرا campaign یک منبع نسبت داده شده به منبع ad_group است.

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

فیلد resource_name

فیلد resource_name مربوط به منبع اصلی در عبارت FROM همیشه برگردانده می‌شود.

در این مثال از کوئری، ad_group.resource_name در پاسخ گنجانده خواهد شد، حتی اگر به صراحت در کوئری انتخاب نشده باشد:

SELECT ad_group.id
FROM ad_group

فیلد resource_name از یک منبع نسبت داده شده، زمانی برگردانده می‌شود که حداقل یک فیلد انتخاب شده باشد.

در این مثال از پرس‌وجو، campaign.resource_name در پاسخ گنجانده خواهد شد زیرا campaign.id انتخاب شده است:

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

بند WHERE

عبارت WHERE :

  • یک عبارت اختیاری در یک پرس و جو است.
  • شرایط فیلتر کردن و تقسیم‌بندی داده‌ها برای درخواست را مشخص می‌کند. شرایط از این الگو پیروی می‌کنند: FIELD_NAME OPERATOR VALUE (با فاصله خالی از هم جدا شده‌اند).

  • می‌تواند شامل چندین شرط باشد که با جداکننده AND از هم جدا شده‌اند.

این مثال از کوئری نشان می‌دهد که چگونه می‌توان از عبارت WHERE برای بازگرداندن معیارهای impressions برای یک دوره زمانی مشخص استفاده کرد:

SELECT
  campaign.id,
  campaign.name,
  metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

برای کسب اطلاعات بیشتر در مورد بخش‌بندی گزارش‌های جستجوی خود، به بخش بخش‌بندی مراجعه کنید.

برای کسب اطلاعات بیشتر در مورد تعیین محدوده‌های زمانی در پرس‌وجوهایتان، به بخش محدوده‌های زمانی مراجعه کنید.

فیلتر بر اساس فیلد resource_name

شما می‌توانید از فیلد resource_name برای فیلتر کردن یا مرتب‌سازی داده‌ها استفاده کنید.

این مثال کوئری از فیلد campaign.resource_name برای فیلتر کردن نتایج بر اساس یک کمپین مشخص استفاده می‌کند:

SELECT
  campaign.id,
  campaign.name
FROM campaign
WHERE campaign.resource_name = 'customers/1234567/campaigns/987654'

شرایط چندگانه

شما می‌توانید چندین شرط را برای فیلتر کردن داده‌های خود ترکیب کنید.

این نمونه کوئری، معیارهای تعداد clicks را برای همه کمپین‌ها با معیارهای impressions در موبایل برای 30 روز گذشته درخواست می‌کند.

SELECT
  campaign.id,
  campaign.name,
  segments.device,
  metrics.clicks
FROM campaign
WHERE metrics.impressions > 0
  AND segments.device = MOBILE
  AND segments.date DURING LAST_30_DAYS

برای کسب اطلاعات بیشتر در مورد بخش‌بندی گزارش‌هایتان، به بخش بخش‌بندی مراجعه کنید.

حساسیت به حروف بزرگ و کوچک

هنگام فیلتر کردن مقادیر رشته‌ای، حساسیت پیش‌فرض هر عملگر به حروف کوچک و بزرگ، نقش مهمی در فیلتر کردن صحیح نتایج شما ایفا می‌کند.

جدول زیر حساسیت پیش‌فرض هر عملگر به حروف بزرگ و کوچک را نشان می‌دهد.

حساسیت پیش‌فرض به حروف کوچک و بزرگ
=/!= Case sensitive
IN/NOT IN Case sensitive
LIKE/NOT LIKE Case insensitive
CONTAINS (...) Case sensitive
REGEXP_MATCH/NOT REGEXP_MATCH Case sensitive

شما می‌توانید از اصلاح‌کننده (?i) برای تغییر حساسیت پیش‌فرض برای REGEXP_MATCH و NOT REGEXP_MATCH به حالت غیرحساس به حروف بزرگ و کوچک استفاده کنید، برای مثال:

SELECT campaign.id
FROM campaign
WHERE campaign.name REGEXP_MATCH "(?i).*test.*"

برای فهرست کاملی از عملگرهایی که می‌توانید برای فیلتر کردن داده‌های خود استفاده کنید، به مرجع گرامر پرس‌وجو مراجعه کنید.

بخش‌های اصلی تاریخ

فیلدهای سگمنت زیر به عنوان سگمنت‌های اصلی تاریخ شناخته می‌شوند: segments.date ، segments.week ، segments.month ، segments.quarter و segments.year .

شما می‌توانید از بخش‌های اصلی تاریخ در عبارت WHERE خود برای مشخص کردن یک تاریخ یا دوره زمانی استفاده کنید.

این پرس و جوی نمونه، DURING LAST_30_DAYS را برای فیلد segments.date در عبارت WHERE مشخص می‌کند:

SELECT
  campaign.id,
  campaign.name,
  segments.date,
  metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

برای اطلاعات دقیق در مورد استفاده از بخش‌های اصلی تاریخ، به بخش‌بندی > بخش‌های اصلی تاریخ مراجعه کنید.

فیلترینگ ممنوع

فیلترینگ مجاز نیست:

  • در فیلدهای قطعه انتخاب نشده، به جز قطعات تاریخ اصلی .

  • روی فیلدهایی از هر نوع پیام، به جز مقادیر اولیه (برای مثال، Int64Value ، StringValue و غیره).

  • روی ویژگی‌های فیلدهای تکراری از هر نوع پیام، به جز مقادیر اولیه (برای مثال، Int64Value ، StringValue و غیره).

بند ORDER BY

بند ORDER BY :

  • یک عبارت اختیاری در یک پرس و جو است.
  • ترتیب برگرداندن نتایج را مشخص می‌کند. ترتیب از این الگو پیروی می‌کند: FIELD_NAME ORDERING_OPTION (با یک فاصله خالی از هم جدا می‌شوند).
  • دو گزینه را مجاز می‌کند: ASC (صعودی) یا DESC (نزولی). پیش‌فرض صعودی است.

این نمونه کوئری، کمپین‌ها را بر اساس تعداد کلیک‌ها به ترتیب نزولی (از بیشترین به کمترین) مرتب می‌کند:

SELECT
  campaign.name,
  metrics.clicks
FROM campaign
ORDER BY metrics.clicks DESC

سفارش‌های چندگانه

شما می‌توانید چندین فیلد را در دستور ORDER BY با استفاده از یک لیست جدا شده با کاما مشخص کنید. نتایج به همان ترتیبی که در پرس و جو مشخص کرده‌اید، مرتب می‌شوند.

این مثال کوئری، داده‌های گروه تبلیغاتی را انتخاب می‌کند و نتایج را به ترتیب صعودی بر اساس نام کمپین، سپس به ترتیب نزولی بر اساس تعداد نمایش‌ها و در نهایت به ترتیب نزولی بر اساس تعداد کلیک‌ها مرتب می‌کند:

SELECT
  campaign.name,
  ad_group.name,
  metrics.impressions,
  metrics.clicks
FROM ad_group
ORDER BY
  campaign.name,
  metrics.impressions DESC,
  metrics.clicks DESC

ترکیب سفارش و محدودیت

شما می‌توانید از دستور ORDER BY به همراه دستور LIMIT برای اصلاح نتایج خود استفاده کنید.

این نمونه کوئری، پنج کمپین با بالاترین میزان بازدید در 30 روز گذشته را برمی‌گرداند:

SELECT
  campaign.id,
  campaign.name,
  metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.impressions DESC
LIMIT 5

سفارش ممنوع

سفارش مجاز نیست:

  • بر اساس ویژگی‌های منابع غیرانتخابی.
  • بر اساس معیارهای غیرانتخابی.
  • بر اساس بخش‌های غیرانتخاب‌شده.
  • برای این نوع فیلدها:
    • MESSAGE
    • فیلدهای تکراری
    • ویژگی‌های فیلدهای تکراری

بند محدودیت

بند LIMIT :

  • یک عبارت اختیاری در یک پرس و جو است.
  • به شما امکان می‌دهد تعداد نتایجی را که پرس‌وجو برمی‌گرداند محدود کنید.

این بند مفید است، برای مثال، اگر فقط به یک نمونه یا خلاصه‌ای از نتایج علاقه‌مند هستید.

این مثال از پرس‌وجو، تعداد کل نتایج را به ۵۰ محدود می‌کند:

SELECT
  campaign.name,
  ad_group.name,
  segments.device,
  metrics.impressions
FROM ad_group
ORDER BY metrics.impressions DESC
LIMIT 50

بند پارامترها

بند PARAMETERS به شما امکان می‌دهد پارامترهای متا را برای درخواست مشخص کنید.

پیش‌نویس‌ها را لحاظ کنید

پارامتر include_drafts کنترل می‌کند که آیا موجودیت‌های پیش‌نویس در نتایج گنجانده شوند یا خیر. مقدار پیش‌فرض false است. برای شامل شدن موجودیت‌های پیش‌نویس، آن را روی true تنظیم کنید.

این مثال کوئری هم کمپین‌های پیش‌نویس و هم کمپین‌های معمولی را برمی‌گرداند:

SELECT campaign.name
FROM campaign
PARAMETERS include_drafts=true

resource_name انتخاب نشده را حذف کنید

پارامتر omit_unselected_resource_names به شما این امکان را می‌دهد که فیلد resource_name را از تمام منابعی که به صراحت در عبارت SELECT شما درخواست نشده‌اند، حذف کنید. مقدار پیش‌فرض false است. اگر این پارامتر را روی true تنظیم کنید، توصیه می‌کنیم که به صراحت نام منبع منبع اصلی و هر منبع نسبت داده شده را در عبارت SELECT خود درخواست کنید.

این مثال کوئری نه فیلد campaign.resource_name و نه فیلد customer.resource_name را بر نمی‌گرداند، زیرا آنها در عبارت SELECT لحاظ نشده‌اند:

SELECT
  campaign.name,
  customer.id
FROM campaign
PARAMETERS omit_unselected_resource_names = true

این مثال کوئری فیلد campaign.resource_name را برمی‌گرداند، زیرا به صراحت در عبارت SELECT درخواست شده است:

SELECT
  campaign.name,
  campaign.resource_name
FROM campaign
PARAMETERS omit_unselected_resource_names = true

تغییر واحد پول مورد استفاده در معیارها

پارامتر metrics_currency به شما امکان می‌دهد واحد پولی مورد استفاده را هنگام محاسبه معیار موجود در عبارت SELECT خود مشخص کنید. پیش‌فرض استفاده از واحد پولی حساب مشخص شده توسط customer_id است. اگر این پارامتر را تنظیم کنید، باید از کد ارزی ۳ کاراکتری ISO 4217 استفاده کنید. به عنوان مثال: USD، EUR.

این مثال کوئری، معیار cost_micros را بر اساس ارز حسابی که توسط customer_id مشخص شده است، برمی‌گرداند.

SELECT
  campaign.name,
  metrics.cost_micros
FROM campaign
WHERE segments.date >= "2018-08-15"
AND segments.date < "2018-08-16"

این نمونه کوئری، معیار cost_micros را بر حسب پزوی شیلی (CLP) برمی‌گرداند.

SELECT
  campaign.name,
  metrics.cost_micros
FROM campaign
WHERE segments.date >= "2018-08-15"
AND segments.date < "2018-08-16"
PARAMETERS metrics_currency = "CLP"

فعال کردن توسعه MCC

پارامتر enable_mcc_expansion ، وقتی روی true تنظیم شود، به شما امکان می‌دهد معیارها، فیلدها و بخش‌هایی از همه حساب‌های ریشه‌دار در customer_id را برای منبع موجود در عبارت FROM لحاظ کنید. پاسخ از واحد پول customer_id استفاده خواهد کرد، مگر اینکه به صراحت در پارامتر metrics_currency مشخص شده باشد.

این پرس‌وجوی نمونه، bidding_strategy.name ، bidding_strategy.type و metrics.cost_micros را از تمام حساب‌های موجود در سلسله مراتب حساب‌ها که ریشه در customer_id دارند، برمی‌گرداند، زیرا پارامتر enable_mcc_expansion روی true تنظیم شده است.

SELECT
  bidding_strategy.name,
  bidding_strategy.type,
  metrics.cost_micros
FROM bidding_strategy
WHERE segments.date DURING LAST_14_DAYS
PARAMETERS enable_mcc_expansion = true

بیشتر بدانید