การแบ่งกลุ่ม

คุณสามารถติดตั้งใช้งานการแบ่งกลุ่มที่มีอยู่ใน UI ของ Google Ads เป็นเมนูแยกต่างหากใน Google Ads API ได้โดยเพียงเพิ่มช่องที่เหมาะสมลงในคําค้นหา ตัวอย่างเช่น การเพิ่ม segments.device ลงในข้อความค้นหาจะส่งผลให้รายงานมีแถวสำหรับชุดค่าผสมของอุปกรณ์และทรัพยากรที่ระบุในประโยค FROM แต่ละชุด และค่าทางสถิติ (การแสดงผล การคลิก Conversion ฯลฯ) จะแยกกัน

แม้ว่าใน UI ของ 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"
      }
    },
    ...
  ]
}

โปรดทราบว่าในตัวอย่างผลลัพธ์ข้างต้น แอตทริบิวต์สำหรับออบเจ็กต์แรกและที่ 2 รวมถึงชื่อทรัพยากรนั้นเหมือนกัน ระบบจะแบ่งกลุ่มการแสดงผลตามอุปกรณ์ จึงแสดงผลลัพธ์อย่างน้อย 2 รายการสําหรับแคมเปญเดียวกันได้

การแบ่งกลุ่มแบบไม่ระบุ

รายงานทุกฉบับจะแบ่งกลุ่มตามทรัพยากรที่ระบุไว้ใน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 ที่มีฟิลด์อย่างน้อย 1 ฟิลด์ในประโยค SELECT โดยอัตโนมัติ แม้ว่าจะไม่ได้รวมฟิลด์ resource_name ไว้ในข้อความค้นหาอย่างชัดเจนก็ตาม

คุณเลือกฟิลด์ Segmenting Resource ได้เช่นเดียวกับการเลือกฟิลด์ Attributed 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 จะเป็นการจํากัดกลุ่มเป้าหมายที่เหลือให้คุณเลือกไว้ที่จุดตัดของรายการทั้ง 2 รายการนี้

เมื่อเพิ่มกลุ่มบางกลุ่ม เมตริกในแถวข้อมูลสรุปอาจลดลง
เมื่อเพิ่ม 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"
      }
    }
  ]
}

แม้ว่าออบเจ็กต์ 2 รายการที่แสดงผลในตัวอย่างนี้ดูเหมือนจะซ้ำกัน แต่ชื่อทรัพยากรของออบเจ็กต์นั้นแตกต่างกันจริงๆ โดยเฉพาะในส่วน "กลุ่มโฆษณา" ซึ่งหมายความว่าคําค้นหา "google photos" มาจากกลุ่มโฆษณา 2 กลุ่ม (รหัส 2222222222 และ 33333333333) ในวันเดียวกัน (15-06-2015) เราจึงสรุปได้ว่า API ทํางานตามที่ตั้งใจไว้และไม่ได้แสดงผลออบเจ็กต์ที่ซ้ำกันในกรณีนี้