Merchant Center Query Language

판매자 센터 쿼리 언어 (MCQL)는 SQL과 유사한 쿼리 언어입니다. MCQL을 Merchant Reports API와 함께 사용하면 제품과 경쟁 시장의 실적 데이터를 검색할 수 있습니다.

문법

다음은 MCQL 문법 참조 (정규 표현식 표기법)입니다.

Query            -> SelectClause FromClause? WhereClause? OrderByClause? LimitClause?
SelectClause     -> SELECT FieldName (, FieldName)*
FromClause       -> FROM TableName
WhereClause      -> WHERE Condition (AND Condition)*
OrderByClause    -> ORDER BY Ordering (, Ordering)*
LimitClause      -> LIMIT PositiveInteger

Condition        -> FieldName Operator Value | FieldName BETWEEN Value AND Value
Operator         -> = | != | > | >= | < | <= | <> | IN | NOT IN |
                    CONTAINS ANY | CONTAINS ALL | CONTAINS NONE | DURING |
                    LIKE | NOT LIKE | REGEXP_MATCH | NOT REGEXP_MATCH
Value            -> Number | NumberList | String | StringList | Function
Ordering         -> FieldName (ASC | DESC)?

FieldName        -> [a-z] ([a-zA-Z0-9._])*
TableName        -> [A-Z] ([a-zA-Z_])*

StringList       -> ( String (, String)* )
NumberList       -> ( Number (, Number)* )

PositiveInteger  -> [1-9] ([0-9])*
Number           -> -? [0-9]+ (. [0-9] [0-9]*)?
String           -> (' Char* ') | (" Char* ")
Function         -> LAST_14_DAYS | LAST_30_DAYS | LAST_7_DAYS |
                    LAST_BUSINESS_WEEK | LAST_MONTH | LAST_WEEK_MON_SUN |
                    LAST_WEEK_SUN_SAT | THIS_MONTH | THIS_WEEK_MON_TODAY |
                    THIS_WEEK_SUN_TODAY | TODAY | YESTERDAY

다음 기호를 사용할 수 있습니다.

  • ?는 선택적 요소를 나타냅니다.
  • *은 0 이상을 의미합니다. +는 1 이상을 의미합니다.
  • (xxxxxx)는 그룹화를 나타냅니다.
  • [a-z0-9]는 문자 범위를 나타냅니다.
  • |는 '또는'을 의미합니다.

대소문자 구분

대부분의 MCQL 연산자는 대소문자를 구분합니다.

연산자 대소문자 구분
= 또는 != 대소문자 구분
(제외) 대소문자 구분
(NOT) LIKE 대소문자 구분
포함 (...) 대소문자 구분
REGEXP_MATCH 둘 다(선택사항)

조항

다음은 MCQL로 쿼리할 수 있는 절입니다.

SELECT

SELECT 절은 검색할 쉼표로 구분된 필드 목록을 사용합니다.

사용 중인 뷰에서 아무 입력란이나 선택할 수 있습니다. 다음은 선택할 수 있는 필드의 몇 가지 예입니다.

단일 요청으로 여러 필드 유형을 쿼리할 수 있습니다. 예를 들면 다음과 같습니다.

SELECT
  date,
  marketingMethod,
  impressions,
  clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'

FROM

FROM 절은 요청에서 데이터를 가져올 테이블을 지정합니다. FROM 절에는 필드를 하나만 지정할 수 있습니다. FROM 절은 모든 쿼리에 필요합니다.

WHERE

WHERE 절을 사용하여 요청의 데이터를 필터링합니다. WHERE 절은 성능 쿼리에 필요합니다. 모든 세그먼트 필드 및 추가 metrics 필드(SELECT 절에 지정한 경우)로 필터링할 수 있습니다.

다음은 WHERE를 사용하여 지정된 기간 (8월)의 노출만 반환하는 예입니다.

SELECT offerId, impressions
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'

AND 연산자를 사용하여 단일 쿼리에서 여러 조건으로 필터링할 수 있습니다. 완전한 조건 사이에는 AND를 사용합니다(예: WHERE marketingMethod != "ADS" AND marketingMethod != "ORGANIC"). 단일 조건(예: WHERE marketingMethod != "ADS" AND "ORGANIC")의 값 사이에는 AND를 사용할 수 없습니다.

다음은 8월에 ADS 마케팅 메서드에서 클릭수가 100회를 넘는 제품당 클릭수를 반환하는 예입니다.

SELECT offerId, clicks
FROM ProductPerformanceView
WHERE clicks > 100
  AND marketingMethod = 'ADS'
  AND date BETWEEN '2020-08-01' AND '2020-08-31'

WHERE 절은 OR를 지원하지 않습니다. 연산자는 대소문자를 구분합니다. 연산자의 전체 목록은 문법을 참조하세요.

ORDER BY (선택사항)

ORDER BY 절을 사용하면 지정된 순서로 결과를 검색할 수 있습니다.

fieldName로 주문을 지정한 다음 ASC 또는 DESC를 지정합니다. 쿼리의 SELECT 절에 지정된 필드를 기준으로만 정렬할 수 있습니다. 지정하지 않으면 ORDER BY의 기본값은 ASC입니다.

다음 쿼리는 반환된 행을 클릭수에 따라 내림차순으로 정렬합니다.

SELECT offerId, clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY clicks DESC

쉼표로 구분된 목록을 사용하여 ORDER BY 절에 여러 필드를 지정할 수 있습니다.

예를 들어 다음 쿼리의 결과는 offerId에 따라 오름차순으로 정렬된 다음 노출수를 기준으로 내림차순으로 정렬된 후 클릭수에 따라 내림차순으로 정렬됩니다.

SELECT offerId, impressions, clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY
  offerId,
  impressions DESC,
  clicks DESC

LIMIT

LIMIT 절을 사용하면 반환할 결과 수를 지정할 수 있습니다.

다음은 사용 가능한 행이 더 있어도 50개의 결과만 반환하는 예입니다.

SELECT offerId, impressions
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY impressions DESC
LIMIT 50

긴 결과 목록을 처리하려면 pageSize 필드를 사용합니다.

기간

MCQL을 사용하면 맞춤 기간 또는 상대적 기간을 지정할 수 있습니다. WHERE 절을 사용하여 모든 성능 쿼리에 대한 date 범위를 지정해야 합니다.

커스텀

ISO 8601(YYYY-MM-DD) 날짜는 다음 형식으로 지정할 수 있습니다.

  • date BETWEEN '2021-01-01' AND '2021-01-31'
  • date >= '2021-01-01' AND date <= '2021-01-31'

작은따옴표 (') 또는 큰따옴표(")를 사용하여 날짜 문자열을 정의할 수 있습니다.

친척

BETWEENAND 대신 DURING를 사용하여 상대적 기간(예: LAST_30_DAYS 또는 THIS_MONTH)을 지정할 수 있습니다.

WHERE date DURING LAST_30_DAYS

사용 가능한 상대 기간의 전체 목록은 문법을 참고하세요.