Phân đoạn

Bạn có thể triển khai tính năng phân đoạn (có trong giao diện người dùng Google Ads dưới dạng một trình đơn riêng) trong API Google Ads chỉ bằng cách thêm trường thích hợp vào truy vấn. Ví dụ: việc thêm segments.device vào truy vấn sẽ tạo ra một báo cáo có một hàng cho mỗi tổ hợp thiết bị và tài nguyên được chỉ định trong mệnh đề FROM, cũng như các giá trị thống kê (lượt hiển thị, lượt nhấp, lượt chuyển đổi, v.v.) được phân chia giữa các tổ hợp đó.

Trong khi giao diện người dùng Google Ads chỉ có thể sử dụng một phân khúc tại một thời điểm, thì với API, bạn có thể chỉ định nhiều phân khúc trong cùng một truy vấn.

SELECT
  campaign.name,
  campaign.status,
  segments.device,
  metrics.impressions
FROM campaign

Kết quả của việc gửi truy vấn này đến GoogleAdsService.SearchStream sẽ có dạng như chuỗi JSON sau:

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

Lưu ý rằng trong kết quả mẫu ở trên, các thuộc tính của đối tượng đầu tiên và đối tượng thứ hai (bao gồm cả tên tài nguyên) đều giống nhau. Số lượt hiển thị được phân đoạn theo thiết bị, do đó, có thể trả về hai hoặc nhiều đối tượng cho cùng một chiến dịch.

Phân đoạn ngầm ẩn

Ban đầu, mỗi báo cáo được phân đoạn theo tài nguyên được chỉ định trong mệnh đề FROM. Trường resource_name của tài nguyên trong mệnh đề FROM sẽ được trả về và các chỉ số được phân đoạn theo trường này, ngay cả khi trường resource_name không được đưa vào truy vấn một cách rõ ràng. Ví dụ: khi bạn chỉ định ad_group làm tài nguyên trong mệnh đề FROM, thì ad_group.resource_name sẽ tự động được trả về và các chỉ số sẽ ngầm phân đoạn theo tài nguyên đó ở cấp ad_group.

Vì vậy, đối với truy vấn này,

SELECT metrics.impressions
FROM ad_group

bạn sẽ nhận được một chuỗi JSON như sau:

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

Xin lưu ý rằng trường resource_name của adGroup luôn được trả về vì ad_group được chỉ định là tài nguyên trong mệnh đề FROM.

Các trường phân khúc có thể chọn

Không phải trường phân khúc nào cũng có thể chọn được cho một tài nguyên nhất định trong mệnh đề FROM. Ví dụ: chúng ta sẽ tiếp tục truy vấn từ tài nguyên ad_group. Để có thể chọn một trường phân khúc từ tài nguyên ad_group, trường đó cần tồn tại trong danh sách Segments cho ad_group. Danh sách Segments là phần màu vàng của bảng các trường có sẵn trên trang siêu dữ liệu của tài nguyên ad_group.

Tài nguyên phân đoạn

Khi chọn trong số một số tài nguyên, bạn có thể chọn tham gia ngầm vào các tài nguyên có liên quan bằng cách chọn các trường của tài nguyên đó cùng với các trường của tài nguyên trong mệnh đề FROM. Bạn có thể tìm thấy các tài nguyên có liên quan này trong danh sách Attributed Resources trên tài nguyên trong trang siêu dữ liệu của mệnh đề FROM. Trong trường hợp tài nguyên ad_group, bạn sẽ thấy rằng bạn cũng có thể chọn các trường từ tài nguyên campaign. Trường resource_name của bất kỳ Attributed Resources nào có ít nhất 1 trường trong mệnh đề SELECT sẽ tự động được trả về, ngay cả khi trường resource_name không được đưa vào truy vấn một cách rõ ràng.

Tương tự như việc chọn trường Attributed Resource, bạn cũng có thể chọn trường Segmenting Resource. Nếu một tài nguyên nhất định có danh sách Segmenting Resources trên trang siêu dữ liệu, thì việc chọn các trường từ một trong các tài nguyên được liệt kê đó sẽ khiến truy vấn được phân đoạn thêm theo resource_name được trả về của Segmenting Resource đó. Ví dụ: bạn sẽ thấy tài nguyên campaign được liệt kê là Segmenting Resource cho tài nguyên campaign_budget. Việc chọn bất kỳ trường chiến dịch nào, chẳng hạn như campaign.name, từ tài nguyên campaign_budget sẽ không chỉ khiến trường campaign.name được trả về mà còn khiến trường campaign.resource_name được trả về và phân đoạn.

Khả năng chọn giữa các phân khúc và chỉ số

