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

การแบ่งกลุ่มซึ่งอยู่ใน 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"
      }
    },
    ...
  ]
}

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

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

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

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