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

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

แม้ว่า UI ของ Google Ads จะใช้ได้เพียงครั้งละ 1 กลุ่ม แต่เมื่อใช้ 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 โดยอัตโนมัติ และเมตริกจะแบ่งกลุ่มโดยปริยายที่ระดับกลุ่มโฆษณา

ดังนั้น สำหรับการสืบค้นข้อมูลนี้

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 ต่อไป หากต้องการให้เลือกช่องกลุ่มจากทรัพยากรของกลุ่มโฆษณาได้ ช่องดังกล่าวจะต้องอยู่ในรายการ 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 ทำงานตามที่ต้องการและไม่แสดงผลออบเจ็กต์ที่ซ้ำกันในกรณีนี้