بخش بندی، که در رابط کاربری Google Ads به عنوان یک منوی جداگانه موجود است، می تواند در Google Ads API فقط با افزودن فیلد مناسب به یک پرس و جو پیاده سازی شود. برای مثال، افزودن segments.device
به یک جستار، منجر به یک گزارش با یک ردیف برای هر ترکیبی از دستگاه و منبع مشخص شده در عبارت FROM
میشود و مقادیر آماری (نمایشها، کلیکها، تبدیلها و غیره) بین آنها تقسیم میشود.
در حالی که در رابط کاربری Google Ads فقط می توان از یک بخش در یک زمان استفاده کرد، با API می توانید چندین بخش را در یک جستجو مشخص کنید.
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions
FROM campaign
نتایج ارسال این درخواست به GoogleAdsService.SearchStream
چیزی شبیه به این رشته JSON خواهد بود:
{
"results":[
{
"campaign":{
"resourceName":"customers/1234567890/campaigns/111111111",
"name":"Test campaign",
"status":"ENABLED"
},
"metrics":{
"impressions":"10922"
},
"segments":{
"device":"MOBILE"
}
},
{
"campaign":{
"resourceName":"customers/1234567890/campaigns/111111111",
"name":"Test campaign",
"status":"ENABLED"
},
"metrics":{
"impressions":"28297"
},
"segments":{
"device":"DESKTOP"
}
},
...
]
}
توجه داشته باشید که در نتیجه نمونه بالا، ویژگی های شی اول و دوم از جمله نام منبع یکسان است. برداشت ها بر اساس دستگاه تقسیم می شوند و بنابراین می توان دو یا چند شی را برای یک کمپین بازگرداند.
تقسیم بندی ضمنی
هر گزارش در ابتدا توسط منبع مشخص شده در عبارت FROM
تقسیم بندی می شود. فیلد resource_name منبع در عبارت FROM
برگردانده میشود و معیارها توسط آن بخشبندی میشوند، حتی زمانی که قسمت resource_name به صراحت در پرس و جو گنجانده نشده باشد. به عنوان مثال، وقتی ad_group
بهعنوان منبع در عبارت FROM
مشخص میکنید، ad_group.resource_name
بهطور خودکار برگردانده میشود و معیارها به طور ضمنی در سطح ad_group آن را تقسیمبندی میکنند.
بنابراین برای این پرس و جو،
SELECT metrics.impressions
FROM ad_group
شما یک رشته JSON مانند این دریافت خواهید کرد:
{
"results":[
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/2222222222"
},
"metrics":{
"impressions":"237"
}
},
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/33333333333"
},
"metrics":{
"impressions":"15"
}
},
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/44444444444"
},
"metrics":{
"impressions":"0"
}
}
]
}
توجه داشته باشید که قسمت resource_name
adGroup
همیشه برگردانده می شود زیرا ad_group
به عنوان منبع در عبارت FROM
مشخص شده است.
فیلدهای بخش قابل انتخاب
همه فیلدهای بخش برای یک منبع معین در عبارت FROM
قابل انتخاب نیستند. به عنوان مثال، ما به پرس و جو از منبع ad_group
ادامه می دهیم. برای اینکه یک قسمت بخش از منبع ad_group قابل انتخاب باشد، باید آن قسمت در لیست Segments
for ad_group وجود داشته باشد. لیست Segments
قسمت زرد رنگ جدول فیلدهای موجود در صفحه ابرداده منبع ad_group
است.
منابع بخش
هنگام انتخاب از برخی منابع، ممکن است این گزینه را داشته باشید که به طور ضمنی به منابع مرتبط با انتخاب فیلدهای آنها در کنار فیلدهای منبع در عبارت FROM
بپیوندید. این منابع مرتبط را می توان در فهرست Attributed Resources
در منبع موجود در صفحه فراداده بند FROM
یافت. در مورد منبع ad_group
، خواهید دید که می توانید فیلدهایی را نیز از منبع campaign
انتخاب کنید. فیلد resource_name هر Attributed Resources
با حداقل 1 فیلد در عبارت SELECT
به طور خودکار بازگردانده می شود، حتی زمانی که قسمت resource_name به صراحت در پرس و جو گنجانده نشده باشد.
مشابه انتخاب فیلدهای Attributed Resource
، میتوانید قسمتهای Segmenting Resource
را نیز انتخاب کنید. اگر منبع معینی دارای فهرست Segmenting Resources
در صفحه ابرداده خود باشد، انتخاب فیلدها از یکی از منابع فهرستشده باعث میشود که پرس و جو توسط resource_name برگشتی آن Segmenting Resource
بخشبندی شود. به عنوان مثال، متوجه خواهید شد که منبع campaign
به عنوان یک Segmenting Resource
برای منبع campaign_budget
فهرست شده است. انتخاب هر فیلد کمپین، مانند campaign.name
، از منبع campaign_budget نه تنها باعث میشود که فیلد campaign.name برگردانده شود، بلکه باعث میشود که فیلد campaign.resource_name
برگردانده شده و در آن بخشبندی شود.
قابلیت انتخاب بین بخش ها و معیارها
ممکن است یک قسمت بخش معین با برخی از فیلدهای بخش دیگر یا با برخی از فیلدهای سنجه سازگار نباشد. برای تشخیص اینکه کدام قسمتها با یکدیگر سازگار هستند، میتوانید فهرست selectable_with
از بخشهای موجود در عبارت SELECT
را بررسی کنید.
در مورد منبع ad_group
، بیش از 50 بخش موجود است که می توانید انتخاب کنید. با این حال، لیست selectable_with
برای segments.hotel_check_in_date
مجموعه بسیار کوچکتری از بخش های سازگار است. این بدان معناست که اگر قسمت segments.hotel_check_in_date
را به بند SELECT
اضافه کنید، بخشهای موجودی را که برای انتخاب باقی گذاشتهاید به تقاطع این دو لیست محدود میکنید.
- هنگام افزودن برخی از بخشها، ممکن است معیارهای موجود در ردیف خلاصه کاهش یابد
- وقتی
segments.keyword.info.match_type
باFROM ad_group_ad
به یک جستار اضافه میشود، آن بخش به درخواست میگوید فقط ردیفهایی از دادهها را دریافت کند که دارای کلمات کلیدی هستند و هر ردیفی را که با کلمه کلیدی مرتبط نیست حذف کند. در این مورد، معیارها کمتر خواهد بود زیرا هر معیار غیرکلیدی را حذف می کند.
قوانین برای بخش ها در عبارت WHERE
هنگامی که یک بخش در عبارت WHERE
قرار دارد، باید در عبارت SELECT
نیز باشد. استثناء این قاعده، بخشهای تاریخ زیر هستند که به آنها بخشهای اصلی تاریخ گفته میشود:
-
segments.date
-
segments.week
-
segments.month
-
segments.quarter
-
segments.year
قوانین مربوط به فیلدهای بخش اصلی تاریخ
بخشهای segments.date
، segments.week
، segments.month
، segments.quarter
و segments.year
به شرح زیر عمل میکنند:
این بخشها را میتوان در عبارت
WHERE
بدون ظاهر شدن در عبارتSELECT
فیلتر کرد.اگر هر یک از این بخشها در بند
SELECT
باشد، یک محدوده تاریخ محدود متشکل از بخشهای تاریخ اصلی باید در عبارتWHERE
مشخص شود (لازم نیست بخشهای تاریخ همانهایی باشند که درSELECT
مشخص شدهاند).
نمونه ها
نامعتبر: از آنجایی که segments.date در بند SELECT است، باید یک محدوده تاریخ محدود را در عبارت WHERE برای segments.date ، segments.week ، segments.month ، segments.quarter یا segments.year مشخص کنید. | SELECT campaign.name, metrics.clicks, segments.date FROM campaign |
معتبر: این پرس و جو نام کمپین ها و کلیک های جمع شده در محدوده تاریخ را برمی گرداند. توجه داشته باشید که segments.date لازم نیست در عبارت SELECT ظاهر شود. | SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
معتبر: این عبارت نامهای کمپین و کلیکهای تقسیمبندی شده بر اساس تاریخ را برای همه روزهای محدوده تاریخ برمیگرداند. | SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
معتبر: این پرس و جو نام و کلیک های کمپین را به تفکیک ماه برای همه روزهای محدوده تاریخ برمی گرداند. | SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2020-01-01' AND segments.date < '2020-02-01' |
معتبر: این پرس و جو نام و کلیک های کمپین را به تفکیک سه ماهه و سپس بر اساس ماه برای تمام ماه های محدوده سال برمی گرداند. | SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year > 2015 AND segments.year < 2020 |
search_term_view
توجه داشته باشید که برای منبع search_term_view
، به طور ضمنی بر اساس گروه تبلیغات، نه فقط یک عبارت جستجو، تقسیم بندی می شود، همانطور که در ساختار نام منبع آن منعکس می شود، که شامل گروه تبلیغات نیز می شود. بنابراین، تعدادی ردیف به ظاهر تکراری با همان عبارات جستجویی که در نتایج شما ظاهر میشوند، دریافت خواهید کرد، در حالی که در واقع، ردیفها متعلق به یک گروه تبلیغاتی متفاوت هستند:
{
"results":[
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~2222222222~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"3"
},
"segments":{
"date":"2015-06-15"
}
},
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~33333333333~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"2"
},
"segments":{
"date":"2015-06-15"
}
}
]
}
اگرچه به نظر می رسد دو شیء برگشتی در این مثال تکراری هستند، نام منابع آنها در واقع متفاوت است، به ویژه در قسمت "گروه تبلیغات". این بدان معناست که عبارت جستجوی "عکسهای گوگل" به دو گروه تبلیغاتی (ID 2222222222
و 33333333333
) در همان تاریخ (15/06/2015) نسبت داده شده است. بنابراین، میتوان نتیجه گرفت که API همانطور که در نظر گرفته شده بود کار میکرد و در این مورد اشیاء تکراری را برنمیگرداند.