쿼리 구조

리소스, 세그먼트, 측정항목 필드에 대한 쿼리는 GoogleAdsService Search 또는 SearchStream 메서드로 전송할 수 있습니다. Google Ads 쿼리 언어로 쿼리를 구성하려면 언어 문법을 사용하여 빌드하세요. Google Ads 쿼리 언어에 대한 일반적인 개요는 Google Ads 쿼리 언어 개요를 참고하세요. 쿼리는 여러 절로 구성됩니다.

  • SELECT
  • FROM
  • WHERE
  • ORDER BY
  • LIMIT
  • PARAMETERS

절은 필드 이름, 리소스 이름, 연산자, 조건, 순서를 사용하여 올바른 데이터를 선택하는 데 도움이 됩니다. 단일 쿼리로 결합하면 Google Ads API에 요청을 보낼 수 있습니다.

조항

다음 섹션에서는 각 Google Ads Query Language 절의 목적과 문법을 설명합니다.

SELECT

SELECT 절은 요청에서 가져올 필드 집합을 지정합니다. SELECT는 쉼표로 구분된 리소스 필드, 세그먼트 필드, 측정항목 목록을 가져와 응답에 값을 반환합니다. SELECT 절은 쿼리에 필수입니다.

다음 샘플 쿼리는 지정된 리소스의 속성을 선택하는 예시를 보여줍니다.

SELECT
  campaign.id,
  campaign.name
FROM campaign

단일 요청에서 다양한 필드 유형을 요청할 수 있습니다. 예를 들면 다음과 같습니다.

SELECT
  campaign.id,
  campaign.name,
  bidding_strategy.id,
  bidding_strategy.name,
  segments.device,
  segments.date,
  metrics.impressions,
  metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
  • 기본 리소스 필드
    • campaign.id
    • campaign.name
  • 기여도 부여 리소스 필드
    • bidding_strategy.id
    • bidding_strategy.name
  • 세그먼트 필드
    • segments.device
    • segments.date
  • 측정항목
    • metrics.impressions
    • metrics.clicks
  • 선택할 수 없는 필드를 쿼리합니다. 이러한 필드에는 selectable 메타데이터 속성이 false로 표시됩니다.
  • 반복되는 입력란의 속성 선택 이러한 필드에는 is_repeated 메타데이터 속성이 true로 표시됩니다.
  • FROM 절에서 지정된 리소스에 사용할 수 없는 필드를 선택합니다. 일부 리소스의 속성은 함께 선택할 수 없으며, FROM 절의 리소스에는 모든 측정항목 및 세그먼트의 하위 집합만 사용할 수 있습니다.
  • 서로 호환되지 않는 세그먼트 또는 측정항목을 선택하는 경우 자세한 내용은 세분화를 참조하세요.

위 조건과 관련된 정보는 참고 문서 또는 GoogleAdsFieldService에서 확인할 수 있습니다.

FROM

FROM 절은 반환할 기본 리소스를 지정합니다. FROM 절의 리소스는 지정된 쿼리의 다른 모든 절에서 사용할 수 있는 필드를 정의합니다. FROM 절에는 단일 리소스만 지정할 수 있습니다. FROM 절은 GoogleAdsService Search 또는 SearchStream 메서드에 대한 쿼리에 필수입니다. 하지만 GoogleAdsFieldService를 사용할 때는 FROM 절을 지정하면 안 됩니다.

지정된 쿼리의 FROM 절에는 하나의 리소스만 존재할 수 있지만, 기여 분석된 리소스의 필드도 사용할 수 있습니다. 이러한 리소스는 FROM 절의 리소스와 암시적으로 조인되므로 SELECT 절에 속성을 추가하여 값을 반환하기만 하면 됩니다. 모든 리소스에 기여 분석 리소스가 있는 것은 아닙니다. 다음 예에서는 광고 그룹에서 광고 그룹 ID와 캠페인 ID를 모두 요청할 수 있습니다.

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

기본 리소스의 resource_name 필드는 항상 반환됩니다. 다음 예시에서는 쿼리에서 명시적으로 선택되지 않았지만 ad_group.resource_name가 응답에 포함됩니다.

SELECT ad_group.id
FROM ad_group

하나 이상의 필드가 선택된 경우 기여 분석 리소스에도 동일하게 적용됩니다. 예를 들어 campaign.resource_name는 다음 쿼리의 응답에 포함됩니다.

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

WHERE

WHERE 절은 요청의 데이터를 필터링할 때 적용할 조건을 지정합니다. WHERE 절을 사용할 때는 AND로 구분된 조건을 하나 이상 지정합니다. 조건은 일반적으로 field_name Operator value 패턴을 따르거나 BETWEEN value AND value, IS NULL 또는 IS NOT NULL를 사용합니다. WHERE 절은 쿼리에서 선택사항입니다.

다음 예시에서는 WHERE를 사용하여 지정된 기간의 측정항목을 반환합니다.

SELECT
  campaign.id,
  campaign.name,
  metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

여러 조건을 결합하여 데이터를 필터링할 수 있습니다. 이 예에서는 지난 30일 동안 모바일에서 노출이 발생한 모든 캠페인의 클릭수를 요청합니다.

SELECT
  campaign.id,
  campaign.name,
  segments.device,
  metrics.clicks
FROM campaign
WHERE metrics.impressions > 0
  AND segments.device = 'MOBILE'
  AND segments.date DURING LAST_30_DAYS

WHERE 절의 세그먼트는 SELECT 절에도 있어야 합니다. 단, 핵심 날짜 세그먼트라고 하는 다음 날짜 세그먼트는 예외입니다.

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

