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

การแบ่งกลุ่มพร้อมใช้งานใน 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 โดยอัตโนมัติ และเมตริกจะแบ่งกลุ่มโดยนัยตามทรัพยากรดังกล่าวที่ระดับ 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

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"
      }
    }
  ]
}

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

ช่องกลุ่มที่เลือกได้

ช่องกลุ่มบางช่องอาจเลือกไม่ได้สำหรับทรัพยากรหนึ่งๆ ในส่วนคำสั่ง 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 รายการนี้

ข้อจำกัดของกลุ่มร่วม

ช่องกลุ่มบางช่องมีข้อจำกัดในการเลือกที่ชัดเจนซึ่งกำหนดให้ต้องขอพร้อมกับกลุ่มหลักในส่วนคำสั่ง SELECT ดังนี้

  • การเลือก segments.ad_sub_network_type (ซึ่งจะแจกแจงเครือข่ายย่อยของโฆษณา YouTube เช่น ในสตรีม ในฟีด และ Shorts) กำหนดให้คุณต้องเลือก segments.ad_network_type ด้วย
  • ใน v25 ขึ้นไป การเลือก segments.ad_sub_format_type (ซึ่งแจกแจงโฆษณาในสตรีมแบบข้ามไม่ได้ของ YouTube ตามระยะเวลา) กำหนดให้คุณต้องเลือก segments.ad_format_type ด้วย

การกรองโดยนัยตามการเลือกกลุ่ม

เมื่อคุณเลือกช่องกลุ่มบางช่องในคําค้นหา Google Ads API อาจกรองผลลัพธ์โดยนัยเพื่อรวมเฉพาะแถวที่กลุ่มนั้นใช้ได้และมีค่า

ผลกระทบของ segments.keyword.*

ตัวอย่างที่พบบ่อยและสำคัญของลักษณะการทำงานนี้เกิดขึ้นเมื่อเลือกช่องใดก็ได้ใน segments.keyword (เช่น segments.keyword.info.text และ segments.keyword.ad_group_criterion)

  • การยกเว้นการเข้าชมที่ไม่ใช่คีย์เวิร์ด: หากคุณใส่ช่อง segments.keyword.* ไว้ในส่วนคำสั่ง SELECT ระบบจะจำกัดผลลัพธ์ให้แสดงเฉพาะแถวที่เชื่อมโยงโดยตรงกับเกณฑ์กลุ่มโฆษณาคีย์เวิร์ดในเครือข่าย Search
  • ประเภทแคมเปญที่ได้รับผลกระทบ: ด้วยเหตุนี้ ระบบจึงยกเว้นข้อมูลจากประเภทแคมเปญหรือกลุ่มโฆษณาที่ไม่ได้ใช้คีย์เวิร์ดสำหรับโฆษณา Search ออกจากผลลัพธ์ ซึ่งรวมถึงแต่ไม่จำกัดเพียง
    • โฆษณา Search แบบไดนามิก (DSA): เนื่องจากเป้าหมาย DSA อิงตามเนื้อหาเว็บไซต์ ไม่ใช่คีย์เวิร์ด
    • แคมเปญ Shopping: ซึ่งใช้กลุ่มสินค้าแทนคีย์เวิร์ด
    • แคมเปญ Performance Max: แม้ว่า Performance Max อาจแสดงใน Search แต่โดยปกติแล้วการรายงานจะไม่แบ่งกลุ่มตามเกณฑ์คีย์เวิร์ดเดียวกัน
  • เครือข่าย Display: ช่อง segments.keyword.* เกี่ยวข้องกับคีย์เวิร์ดที่ใช้ในเครือข่าย Search แต่จะไม่แบ่งกลุ่มตามคีย์เวิร์ดในเครือข่าย Display หรือวิธีการกำหนดเป้าหมายอื่นๆ ในเครือข่าย Display

กฎสำหรับกลุ่มในส่วนคำสั่ง 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-01-31'
ถูกต้อง: การค้นหานี้จะแสดงชื่อแคมเปญและการคลิกที่แบ่งกลุ่มตามวันที่สำหรับทุกวันในช่วงวันที่ที่รวมอยู่
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date >= '2024-01-01'
  AND segments.date <= '2024-01-31'
ถูกต้อง: คำค้นหานี้จะแสดงชื่อแคมเปญและการคลิกที่แบ่งกลุ่มตามเดือนสำหรับทุกวันในช่วงวันที่ที่รวมอยู่
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date >= '2024-01-01'
  AND segments.date <= '2024-01-31'
ถูกต้อง: คำค้นหานี้จะแสดงชื่อแคมเปญและการคลิกที่แบ่งกลุ่มตามไตรมาส แล้วแบ่งตามเดือนสำหรับทุกเดือนในช่วงปีที่รวมอยู่
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year >= 2020
  AND segments.year <= 2024