ShopifyQL 쿼리 편집기 사용

새로운 Shopify 분석과 함께 ShopifyQL을 사용하면 자체 비즈니스 데이터베이스를 탐색하고 비즈니스에 대한 보다 심층적인 이해를 제공하는 데이터를 검색할 수 있습니다.

ShopifyQL 또는 Shopify 쿼리 언어는 상거래를 위해 구축된 Shopify의 쿼리 언어입니다. 쿼리 언어는 데이터베이스에서 데이터를 요청하고 검색하는 데 사용됩니다. 스토어의 데이터는 정의된 열과 행으로 구조화된 데이터베이스 테이블에 저장됩니다. 열은 포함된 정보 유형(예: 판매액)을 정의하고, 행은 데이터 유형의 실제 값(예: 판매액 $2,450 USD)을 지정합니다.

의미 있는 형식으로 데이터를 검색하려면 데이터베이스에 쿼리를 제출해야 합니다. 쿼리는 특정 데이터를 답변으로 요구하는 질문으로, 키워드와 해당 매개 변수로 구성됩니다. 특정 매개 변수와 여러 키워드를 조합하여 쿼리를 작성합니다. 쿼리를 작성하고 나면 쿼리를 실행하여 보고서를 받을 수 있습니다.

용어집

차원, 키워드, 연산자와 같은 ShopifyQL 용어에 대한 정의입니다.
기간정의
치수데이터를 분류하여 더욱 명확하게 표시될 수 있도록 데이터를 분류하는 속성입니다. 치수의 일반적인 예로는 시간, 제품, 위치가 있습니다. 치수는 ShopifyQL에서 매개 변수로 사용됩니다.
키워드쿼리를 지시하는 명령 역할을 하는 ShopifyQL 구문입니다.
메트릭데이터의 정량적 측정입니다. 메트릭의 일반적인 예로는 총 판매액, 주문 수, 총 수익이 있습니다.
매개 변수쿼리에 포함될 데이터베이스 요소나 세부 정보를 식별하는 ShopifyQL 구문입니다.
연산자쿼리의 일부분으로 사용되는 예약된 단어나 문자입니다. 예로는 STARTS WITH, >= 또는 last_week가 있습니다.

ShopifyQL 구문

ShopifyQL을 사용하여 유효한 보고서 쿼리를 만들 때는 다음 요구 사항을 충족해야 합니다.

  • 전체 쿼리를 한 줄에 배치하거나 별도의 줄에 배치할 수 있습니다.
  • 하나 이상의 FROMSHOW 키워드를 적절한 매개 변수와 함께 포함해야 합니다. 다른 모든 키워드와 매개 변수는 선택 사항입니다.
  • 쿼리의 모든 키워드는 다음 순서로 포함되어야 합니다.
    1. FROM
    2. SHOW
    3. WHERE
    4. GROUP BY
    5. WITH TOTALS, GROUP_TOTALS, PERCENT_CHANGE
    6. TIMESERIES
    7. HAVING
    8. SINCE & UNTIL, 또는 DURING
    9. COMPARE TO & 필요 시 UNTIL
    10. ORDER BY
    11. LIMIT
    12. VISUALIZE & TYPE

다음은 올바른 구문을 사용하여 쿼리로 작성된 ShopifyQL의 예입니다. 키워드는 굵게 표시되어 있고 해당 매개 변수는 일반 플레이스 홀더를 사용하여 포함되어 있으며 선택적인 매개 변수는 괄호 안에 있습니다.

FROM table_name1, table_name2, ...
SHOW column1 { AS alias }, column2 { AS alias }, ...
WHERE condition
GROUP BY dimension
TIMESERIES time_dimension
WITH TOTALS, GROUP_TOTALS, PERCENT_CHANGE
HAVING condition
SINCE date_offset
UNTIL date_offset
DURING named_date_range
COMPARE TO [date_offset, ...]
ORDER BY column { ASC | DESC }
LIMIT number { OFFSET number }
VISUALIZE [alias1, alias2, ...]
  TYPE { visualization_type }
  LIMIT number

ShopifyQL 키워드

ShopifyQL 쿼리는 높은 수준의 데이터 분석 정보를 위한 기본적 쿼리에서부터 세부적인 분석 정보를 위한 포괄적 쿼리까지 다양합니다. 각 키워드에는 쿼리를 작성하는 특정 기능이 있습니다.

