AWQL(AdWords Query Language)

AWQL은 가장 많이 사용하는 애드워즈 API 서비스에 대해 쿼리를 수행하는 SQL류의 언어이며 query 메소드가 포함된 모든 서비스를 지원합니다. DataService는 데이터 유형에 따라 2개의 쿼리 메소드를 가집니다.

AWQL은 공개 보고서 쿼리에서도 사용할 수 있습니다.

AWQL 사용

서비스 호출

AWQL은 SQL 명령을 모두 지원하지는 않지만 SQL을 기반으로 합니다. 지원되지 않는 명령 중 주목할 만한 것은 JOINGROUP BY 절입니다.

다음은 CampaignService에 전송하려는 쿼리의 예입니다.

SELECT     CampaignId, CampaignName
WHERE      Ctr > 0.05
           AND Impressions < 100
DURING     20120201,20120228
ORDER BY   CampaignName DESC
LIMIT      0,50

동일한 내용을 query 메소드가 포함된 AWQL 쿼리 문자열로 작성하면 다음과 같습니다.

CampaignPage p = client.query("SELECT CampaignId,CampaignName
                WHERE Ctr > 0.05 AND Impressions < 100
                DURING 20120201,20120228 ORDER BY CampaignName DESC LIMIT 0,50");

참고:

  • 요청이 전송된 서비스에서 데이터 소스가 이미 결정되었으므로 FROM 절은 필요하지 않습니다.
  • DURING 절은 서비스 호출에서 선택사항입니다.
  • 키워드(예: WHERE)는 대소문자를 구분하지 않지만 필드(열) 이름(예: CampaignName) 및 리터럴(예: YESTERDAY)은 대소문자를 구분합니다.
  • WHERE 절에 INNOT_IN 연산자를 사용할 경우 항목이 10,000개로 제한됩니다.

공개 보고서

AWQL은 공개 보고서 다운로드 요청에서도 사용할 수 있습니다. 공개 보고서의 경우처럼 "__rdxml" POST 매개변수에 XML 코드를 지정하는 대신 다음 두 매개변수를 제공합니다.

  1. '__rdquery'": AWQL 쿼리 문자열을 포함합니다.
  2. "__fmt": 보고서 다운로드 형식을 정의합니다.

예(POST 본문):

__rdquery=SELECT+Name+FROM+KEYWORDS_PERFORMANCE_REPORT+DURING+20120101,20120625&__fmt=CSV

공개 보고서의 경우 몇 가지 사항이 다르게 사용됩니다.

  • 쿼리의 FROM 절에 보고서 유형을 포함시켜야 합니다(예: SELECT Name FROM KEYWORDS_PERFORMANCE_REPORT). FROM은 서비스 호출 시에는 허용되지 않지만 보고서 다운로드 시에는 필요합니다.
  • 보고서 기간은 쿼리에 필수적으로 사용되는 DURING 절에 정의되며 다음 두 가지 방법으로 지정할 수 있습니다.
    1. 일반적인 AWQL 구문을 사용한 맞춤설정 기간(예: SELECT Name FROM KEYWORDS_PERFORMANCE_REPORT DURING 20120101,20120625)
    2. 기간 유형(예: SELECT Name FROM KEYWORDS_PERFORMANCE_REPORT DURING LAST_7_DAYS). 참고: DateRangeTypes인 ALL_TIMECUSTOM_DATE는 지원되지 않습니다.
  • ORDER BYLIMIT(정렬 및 페이징)는 공개 보고서에서 지원되지 않습니다. 이러한 절을 쿼리에 포함시키면 오류가 생성됩니다.
  • 노출수가 없는 행을 삭제하려면 'WHERE Impressions > 0' 조건을 포함시킵니다.

공식 문법

다음은 참조용 공식 AWQL 문법입니다.

Statement        -> SelectClause FromClause1 WhereClause?
                                 DuringClause2 OrderByClause? LimitClause?
SelectClause     -> SELECT ColumnList
FromClause       -> FROM SourceName
WhereClause      -> WHERE ConditionList
DuringClause     -> DURING DateRange
OrderByClause    -> ORDER BY Ordering (, Ordering)*
LimitClause      -> LIMIT StartIndex , PageSize

ConditionList    -> Condition (AND Condition)*
Condition        -> ColumnName Operator Value
Value            -> ValueLiteral | String | ValueLiteralList | StringList
Ordering         -> ColumnName (DESC | ASC)?
DateRange        -> DateRangeLiteral | Date,Date
ColumnList       -> ColumnName (, ColumnName)*
ColumnName       -> Literal
SourceName       -> Literal
StartIndex       -> Non-negative integer
PageSize         -> Non-negative integer

Operator         -> = | != | > | >= | < | <= | IN | NOT_IN | STARTS_WITH | STARTS_WITH_IGNORE_CASE |
                    CONTAINS | CONTAINS_IGNORE_CASE | DOES_NOT_CONTAIN | DOES_NOT_CONTAIN_IGNORE_CASE
String           -> StringSingleQ | StringDoubleQ
StringSingleQ    -> '(char)'
StringDoubleQ    -> "(char)"
StringList       -> [ String (, String)* ]
ValueLiteral     -> [a-zA-Z0-9_.]*
ValueLiteralList -> [ ValueLiteral (, ValueLiteral)* ]3
Literal          -> [a-zA-Z0-9_]*
DateRangeLiteral -> TODAY | YESTERDAY | LAST_7_DAYS | THIS_WEEK_SUN_TODAY | THIS_WEEK_MON_TODAY | LAST_WEEK |
                    LAST_14_DAYS | LAST_30_DAYS | LAST_BUSINESS_WEEK | LAST_WEEK_SUN_SAT | THIS_MONTH
Date             -> 8-digit integer: YYYYMMDD

참고:

  • 1 FROM은 서비스 호출 시에는 허용되지 않지만 보고서 다운로드 시에는 필요합니다.
  • 2 DURING은 서비스 호출 시에는 선택사항이지만 보고서 다운로드 시에는 필요합니다.
  • 3 ValueLiteralList에는 대괄호([ ])가 필요합니다. 다른 경우에 사용된 대괄호는 범위를 나타냅니다.
  • ? 는 선택사항을 나타내고 *는 하나 이상을 나타냅니다.
  • SELECT...FROM...WHERE...DURING...ORDER BY...LIMIT...순으로 사용합니다.
  • 모든 키워드는 대소문자를 구분하지 않습니다.
  • 열 이름 및 리터럴은 대소문자를 구분합니다.
  • 공백은 무관합니다.
  • 큰따옴표와 작은따옴표 모두 문자열에서 사용할 수 있습니다. 이스케이프 시퀀스는 \", \', \\입니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.