Một trường phân đoạn nhất định có thể không tương thích với một số trường phân đoạn khác hoặc với một số trường chỉ số. Để xác định những trường phân khúc nào tương thích với nhau, bạn có thể xem danh sách selectable_with của các phân khúc trong mệnh đề SELECT.

Trong trường hợp tài nguyên ad_group, bạn có thể chọn hơn 50 phân khúc có sẵn. Tuy nhiên, danh sách selectable_with cho segments.hotel_check_in_date là một tập hợp các phân đoạn tương thích nhỏ hơn nhiều. Điều này có nghĩa là nếu thêm trường segments.hotel_check_in_date vào mệnh đề SELECT, bạn sẽ giới hạn các phân khúc còn lại mà bạn có thể chọn ở giao điểm của hai danh sách này.

Khi thêm một số phân khúc, các chỉ số trong hàng tóm tắt có thể giảm
Khi segments.keyword.info.match_type được thêm vào truy vấn bằng FROM ad_group_ad, phân khúc đó sẽ yêu cầu truy vấn chỉ lấy các hàng dữ liệu có từ khoá và xoá mọi hàng không liên kết với từ khoá. Trong trường hợp này, các chỉ số sẽ thấp hơn vì sẽ loại trừ mọi chỉ số không phải từ khoá.

Quy tắc cho các phân khúc trong mệnh đề WHERE

Khi một phân đoạn nằm trong mệnh đề WHERE, phân đoạn đó cũng phải nằm trong mệnh đề SELECT. Quy tắc này có ngoại lệ là các phân đoạn ngày sau đây, được gọi là phân đoạn ngày chính:

  • segments.date
  • segments.week
  • segments.month
  • segments.quarter
  • segments.year

Quy tắc cho các trường phân khúc ngày chính

Các phân đoạn segments.date, segments.week, segments.month, segments.quartersegments.year hoạt động như sau:

  • Bạn có thể lọc các phân đoạn này trong mệnh đề WHERE mà không cần xuất hiện trong mệnh đề SELECT.

  • Nếu bất kỳ phân đoạn nào trong số này nằm trong mệnh đề SELECT, thì bạn phải chỉ định một phạm vi ngày có hạn bao gồm các phân đoạn ngày chính trong mệnh đề WHERE (các phân đoạn ngày không cần phải giống với các phân đoạn ngày được chỉ định trong SELECT).

Ví dụ

Không hợp lệ:segments.date nằm trong mệnh đề SELECT, nên bạn cần chỉ định một phạm vi ngày có giới hạn trong mệnh đề WHERE cho segments.date, segments.week, segments.month, segments.quarter hoặc segments.year.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
Đúng: Truy vấn này trả về tên chiến dịch và số lượt nhấp tích luỹ trong phạm vi ngày. Xin lưu ý rằng segments.date không cần xuất hiện trong mệnh đề SELECT.
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Đúng: Truy vấn này trả về tên chiến dịch và số lượt nhấp được phân đoạn theo ngày cho tất cả các ngày trong phạm vi ngày.
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Hợp lệ: Truy vấn này trả về tên chiến dịch và số lượt nhấp được phân đoạn theo tháng cho tất cả các ngày trong phạm vi ngày.
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2024-01-01'
  AND segments.date < '2024-02-01'
Đúng: Truy vấn này trả về tên chiến dịch và số lượt nhấp được phân đoạn theo quý, sau đó là theo tháng cho tất cả các tháng trong phạm vi năm.
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2019
  AND segments.year < 2024

search_term_view

Xin lưu ý rằng đối với tài nguyên search_term_view, tài nguyên này cũng được phân đoạn ngầm theo nhóm quảng cáo, chứ không chỉ theo cụm từ tìm kiếm, như được phản ánh trong cấu trúc của tên tài nguyên, trong đó cũng bao gồm nhóm quảng cáo. Do đó, bạn sẽ thấy một số hàng dường như trùng lặp với cùng một cụm từ tìm kiếm xuất hiện trong kết quả, nhưng thực tế, các hàng này thuộc về một nhóm quảng cáo khác:

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

Mặc dù hai đối tượng được trả về trong ví dụ này có vẻ như trùng lặp, nhưng tên tài nguyên của chúng thực sự khác nhau, đặc biệt là trong phần "nhóm quảng cáo". Điều này có nghĩa là cụm từ tìm kiếm "google photos" được phân bổ cho hai nhóm quảng cáo (mã 222222222233333333333) vào cùng một ngày (15/6/2024). Do đó, chúng ta có thể kết luận rằng API đã hoạt động như dự kiến và không trả về đối tượng trùng lặp trong trường hợp này.