다음 쿼리에서는 segments.date가 선택됩니다. 이 세그먼트는 핵심 날짜 세그먼트이므로 핵심 날짜 세그먼트로 구성된 WHERE 절에 유한한 기간을 제공해야 합니다.

SELECT
  campaign.id,
  campaign.name,
  segments.date,
  metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

위 조건을 충족하는 모든 세그먼트는 segments.date, segments.week, segments.month, segments.quarter, segments.year입니다. 이러한 세그먼트가 선택된 경우 WHERE 절에서 하나 이상 사용해야 합니다.

날짜 필터링에 대한 자세한 내용은 기간을 참조하세요.

필터링할 때는 연산자의 대소문자 구분을 염두에 두세요. 자세한 내용은 대소문자 구분을 참고하세요.

연산자의 전체 목록은 언어 문법을 참조하세요.

ORDER BY

ORDER BY 절은 결과가 반환되는 순서를 지정합니다. 이렇게 하면 필드 이름을 기준으로 데이터를 오름차순 또는 내림차순으로 정렬할 수 있습니다. 각 순서는 field_name 다음에 ASC 또는 DESC로 지정됩니다. ASC 또는 DESC이 지정되지 않으면 순서는 기본적으로 ASC입니다. ORDER BY 절은 쿼리에서 선택사항입니다.

다음 쿼리는 반환된 캠페인을 클릭수 기준으로 내림차순 정렬합니다.

SELECT
  campaign.name,
  metrics.clicks
FROM campaign
ORDER BY metrics.clicks DESC

쉼표로 구분된 목록을 사용하여 ORDER BY 절에 여러 필드를 지정할 수 있습니다. 정렬은 쿼리에 지정된 순서와 동일한 순서로 발생합니다. 예를 들어 광고 그룹 데이터를 선택하는 이 쿼리에서는 결과가 캠페인 이름별로 오름차순으로 정렬된 다음 노출수별로 내림차순으로 정렬된 다음 클릭수별로 내림차순으로 정렬됩니다.

SELECT
  campaign.name,
  ad_group.name,
  metrics.impressions,
  metrics.clicks
FROM ad_group
ORDER BY
  campaign.name,
  metrics.impressions DESC,
  metrics.clicks DESC

LIMIT

LIMIT 절을 사용하면 반환할 결과 수를 지정할 수 있습니다. 이는 결과의 하위 집합만 필요한 경우에 유용합니다.

예를 들어 LIMIT은 다음 쿼리의 총 결과 수를 제한할 수 있습니다.

SELECT
  campaign.name,
  ad_group.name,
  segments.device,
  metrics.impressions
FROM ad_group
ORDER BY metrics.impressions DESC
LIMIT 50

PARAMETERS

PARAMETERS 절을 사용하면 요청의 메타 파라미터를 지정할 수 있습니다. 이러한 매개변수는 반환되는 행의 종류에 영향을 미칠 수 있습니다.

지원되는 메타 매개변수는 다음과 같습니다.

include_drafts

초안 항목을 반환하려면 include_drafts를 true로 설정합니다. 기본값은 false입니다.

예를 들어 다음 쿼리는 일반 캠페인과 함께 캠페인 초안을 가져옵니다.

SELECT campaign.name
FROM campaign
PARAMETERS include_drafts = true

omit_unselected_resource_names

SELECT 절에서 명시적으로 요청하지 않는 한 응답에서 각 리소스 유형의 리소스 이름을 생략하려면 omit_unselected_resource_names를 true로 설정합니다. 기본값은 false입니다.

쿼리 반환된 리소스
SELECT
  campaign.name,
  customer.id
FROM campaign
  • campaign.resource_name
  • customer.resource_name

omit_unselected_resource_names는 기본적으로 false이므로 모든 resource_name 필드가 반환됩니다.

SELECT
  campaign.name,
  customer.id
FROM campaign
PARAMETERS omit_unselected_resource_names = true

없음

omit_unselected_resource_names는 true로 지정되며 campaign.resource_name 및 customer.resource_name는 SELECT 절의 일부가 아닙니다.

SELECT
  campaign.name,
  campaign.resource_name
FROM campaign
PARAMETERS omit_unselected_resource_names = true
  • campaign.resource_name

omit_unselected_resource_names은 true로 지정되고 campaign.resource_name는 SELECT 절의 일부로 요청됩니다.

추가 언어 규칙

각 절의 예시 외에도 Google Ads 쿼리 언어는 다음 동작을 지원합니다.

  • 기본 리소스 필드는 쿼리의 SELECT 절에 필요하지 않습니다. 예를 들어 하나 이상의 기본 리소스 필드를 선택하지 않고도 이를 사용하여 데이터를 필터링할 수 있습니다.

    SELECT campaign.id
    FROM ad_group
    WHERE ad_group.status = 'PAUSED'
    
  • 특정 리소스에 대해 측정항목을 독점적으로 선택할 수 있습니다. 쿼리에는 리소스의 다른 필드가 필요하지 않습니다.

    SELECT
      metrics.impressions,
      metrics.clicks,
      metrics.cost_micros
    FROM campaign
    
  • 리소스 필드 또는 측정항목 없이 분류 필드를 선택할 수 있습니다.

    SELECT segments.device FROM campaign
    
  • resource_name 필드(예: campaign.resource_name)를 사용하여 데이터를 필터링하거나 정렬할 수 있습니다.

    SELECT
      campaign.id,
      campaign.name
    FROM campaign
    WHERE campaign.resource_name = 'customers/1234567/campaigns/987654'