ShopifyQL 키워드 및 설명 목록입니다.
키워드설명
FROM데이터를 선택할 데이터 세트 표를 지정합니다.
SHOW데이터 세트 표에서 추출할 열을 선택합니다.
WHERE행이 선택되기 위해 충족해야 하는 조건(하나 이상)을 정의합니다.
GROUP BY추출한 데이터를 차원 또는 시간 차원별로 그룹화합니다.
WITH특정 ShopifyQL 키워드의 동작을 수정합니다.
TIMESERIES시간 차원별로 그룹화를 구분하고 쿼리에서 날짜를 백필합니다.
HAVING쿼리 결과를 그룹화한 후 필터링합니다.
SINCE과거의 지정된 시간 이후의 데이터를 표시합니다. 흔히 UNTIL과 함께 사용됩니다.
UNTIL과거의 지정된 시간까지의 데이터를 표시합니다. 흔히 SINCE 또는 COMPARE TO와 함께 사용됩니다.
DURING과거의 지정된 시간 동안의 데이터를 표시합니다.
COMPARE TO과거의 지정된 시간과 비교하는 데이터를 표시합니다.
ORDER BY데이터를 정렬할 열을 지정합니다.
LIMIT표시되는 데이터의 행 수를 제한합니다.
VISUALIZE데이터를 선 또는 막대 시각화로 표시합니다. TYPE을 사용하여 원하는 시각화를 지정할 수 있습니다.
AS열 이름을 선택한 이름으로 바꾸는 선택적 키워드입니다.

FROM 및 SHOW

가장 간단한 ShopifyQL 쿼리를 생성하려면 FROMSHOW의 두 가지 키워드만 해당 순서로 작성하면 됩니다. FROM 다음에 하나 이상의 테이블 이름 매개 변수가 오면 쿼리할 테이블을 지정합니다. SHOW 다음에 열 이름 매개 변수가 원하는 수만큼 오면 선택할 열을 지정합니다.

SHOW 는 보고서에서 메트릭과 차원이 반환되는 순서를 지정하는 데 사용할 수 있습니다.

예를 들어 다음 쿼리를 작성하여 총 판매액의 합계를 반환할 수 있습니다.

FROM sales
SHOW total_sales

WHERE

WHERE 키워드를 사용하면 전체 ShopifyQL 쿼리에 차원 필터를 적용할 수 있습니다. 필터는 비교 연산자(예: 초과 >), 논리 연산자(예: AND 또는 NOT), 부분 문자열 및 배열 일치(예: STARTS WITHCONTAINS)를 모두 사용하여 수정할 수 있습니다.

