Ngôn ngữ truy vấn Google Ads

Thuật ngữ chính

Tài nguyên
Một thực thể trong Google Ads, chẳng hạn như campaign hoặc ad_group.
Phân đoạn
Một phương diện dùng để nhóm dữ liệu, chẳng hạn như segments.date hoặc segments.device. Khi các phân khúc được đưa vào mệnh đề SELECT cùng với các chỉ số, các chỉ số sẽ được chia theo phân khúc.
Chỉ số
Một chỉ số đo lường hiệu suất, chẳng hạn như metrics.impressions hoặc metrics.clicks.
Tài nguyên được phân bổ
Một tài nguyên được kết hợp ngầm với tài nguyên chính trong mệnh đề FROM, cho phép bạn chọn các thuộc tính của tài nguyên đó cùng với các thuộc tính của tài nguyên chính.

Truy vấn thông tin về tài nguyên hoặc siêu dữ liệu

Ngôn ngữ truy vấn Google Ads có thể truy vấn API Google Ads để biết các loại thông tin sau:

  • Các tài nguyên và thuộc tính, phân đoạn cũng như chỉ số liên quan của chúng bằng cách sử dụng GoogleAdsService Search hoặc SearchStream: Kết quả từ một truy vấn GoogleAdsService là danh sách các thực thể GoogleAdsRow, trong đó mỗi GoogleAdsRow đại diện cho một tài nguyên.

    Nếu bạn yêu cầu bất kỳ thuộc tính hoặc chỉ số nào, thì hàng cũng sẽ bao gồm các trường đó. Nếu bạn yêu cầu phân đoạn, thì phản hồi cũng sẽ cho thấy một hàng bổ sung cho mỗi bộ giá trị phân đoạn-tài nguyên.

  • Siêu dữ liệu về các trường và tài nguyên có sẵn trong GoogleAdsFieldService: Dịch vụ này cung cấp một danh mục các trường có thể truy vấn cùng với thông tin cụ thể về khả năng tương thích và loại của các trường đó.

    Kết quả của một truy vấn GoogleAdsFieldService là một danh sách các thực thể GoogleAdsField, trong đó mỗi GoogleAdsField chứa thông tin chi tiết về trường được yêu cầu.

Để biết thêm thông tin về cấu trúc truy vấn, hãy xem phần Cấu trúc truy vấn và Ngữ pháp ngôn ngữ truy vấn của Google Ads.

Truy vấn các thuộc tính tài nguyên

Sau đây là ví dụ về một truy vấn cơ bản cho các thuộc tính của tài nguyên chiến dịch minh hoạ cách trả về mã chiến dịch, tên và trạng thái:

SELECT
  campaign.id,
  campaign.name,
  campaign.status
FROM campaign
ORDER BY campaign.id

Truy vấn này sắp xếp theo mã chiến dịch. Mỗi GoogleAdsRow kết quả đại diện cho một đối tượng campaign được điền sẵn các trường đã chọn, bao gồm cả resource_name của chiến dịch.

Để biết những trường khác có sẵn cho các truy vấn về chiến dịch, hãy tham khảo tài liệu tham khảo về Campaign.

Truy vấn các chỉ số

Bên cạnh các thuộc tính đã chọn cho một tài nguyên nhất định, bạn cũng có thể truy vấn các chỉ số liên quan:

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  metrics.impressions
FROM campaign
WHERE campaign.status = 'PAUSED'
  AND metrics.impressions > 1000
ORDER BY campaign.id

Truy vấn này chỉ lọc những chiến dịch có trạng thái là PAUSED và có hơn 1.000 lượt hiển thị, đồng thời sắp xếp theo mã chiến dịch. Mỗi GoogleAdsRow thu được sẽ có một trường metrics được điền sẵn các chỉ số đã chọn.

Để xem danh sách các chỉ số có thể truy vấn, hãy tham khảo tài liệu về Metrics.

Truy vấn cho phân đoạn

Bên cạnh các thuộc tính đã chọn cho một tài nguyên nhất định, bạn cũng có thể truy vấn các phân đoạn có liên quan:

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  metrics.impressions,
  segments.date
FROM campaign
WHERE campaign.status = 'PAUSED'
  AND metrics.impressions > 1000
  AND segments.date DURING LAST_30_DAYS
ORDER BY campaign.id

