بخشبندی در رابط کاربری گوگل ادز به عنوان یک منوی جداگانه در دسترس است. شما میتوانید بخشبندی را در API گوگل ادز با اضافه کردن فیلد مناسب به یک پرسوجو پیادهسازی کنید. برای مثال، فرض کنید segments.device را به یک پرسوجو اضافه میکنید. این منجر به گزارشی با یک ردیف برای هر ترکیبی از دستگاه و منبع مشخص شده در عبارت FROM میشود و مقادیر آماری (تعداد نمایشها، کلیکها، تبدیلها و غیره) بین آنها تقسیم میشود.
در رابط کاربری گوگل ادز، فقط میتوان از یک بخش در یک زمان استفاده کرد، اما با استفاده از 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 ad_group وجود داشته باشد. لیست Segments بخش زرد رنگ جدول فیلدهای موجود در صفحه فراداده منبع ad_group است.
منابع بخشبندی شده
هنگام انتخاب از بین برخی منابع، میتوانید با انتخاب فیلدهای منابع مرتبط در کنار فیلدهای منبع در عبارت FROM ، به طور ضمنی به آنها بپیوندید. این منابع مرتبط را میتوانید در لیست Attributed Resources در صفحه فراداده عبارت FROM پیدا کنید. در مورد منبع ad_group ، خواهید دید که میتوانید فیلدهایی را از منبع campaign نیز انتخاب کنید. فیلد resource_name هر Attributed Resources که حداقل یک فیلد در عبارت 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 ، بیش از ۵۰ بخش موجود وجود دارد که میتوانید انتخاب کنید. با این حال، لیست 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 > '2024-01-01' AND segments.date < '2024-02-01' |
| معتبر: این پرسوجو نامها و کلیکهای کمپینها را که بر اساس تاریخ برای تمام روزهای محدوده تاریخ تقسیمبندی شدهاند، برمیگرداند. | SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
| معتبر: این پرسوجو نامها و کلیکهای کمپینها را که بر اساس ماه برای تمام روزهای محدوده تاریخ تقسیمبندی شدهاند، برمیگرداند. | SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
| معتبر: این پرسوجو نامها و کلیکهای کمپینها را بر اساس فصل و سپس بر اساس ماه برای تمام ماههای محدوده سال، دستهبندی میکند. | SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year > 2019 AND segments.year < 2024 |
search_term_view
منبع search_term_view همچنین به طور ضمنی توسط گروه تبلیغاتی، نه فقط یک عبارت جستجو، تقسیمبندی شده است، همانطور که در ساختار نام منبع آن، که شامل گروه تبلیغاتی نیز میشود، منعکس شده است. بنابراین، شما برخی از ردیفهای به ظاهر تکراری را با همان عبارات جستجو که در نتایج شما ظاهر میشوند، دریافت خواهید کرد، اما این ردیفها متعلق به یک گروه تبلیغاتی متفاوت هستند.
{
"results":[
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~2222222222~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"3"
},
"segments":{
"date":"2024-06-15"
}
},
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~33333333333~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"2"
},
"segments":{
"date":"2024-06-15"
}
}
]
}
اگرچه دو شیء برگردانده شده در این مثال تکراری به نظر میرسند، اما نام منابع آنها در واقع متفاوت است، به خصوص در قسمت "گروه تبلیغاتی". این بدان معناست که عبارت جستجوی "google photos" در یک تاریخ (2024-06-15) به دو گروه تبلیغاتی (شناسه 2222222222 و 33333333333 ) نسبت داده شده است. بنابراین، میتوانیم نتیجه بگیریم که API طبق برنامه عمل کرده و در این مورد اشیاء تکراری را برنگردانده است.