WHERE 조건은 다음 요구 사항을 충족해야 합니다.

  • 값은 큰따옴표(")가 아닌 작은따옴표(')로 묶어야 합니다.
  • 조건은 산술을 포함할 수 없습니다.
  • 조건은 메트릭이 아닌 차원만 참조할 수 있습니다.

예를 들어 청구지 국가를 기준으로 필터링된 총 판매액을 반환하려는 경우 쿼리는 다음과 같습니다.

FROM sales
SHOW total_sales, product_title, product_type, product_vendor
WHERE billing_country='Canada'

위의 예와 같이 WHERE 매개 변수가 SHOW 키워드에 포함되지 않은 경우에도 해당 파라미터를 사용하여 결과 집합을 필터링할 수 있습니다. 이 경우 billing_country가 결과 집합에 포함되지 않더라도 총 판매액은 캐나다의 주문에 대해서만 필터링됩니다.

비교 연산자

WHERE 키워드는 비교 연산자를 사용하여 데이터를 필터링합니다. 위의 예에서는 =을 사용하여 쿼리가 특정 값을 필터링하도록 지정했지만, 다른 연산자를 사용할 수도 있습니다.

초과 또는 같음과 같은 ShopifyQL 비교 연산자 목록입니다.
비교 연산자설명
=같음
!=같지 않음
<작음
>
<=이하
>=이상

논리 연산자

데이터를 더 필터링하기 위해 쿼리에 논리 연산자를 추가할 수 있습니다. ShopifyQL 연산자는 다음과 같습니다.

AND, OR, NOT과 같은 ShopifyQL 논리 연산자 목록입니다.
논리 연산자설명
AND AND로 구분된 조건이 충족되는 모든 행을 포함하도록 필터링합니다.
OR OR로 구분된 조건 중 하나가 충족되는 모든 행을 포함하도록 필터링합니다.
NOT조건이 충족되지 않는 행(예: 지정된 값을 포함하지 않은 행)만 포함하도록 필터링합니다.

논리 연산자를 추가하여 WHERE 키워드와 함께 여러 필터를 사용할 수 있습니다.

청구 주소가 캐나다이고 할인이 적용된 모든 말린 복숭아에 대한 주문의 순 판매액을 월별로 그룹화하기 위해 데이터 세트 쿼리 예에 추가할 쿼리는 다음과 같습니다.

FROM sales
SHOW total_sales, product_title, product_type, product_vendor
WHERE billing_country='Canada' AND product_title='Dried Peaches' AND discounts > 0

GROUP BY

메트릭차원으로 세분화하려면(예: 지역별로 판매액 그룹화) GROUP BY 키워드를 사용하세요. GROUP BY 키워드는 모든 차원 매개 변수와 함께 사용할 수 있습니다.

예를 들어 청구지 국가 및 지역별로 총 판매액을 그룹화하는 쿼리는 다음과 같이 작성됩니다.

FROM sales
SHOW total_sales
GROUP BY billing_country, billing_region

다음은 시간 차원을 사용하여 월별 총 판매액을 표시하는 또 다른 쿼리 예입니다.

FROM sales
SHOW total_sales
GROUP BY month

위의 쿼리는 매출이 없는 달을 반환하지 않습니다. 완전하고 중단 없는 기간을 반환하는 쿼리를 작성하려면 TIMESERIES 키워드를 사용하세요.

FROM sales
SHOW total_sales
TIMESERIES month
SINCE last_year
UNTIL today

시간 차원

다음은 데이터를 그룹화하는 데 사용할 수 있는 시간 치수입니다.

초, 분, 요일과 같은 ShopifyQL 시간 차원 목록입니다.
연산자설명
second시간의 초로 그룹화합니다.
minute시간의 분으로 그룹화합니다.
hour일의 시간별로 그룹화합니다.
day일별로 그룹화합니다.
week주간별로 그룹화합니다.
month월별로 그룹화합니다.
quarter달력 분기별로 그룹화합니다.
year연도로 그룹화합니다.
hour_of_day24시간별(1,2,...,24)로 그룹화합니다.
day_of_week요일별(M, T, W,...,S)로 그룹화합니다.
week_of_year주간별(1,2,...,52)로 그룹화합니다.
month_of_year연도별 월(1, 2, ..., 12)로 그룹화합니다.

TIMESERIES

시간 차원별로 그룹화를 구분하고, 시간에 따른 메트릭을 확인하고, 쿼리에서 날짜를 백필하여 데이터가 존재하지 않는 시계열 그래프로 전환하려는 경우 TIMESERIES 키워드를 사용할 수 있습니다.

다음 예에서는 지난 15일 동안 누락된 총 판매액 데이터를 백필합니다.

FROM sales
SHOW total_sales
GROUP BY product_title, billing_country
TIMESERIES day
SINCE -15d

TIMESERIES 및 열 순서

TIMESERIES가 지정되었는지, GROUP BY 또는 SHOW 값에 존재하는지 여부에 따라 열의 순서가 변경될 수 있습니다.

TIMESERIES와 ShopifyQL에서 GROUP BY 또는 SHOW를 사용하여 열 순서가 표시되는 방식의 예입니다.
TIMESERIESSHOWGROUP BY결과
지정됨없음없음 TIMESERIES가 첫 번째 차원입니다.
지정됨없음있음시간 차원 위치는 GROUP BY에서의 위치로 정의됩니다.
지정됨있음있음시간 차원 위치는 SHOW에서의 위치로 정의됩니다.
지정되지 않음없음있음시간 차원 위치는 GROUP BY에서의 위치로 정의됩니다. 데이터가 백필되지 않습니다.
지정되지 않음있음있음시간 차원 위치는 SHOW에서의 위치로 정의됩니다. 데이터가 백필되지 않습니다.
지정되지 않음있음없음 SHOWGROUP BY에 있는 차원만 참조할 수 있으므로 구문 오류가 발생합니다.

HAVING

WHERE과 마찬가지로 HAVING 키워드를 사용하여 쿼리 결과를 그룹화한 후 필터링할 수 있습니다. 필터에는 하나의 조건이 있을 수 있지만, 조건은 비교 연산자(예: 초과 >) 및 논리 연산자(예: AND 또는 NOT)를 모두 사용하여 수정할 수 있습니다. WHERE 키워드와 달리 HAVING은 별칭, 집계 함수, 그룹화 열을 참조할 수 있습니다.

HAVING 은 쿼리에 GROUP BY 또는 TIMESERIES 절을 포함해야 합니다. HAVINGGROUP BY 또는 TIMESERIES를 사용하여 쿼리 결과를 그룹화한 후에 필터링하기 때문입니다.

다음 예에서는 총 판매액이 1000보다 크고 5000보다 작은 각 제품의 총 판매액을 필터링합니다.

FROM sales
SHOW total_sales
GROUP BY product_title
HAVING total_sales > 1000 AND total_sales < 5000

WITH

WITH 키워드는 다른 특정 ShopifyQL 키워드의 동작을 수정합니다. 사용 가능한 수정 사항은 3가지입니다.

  • TOTALS: 메트릭이 차원별로 분석되기 전에 최상위 메트릭 요약을 제공합니다.
  • GROUP_TOTALS: 집계별 그룹이 있는 경우 모든 하위 그룹에 대한 총계를 제공합니다.
  • PERCENT_CHANGE: COMPARE TO의 각 비교 열에 변화율 메트릭을 추가합니다. 이 한정자가 있으면 각 비교 메트릭 열에 변화율을 포함하는 새 열이 추가됩니다.

TOTALS

TOTALS 한정자는 메트릭이 다른 차원별로 분석되기 전에 최상위 메트릭 요약을 제공합니다. WITH TOTALS를 사용하면 쿼리는 메트릭 이름과 열 이름의 일부로 "총계"가 포함된 결과 집합의 추가 열로 총계를 반환합니다. 각 행에는 해당하는 총계가 모두 포함됩니다.

예를 들어 다음 쿼리는 총 판매액의 총계를 표시합니다.

FROM sales
SHOW gross_sales, net_sales, total_sales
TIMESERIES day
WITH TOTALS

이 쿼리는 다음과 유사한 보고서를 반환할 수 있습니다.

WITH TOTALS를 사용하는 ShopifyQL 판매액 테이블 예
총 판매량순 판매액총 판매량총 판매량 총계순 판매액 총계총 판매액 총계
2024-01-0114761524
2024-01-0225861524
2024-01-0336961524

GROUP_TOTALS

GROUP_TOTALS 한정자는 집계별 그룹이 있는 경우 모든 하위 그룹에 대한 총계를 제공합니다. WITH GROUP_TOTALS를 사용하면 쿼리는 메트릭 이름, 합산되는 차원, 열 이름의 일부로 "총계"가 포함된 결과 집합의 추가 열로 총계를 반환합니다. 각 행에는 해당하는 총계가 모두 포함됩니다.

예를 들어 다음 쿼리는 청구지 국가별 총 판매액을 표시합니다.

FROM sales
SHOW customer_id, total_sales
GROUP BY customer_id, billing_country
WITH TOTALS, GROUP_TOTALS

이 쿼리는 다음과 유사한 보고서를 반환할 수 있습니다.

GROUP_TOTALS를 사용하는 ShopifyQL 판매액 테이블 예
국가고객 ID총 판매량총 판매액 국가 총계총 판매액 총계
미국1101
미국null-111
캐나다1111

PERCENT_CHANGE

PERCENT_CHANGE 한정자는 COMPARE TO를 사용할 때 각 비교 열에 변화율 메트릭을 추가합니다. WITH PERCENT_CHANGE를 사용하면 쿼리는 메트릭 이름과 열 이름의 일부로 "변화율"이 포함된 결과 집합의 추가 열로 각 비교 메트릭의 변화율을 반환합니다.

변화율을 계산하는 데 사용되는 공식은 다음과 같습니다: (base_column - comparison_column) * 100 / abs(comparison_column)

예를 들어 다음 쿼리는 SINCECOMPARE TO를 사용하여 이전 달의 일별 순 판매액을 지난해의 같은 달과 비교하고 변화율 열을 포함합니다.

FROM sales
SHOW net_sales
TIMESERIES day
WITH PERCENT_CHANGE
SINCE -1m
UNTIL -0m
COMPARE TO previous_year

결과 보고서의 열에는 일, 순 판매액, 비교일, 순 판매액 일 비교, 순 판매액 비교, 순 판매액 변화율이 포함됩니다.

SINCE 및 UNTIL

날짜 또는 일부 기간으로 쿼리를 필터링하려는 경우 SINCEUNTIL 키워드와 관련 매개 변수를 사용할 수 있습니다. 이러한 키워드는 기간만 필터링하므로 고유합니다. SINCE를 사용하고 UNTIL 값을 정의하지 않으면 시간 범위의 끝은 기본적으로 today로 설정됩니다.

예를 들어 다음은 어제까지 지난 12개월 동안의 캐나다 순 판매액을 찾는 쿼리입니다.

FROM orders
SHOW net_sales
WHERE billing_country = 'Canada'
GROUP BY month ALL
SINCE -12m
UNTIL yesterday

오프셋 연산자

특정 날짜 또는 날짜 및 시간 오프셋을 기준으로 필터링할 수 있습니다. ShopifyQL 오프셋 연산자는 다음과 같습니다.

초, 분 또는 특정 날짜로 오프셋과 같은 ShopifyQL 오프셋 연산자 목록입니다.
오프셋 연산자설명
-{#}s쿼리가 실행된 날짜 및 시간으로부터 몇 초 전입니다.
-{#}min쿼리가 실행된 날짜 및 시간으로부터 몇 분 전입니다.
-{#}h쿼리가 실행된 날짜 및 시간으로부터 몇 시간 전입니다.
-{#}d쿼리가 실행된 날짜 및 시간으로부터 몇 일 전입니다.
-{#}w쿼리가 실행된 날짜 및 시간으로부터 몇 주 전입니다.
-{#}m쿼리가 실행된 날짜 및 시간으로부터 몇 달 전입니다.
-{#}q쿼리가 실행된 날짜 및 시간으로부터 몇 분기 전입니다.
-{#}y쿼리가 실행된 날짜 및 시간으로부터 몇 년 전입니다.
yyyy-MM-dd특정 날짜입니다.
yyyy-MM-ddThh:mm:ss특정 날짜 및 시간입니다.

날짜 함수

다음 함수는 SINCEUNTIL 문에서 특정 날짜를 제외한 모든 날짜 범위 연산자와 결합하여 사용할 수 있습니다. "startOf..." 함수는 SINCE와 함께 사용하면 관련 시간 단위(분, 시, 일, 주, 월, 분기, 연도)의 시작까지 자르고, "endOf..." 함수는 UNTIL와 함께 사용하면 관련 시간 단위의 끝까지 자릅니다.

유효한 결과를 반환하려면 날짜 함수 단위와 연산자 단위가 일치해야 합니다. 예를 들어 startOfMonth(-1m)은 올바르지만 startOfMonth(-1d)는 올바르지 않습니다.

하루 끝 또는 분기 시작과 같은 ShopifyQL 날짜 함수 목록입니다.
날짜 함수설명
now쿼리가 실행된 날짜 및 시간입니다.
startOfMinute(-{#}min)날짜 범위 연산자를 대상 분의 시작으로 자릅니다.
endOfMinute(-{#}min)날짜 범위 연산자를 대상 분의 끝으로 자릅니다.
startOfHour(-{#}h)날짜 범위 연산자를 대상 시의 시작으로 자릅니다.
endOfHour(-{#}h)날짜 범위 연산자를 대상 시의 끝으로 자릅니다.
startOfDay(-{#}d)날짜 범위 연산자를 대상 일의 시작으로 자릅니다.
endOfDay(-{#}d)날짜 범위 연산자를 대상 일의 끝으로 자릅니다.
startOfWeek(-{#}w)날짜 범위 연산자를 대상 주의 시작으로 자릅니다.
endOfWeek(-{#}w)날짜 범위 연산자를 대상 주의 끝으로 자릅니다.
startOfMonth(-{#}m)날짜 범위 연산자를 대상 월의 시작으로 자릅니다.
endOfMonth(-{#}m)날짜 범위 연산자를 대상 월의 끝으로 자릅니다.
startOfQuarter(-{#}q)날짜 범위 연산자를 대상 분기의 시작으로 자릅니다.
endOfQuarter(-{#}q)날짜 범위 연산자를 대상 분기의 끝으로 자릅니다.
startOfYear(-{#}y)날짜 범위 연산자를 대상 연도의 시작으로 자릅니다.
endOfYear(-{#}y)날짜 범위 연산자를 대상 연도의 끝으로 자릅니다.

예를 들어 오늘이 2022년 11월 8일이면 다음 쿼리를 사용하여 2020년 1월 1일부터 2022년 10월 31일까지의 총 판매량을 반환할 수 있습니다.

FROM sales
SHOW gross_sales
SINCE startOfYear(-2y)
UNTIL endOfMonth(-1m)

DURING

DURING 키워드는 날짜 범위에 대한 날짜 필터링을 간소화하며 SINCEUNTIL 사용을 대체합니다. DURING 키워드를 사용하여 알려진 기간(예: 연도 또는 특정 월) 또는 매년 날짜가 다른 날짜 범위(예: 블랙 프라이데이 사이버 먼데이)에 대한 쿼리 결과를 필터링할 수 있습니다. 예를 들어:

FROM sales
SHOW total_sales
GROUP BY day
DURING bfcm2021

명명된 날짜 범위 연산자

DURING 은 다음과 같은 명명된 날짜 범위 연산자를 허용합니다.

오늘, 어제 또는 이번 주와 같은 ShopifyQL 명명된 날짜 범위 연산자 목록입니다.
명명된 날짜 범위 연산자설명
today쿼리가 실행된 날짜입니다.
yesterday쿼리가 실행된 시간으로부터 24시간 전의 기간입니다.
this_week이번 주입니다.
this_month이번 달입니다.
this_quarter이번 분기입니다.
this_year이번 연도입니다.
last_week지난 주입니다.
last_month지난 달입니다.
last_quarter지난 분기입니다.
last_year지난 연도입니다.
bfcmYYYY지정된 연도의 블랙 프라이데이 사이버 먼데이 범위입니다. 예를 들어 bfcm2022는 2022년 11월 25일부터 28일까지의 결과를 반환합니다.

COMPARE TO

COMPARE TO 키워드를 사용하면 SINCEUNTIL 또는 DURING의 날짜 범위에서의 데이터와 COMPARE TO의 데이터를 비교할 수 있습니다.

COMPARE TO 키워드는 다음과 같은 유형의 매개 변수와 함께 사용할 수 있습니다.

  • 절대 날짜(예: 2023-01-01): 지정된 기간의 메트릭과 절대 날짜의 동일 기간에 대한 비교 메트릭이 포함됩니다.
  • 명명된 날짜(예: last_week): 지정된 기간의 메트릭과 명명된 날짜의 동일 기간에 대한 비교 메트릭이 포함됩니다.

    • COMPARE TO에서 사용하는 연산자는 DURING에서 사용하는 연산자와 시간 길이가 동일할 필요가 없습니다. UNTIL 값이 제공되지 않으면 DURING에 지정된 값과 동일한 시간 범위를 계산합니다. 예를 들어 DURING this_week COMPARE TO last_month는 이번 주의 데이터를 지난달 초에 시작하는 1주일 기간과 비교합니다.
  • 오프셋 날짜(예: -3q): 지정된 기간의 메트릭과 상대 날짜의 동일 기간에 대한 비교 메트릭이 포함됩니다.

  • 여러 날짜 비교(예: -1y, -2y): 특정 날짜 범위의 데이터를 다른 여러 날짜 범위와 비교합니다. 이는 여러 기간에 걸친 변경 사항을 추적하려는 경우에 유용할 수 있습니다.

  • COMPARE TO를 사용하는 쿼리에서 날짜 차원을 사용하는 경우 GROUP BY가 아닌 TIMESERIES를 사용해야 합니다.

다음 예는 지난달의 순 판매액을 지난해의 같은 달과 비교합니다.

FROM sales
SHOW net_sales, product_title
GROUP BY product_title
TIMESERIES day
SINCE -1m
UNTIL -0m
COMPARE TO previous_year

상대 날짜 범위 연산자

상대 연산자는 지정된 기간만큼 뒤로 이동한 기준 날짜 범위와 동일한 시간 길이를 반환합니다. COMPARE TO에는 명명된 날짜 범위 연산자 외에도 다음 상대 연산자를 사용할 수 있습니다.

이전 기간 또는 지난해와 같은 ShopifyQL 상대 날짜 범위 연산자 목록입니다.
상대 날짜 범위 연산자설명
previous_period기준 날짜 범위보다 한 기간 전입니다.
previous_year기준 날짜 범위보다 1년 전입니다.
previous_quarter기준 날짜 범위보다 1분기 전입니다.
previous_month기준 날짜 범위보다 1개월 전입니다.
previous_week기준 날짜 범위보다 1주일 전입니다.
previous_day기준 날짜 범위보다 하루 전입니다.
previous_hour기준 날짜 범위보다 1시간 전입니다.
previous_minute기준 날짜 범위보다 1분 전입니다.
previous_second기준 날짜 범위보다 1초 전입니다.

ORDER BY

ORDER BY 키워드와 해당 매개 변수(오름차순의 경우 ASC, 내림차순의 경우 DESC)를 사용하여 쿼리에서 반환된 데이터를 정렬하는 방식을 지정할 수 있습니다.

여러 필드를 포함하여 ORDER BY 키워드의 쿼리에 포함할 메트릭이나 차원을 지정할 수 있습니다.

예를 들어 다음 쿼리는 지난 1년 동안 모든 제품 및 이형 상품에 대한 순 판매액을 반환합니다. 결과는 먼저 제품 이름별 알파벳순으로 정렬된 다음 제품 유형별 알파벳 역순으로 정렬됩니다.

FROM sales
SHOW net_sales
GROUP BY product_title, product_type
SINCE -1y
UNTIL today
ORDER BY product_title, product_type DESC

메트릭이나 차원을 작성하는 순서는 중요합니다. ORDER BY에 여러 값을 지정하면 정렬은 지정된 순서대로 각 메트릭이나 차원에 적용됩니다.

TIMESERIES 및 열 순서

쿼리에 TIMESERIESORDER BY가 포함되어 있는지 여부에 따라 열의 순서가 변경될 수 있습니다.

ShopifyQL을 사용하여 ORDER BY가 있는 경우 TIMESERIES 및 열 순서의 예입니다.
TIMESERIESORDER BY결과
있음없음결과는 TIMESERIES 차원을 기준으로 정렬됩니다.
있음있음결과는 TIMESERIES 차원을 기준으로 정렬된 다음 ORDER BY 차원을 기준으로 정렬됩니다.
없음있음결과는 ORDER BY 차원을 기준으로 정렬됩니다.
없음없음결과는 첫 번째 SHOW 열을 기준으로 정렬됩니다.

LIMIT

LIMIT 키워드를 사용하면 쿼리가 반환하는 최대 행 수를 지정할 수 있습니다. 이는 단순히 각 열의 데이터가 표시되는 방식을 파악하려고 하거나 쿼리에서 값을 반환하는 데 오래 걸릴 수 있는 대규모 보고서의 경우에 유용합니다. LIMITORDER BY를 결합하여 상위 및 하위 목록을 생성할 수 있습니다.

LIMIT 값을 지정하지 않으면 쿼리의 기본값은 1000행입니다.

선택 사항인 { OFFSET # } 매개 변수를 사용하여 행 데이터를 반환하기 전에 특정 수의 행을 건너뛸 수도 있습니다. 결과 문구의 형식은 LIMIT 15 { OFFSET 5 }와 유사합니다.

이 예에서는 LIMITORDER BY를 사용하여 지난 3개월 동안 판매한 상위 10개 제품 목록을 생성합니다.

FROM sales
SHOW gross_sales as total_gross_sales
GROUP BY product_title
SINCE -3m
UNTIL today
ORDER BY total_gross_sales DESC
LIMIT 10

VISUALIZE 및 TYPE

VISUALIZE 키워드를 사용하면 그래픽 시각화로 데이터를 표시하는 ShopifyQL 쿼리를 작성할 수 있습니다. 지원되는 시각화에는 다음 값이 포함됩니다.

  • bar
  • stacked_bar
  • stacked_horizontal_bar
  • line
  • simple_bar
  • stacked_area
  • single_metric
  • donut
  • list
  • list_with_dimension_values
  • horizontal_bar
  • cohort
  • single_stacked_bar
  • funnel
  • grouped_bar
  • horizontal_grouped_bar
  • table
  • grid

TYPE 키워드는 선택 사항이며 단일 유형의 시각화와 함께 사용해야 합니다. TYPE이 쿼리에 포함되어 있지 않은 경우 ShopifyQL은 자동으로 쿼리에 가장 적합한 시각화를 결정합니다. 쿼리를 작성된 대로 시각화할 수 없는 경우 ShopifyQL은 테이블 형식의 데이터를 반환합니다.

VISUALIZE 는 또한 렌더링할 데이터 요소의 수를 제한하는 매개 변수인 LIMIT 키워드를 허용합니다.

예를 들어 추세선을 사용하여 지난 1년 동안의 판매 추세를 월별로 시각화할 수 있습니다. 이 쿼리는 지난 1년의 월별 총 판매량을 표시하는 시계열 차트를 반환합니다. 총 판매량은 단일 선으로 나타나며 X축은 월로, Y축은 총 판매량으로 표시됩니다.

FROM sales
SHOW gross_sales
TIMESERIES month
SINCE -1y
UNTIL today
VISUALIZE gross_sales TYPE line

AS

키워드 AS는 열이나 집계 함수의 반환 값의 이름을 바꾸거나 별칭을 제공할 수 있는 선택적 키워드입니다.

AS 는 하나의 매개 변수만 허용합니다. 별칭 이름에 공백이 있는 경우 별칭을 큰따옴표(")로 묶어야 합니다.

FROM sales
SHOW total_sales AS "My Total Sales"

기타 ShopifyQL 함수 및 연산자

ShopifyQL에는 다음과 같은 추가 연산자와 함수가 포함되어 있습니다.

수학 연산자

ShopifyQL을 사용하면 데이터의 메트릭으로 산술 연산을 수행할 수 있습니다. 사용 가능한 수학 연산자는 다음과 같습니다.

더하기 및 빼기를 포함한 ShopifyQL 수학 연산자 목록입니다.
수학 연산자설명
+두 숫자를 더합니다.
-두 숫자를 뺍니다.
*두 숫자를 곱합니다.
/두 숫자를 나눕니다.

예를 들어 다음 쿼리는 지난 1년 동안 각 지역의 주문 금액을 계산합니다. 메트릭과 함께 수학 연산자를 사용하는 경우 AS 키워드를 사용하여 새 메트릭에 새 이름을 지정할 수 있습니다.

FROM sales
SHOW (net_sales + returns) AS order_value, orders, (net_sales + returns)/orders AS sales_per_order
GROUP BY billing_region
SINCE -1y
UNTIL today

함수

ShopifyQL 함수를 사용하면 Microsoft Excel의 피벗 테이블과 유사하게 열을 집계하거나 결합하여 새로운 값을 생성할 수 있습니다. 현재 ShopifyQL 버전에서는 다음 함수 연산자를 사용할 수 있습니다.

트리밍 및 반올림과 같은 지원되는 ShopifyQL 함수 목록입니다.
함수 연산자설명
TRIM(column_name)문자열에서 선행 공백과 후행 공백을 제거합니다.
ROUND(column_name, decimal_places)Rounds a numerical value to the nearest integer or specified decimal places. In this function, decimal_places is an integer value:
  • If decimal_places > 0, then the function rounds the value to the right of the decimal point.
  • If decimal_places < 0, then the function rounds the value to the left of the decimal point.
  • If decimal_places = 0, then the function rounds the value to integer. In this case, the argument can be omitted entirely.

For example, this query uses the rounding function on the gross_sales column, but omits the decimal_places argument to round the value to the integer:

FROM sales
SHOW average_order_value, round(gross_sales)
GROUP BY billing_region
SINCE 2021-01-01
UNTIL 2021-12-31

Implicit joins

A join allows you to view metrics from different domains together, side by side. Joins are done implicitly and intelligently in ShopifyQL.

ShopifyQL has the following join capabilities:

  • ShopifyQL allows dimension field joins when there is a single FROM table in the query.
  • Automatic left join on dimension fields.
  • ShopifyQL allows multi-fact joins (when there are multiple FROM tables in the queries).
  • Automatic full join on multi-fact joins, which support any number of tables or schemas and grouped by dimensions.
  • Metrics in multi-fact joins can use functions and math.

Shopify QL has the following join restrictions:

  • Join field must have the same name in all joined schemas.
  • Join field must be in GROUP BY.
  • Join field can't use functions or math.
  • FROM is necessary for multi-fact joins to work.
  • In a multi-fact join, every GROUP BY must be in all schemas and is considered a field on which to be joined.

For example, this query uses a multi-fact join:

FROM sales, sessions
SHOW day, total_sales, sessions
GROUP BY day
SINCE 2023-10-03
ORDER BY day

Partial string and array matching

You can use the following operators for partial string and array matching:

List of Partial string and array matching operators in ShopifyQL.
OperatorDescription
STARTS WITHReturn all rows where a column starts with a prefix.
ENDS WITHReturn all rows where a column ends with a suffix.
CONTAINSReturn all rows where a column contains a part of a string, or an element in an array.

Some examples of partial string matching using operators include the following queries:

FROM sales
SHOW product_title
WHERE product_title STARTS WITH 'Summer'
GROUP BY product_title
FROM sales
SHOW product_title
WHERE product_title ENDS WITH 'kit'
GROUP BY product_title
FROM sales
SHOW product_title
WHERE product_title CONTAINS 'Beef'
GROUP BY product_title

The CONTAINS operator can be used to match elements within arrays, including integers, strings, and decimals. This matching isn't case-sensitive. Some examples of array matching using CONTAINS include the following queries:

FROM sales
SHOW orders
WHERE products_bought_together_ids CONTAINS 101
FROM customers
SHOW total_number_of_orders
WHERE customer_cities CONTAINS 'seattle'
FROM sales
SHOW orders
WHERE variants_bought_together_variant_prices CONTAINS 10.2

Comments

You can use comments to explain sections of ShopifyQL statements, or to prevent the execution of a ShopifyQL statement. Any text within a comment will be ignored during execution time.

Single line comments start with -- and end at the end of the line.

Multi-line comments start with /* and end with */.

FROM sales
SHOW average_order_value, gross_sales
-- the line below has been commented out and won't run
-- GROUP BY billing_region
WHERE billing_country = 'United States'
/*
this line and the two lines below it have been commented out and won't run
SINCE 2021-01-01
UNTIL 2021-12-31
*/
적절한 답변을 찾을 수 없습니까? 언제든지 도와드리겠습니다.