Tương tự như việc truy vấn chỉ số, truy vấn này chỉ lọc những chiến dịch có trạng thái là PAUSED và có hơn 1.000 lượt hiển thị. Tuy nhiên, truy vấn này phân đoạn dữ liệu theo ngày. Điều này dẫn đến việc mỗi GoogleAdsRow kết quả đại diện cho một bộ gồm chiến dịch và phân đoạn ngày. Phân đoạn sẽ chia các chỉ số đã chọn, nhóm theo từng phân đoạn trong mệnh đề SELECT.

Để xem danh sách các phân đoạn có thể truy vấn, hãy tham khảo tài liệu về Segments.

Trong một truy vấn cho một tài nguyên nhất định, bạn có thể kết hợp với các tài nguyên liên quan khác nếu có. Những tài nguyên có liên quan này được gọi là "tài nguyên được ghi nhận". Bạn có thể kết hợp với các tài nguyên được phân bổ một cách gián tiếp bằng cách chọn một thuộc tính trong truy vấn.

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  bidding_strategy.name
FROM campaign
ORDER BY campaign.id

Truy vấn này không chỉ chọn các thuộc tính chiến dịch mà còn kéo các thuộc tính liên quan từ mỗi chiến dịch đã chọn. Mỗi GoogleAdsRow thu được sẽ đại diện cho một đối tượng campaign được điền sẵn các thuộc tính chiến dịch đã chọn, cũng như thuộc tính chiến lược đặt giá thầu đã chọn bidding_strategy.name.

Để biết những tài nguyên được phân bổ có sẵn cho các truy vấn về chiến dịch, hãy tham khảo tài liệu tham khảo về Campaign.

Các phương pháp hay nhất

  • Chỉ chọn những trường bạn cần để tránh thời gian phản hồi dài và hết thời gian chờ.
  • Sử dụng LIMIT trong quá trình phát triển và kiểm thử để tránh xử lý các tập hợp kết quả lớn.
  • Áp dụng bộ lọc trong mệnh đề WHERE để giảm thiểu việc truyền dữ liệu và kích thước phản hồi.
  • Sử dụng GoogleAdsFieldService để kiểm tra khả năng tương thích của trường và các loại dữ liệu trước khi tạo các truy vấn phức tạp.
  • Xin lưu ý rằng một số trường, đặc biệt là những trường liên quan đến lượng lớn dữ liệu hoặc các phép tính phức tạp, có thể làm tăng chi phí truy vấn.

Thay đổi dựa trên kết quả truy vấn

Khi truy vấn một tài nguyên nhất định, bạn có thể lấy ngay những kết quả được trả về dưới dạng đối tượng, sửa đổi các đối tượng đó rồi gửi lại cho phương thức đột biến trong dịch vụ của tài nguyên đó. Sau đây là một quy trình mẫu:

  1. Thực hiện một truy vấn cho tất cả các chiến dịch PAUSED có số lượt hiển thị lớn hơn 1.000.
  2. Lấy đối tượng Campaign từ trường campaign của mỗi GoogleAdsRow trong phản hồi.
  3. Thay đổi trạng thái của từng chiến dịch từ PAUSED thành ENABLED.
  4. Gọi CampaignService.MutateCampaigns bằng các chiến dịch đã sửa đổi và một FieldMask tương ứng để cập nhật các chiến dịch đó.

Siêu dữ liệu trường

Các truy vấn được gửi đến GoogleAdsFieldService là để truy xuất siêu dữ liệu trường. Bạn có thể dùng thông tin này để hiểu cách kết hợp các trường trong một truy vấn. Vì dữ liệu có sẵn từ API và API này cung cấp siêu dữ liệu cần thiết để xác thực hoặc tạo một truy vấn, nên nhà phát triển có thể thực hiện việc này theo phương thức lập trình. Sau đây là một truy vấn điển hình cho siêu dữ liệu:

SELECT
  name,
  category,
  selectable,
  filterable,
  sortable,
  selectable_with,
  data_type,
  is_repeated
WHERE name = "<INSERT_RESOURCE_OR_FIELD>"

Bạn có thể thay thế <INSERT_RESOURCE_OR_FIELD> trong truy vấn này bằng một tài nguyên (chẳng hạn như customer hoặc campaign) hoặc trường (chẳng hạn như campaign.id, metrics.impressions hoặc ad_group.id).

