بخشبندی در رابط کاربری گوگل ادز به عنوان یک منوی جداگانه در دسترس است. شما میتوانید بخشبندی را در 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 طبق برنامه عمل کرده و در این مورد اشیاء تکراری را برنگردانده است.