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

یک پرس و جو از تعدادی عبارت تشکیل شده است: 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 سفارشی

می توانید متغیرهای Floodlight سفارشی را با استفاده از شناسه آنها در بند SELECT قرار دهید.

در این مثال، پرس و جو شامل یک متغیر سفارشی با شناسه 123454321 برای منبع کمپین است.

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

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

می‌توانید ستون‌های سفارشی را با استفاده از شناسه‌هایشان در بند SELECT قرار دهید.

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

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

بند 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.*"

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

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

فیلدهای بخش زیر به عنوان بخش های اصلی تاریخ شناخته می شوند: 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 :

  • یک عبارت اختیاری در یک پرس و جو است.
  • ترتیب برگشت نتایج را مشخص می کند. ترتیب از این الگو پیروی می کند: 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

بند LIMIT :

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

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

این پرس و جوی مثال تعداد کل نتایج را به 50 محدود می کند:

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

بند PARAMETERS

بند 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 خود استفاده کنید، مشخص کنید. پیش فرض استفاده از ارز محلی برای حساب است. اگر این پارامتر را تنظیم کنید، باید از کد ارز 3 کاراکتری ISO 4217 استفاده کنید. به عنوان مثال: USD، EUR.

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

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"

بیشتر بدانید