Để biết danh sách các trường có thể truy vấn, hãy tham khảo tài liệu về GoogleAdsField.

Sự khác biệt theo phiên bản

Mặc dù cú pháp, mệnh đề và toán tử của Ngôn ngữ truy vấn Google Ads là giống nhau trên tất cả các phiên bản API Google Ads được hỗ trợ (phiên bản 23, 24 và 25), nhưng danh mục tài nguyên, phân đoạn, chỉ số và hành vi báo cáo có thể truy vấn sẽ khác nhau theo phiên bản chính. Truy vấn GoogleAdsFieldService tại điểm cuối phiên bản API mục tiêu để kiểm tra các trường và quy tắc tương thích cho phiên bản đó:

  • Tài nguyên mục tiêu vòng đời: Trong phiên bản 25 trở lên, tất cả mục tiêu vòng đời (Thu nạp khách hàng mới, Giữ chân khách hàng và Giữ chân khách hàng thân thiết) đều được truy vấn từ tài nguyên goal và campaign_goal_config hợp nhất, thay thế customer_lifecycle_goal và campaign_lifecycle_goal (được dùng cho mục tiêu Thu nạp khách hàng mới trong phiên bản 24 trở xuống, cùng với goal và campaign_goal_config cho mục tiêu Giữ chân khách hàng).
  • Các chỉ số về lượt xem thành phần mở rộng URL cuối cùng: Trong phiên bản 25 trở lên, việc truy vấn final_url_expansion_asset_view sẽ trả về tất cả các chỉ số có thể chọn cho lượt xem. Trong phiên bản 24 trở về trước, các phản hồi chỉ bao gồm metrics.conversions và metrics.conversions_value cho chiến dịch Tối đa hoá hiệu suất và metrics.impressions cho chiến dịch Tìm kiếm.
  • Báo cáo về sản phẩm Mua sắm cho Chiến dịch quảng cáo ứng dụng: Trong phiên bản 24 trở lên, tài nguyên shopping_product sẽ trả về các hàng sản phẩm cho Chiến dịch quảng cáo ứng dụng ngoài chiến dịch Mua sắm, chiến dịch Tối đa hoá hiệu suất, chiến dịch Tạo nhu cầu và chiến dịch Video (trong phiên bản 23, Chiến dịch quảng cáo ứng dụng sẽ bị loại trừ khỏi kết quả shopping_product).
  • Tài nguyên, phân khúc và chỉ số dành riêng cho từng phiên bản:
    • Phiên bản 25 trở lên: Bao gồm các tài nguyên đo lường mức tăng (chẳng hạn như lift_measurement_config), các phân khúc như segments.ad_sub_format_type và segments.loyalty_membership, cũng như các chỉ số về mức độ tương tác trên YouTube (metrics.youtube_likes, metrics.youtube_comments và metrics.youtube_shares). Xoá local_services_lead.contact_details.email (có thể chọn trong phiên bản 24 trở xuống).
    • Phiên bản 24 trở lên: Bao gồm tài nguyên cart_data_sales_view, segments.conversion_attribution_event_type trên shopping_performance_view, segments.mobile_device_platform và segments.ad_network_type trên performance_max_placement_view. Xoá campaign.video_brand_safety_suitability (được thay thế bằng customer.video_brand_safety_suitability), segments.ad_sub_network_type trên campaign_budget và segments.click_type trên ad_group_asset, campaign_asset và customer_asset (chỉ có thể chọn trong phiên bản 23).
  • Mã lỗi tìm kiếm theo ngày chi tiết: Những truy vấn phân đoạn theo segments.date, segments.week hoặc segments.hour (hoặc lọc theo phạm vi ngày nhỏ hơn một tháng) ngoài khoảng thời gian tìm kiếm 37 tháng sẽ trả về DateRangeError.REQUESTED_DATE_GRANULARITY_NOT_SUPPORTED trong phiên bản 24 trở lên (hoặc DateRangeError.UNKNOWN trong phiên bản 23). Hãy xem phần Khoảng thời gian để biết thông tin chi tiết.

Ví dụ về mã

Thư viện ứng dụng có các ví dụ về cách sử dụng Ngôn ngữ truy vấn Google Ads trong GoogleAdsService. Thư mục các thao tác cơ bản có các ví dụ như GetCampaigns, GetKeywords và SearchForGoogleAdsFields.