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

การแบ่งกลุ่มซึ่งอยู่ใน 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 จะมีลักษณะดังนี้

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