ShopifyQL 쿼리 편집기 사용
새로운 Shopify 분석과 함께 ShopifyQL을 사용하면 자체 비즈니스 데이터베이스를 탐색하고 비즈니스에 대한 보다 심층적인 이해를 제공하는 데이터를 검색할 수 있습니다.
ShopifyQL 또는 _Shopify 쿼리 언어_는 상거래를 위해 구축된 Shopify의 쿼리 언어입니다. 쿼리 언어는 데이터베이스에서 데이터를 요청하고 검색하는 데 사용됩니다. 스토어의 데이터는 정의된 열과 행으로 구조화된 데이터베이스 테이블에 저장됩니다. 열은 포함된 정보 유형(예: 판매액)을 정의하고, 행은 데이터 유형의 실제 값(예: 판매액 $2,450 USD)을 지정합니다.
의미 있는 형식으로 데이터를 검색하려면 데이터베이스에 _쿼리_를 제출해야 합니다. 쿼리는 특정 데이터를 답변으로 요구하는 질문으로, _키워드_와 해당 _매개 변수_로 구성됩니다. 특정 매개 변수와 여러 키워드를 조합하여 쿼리를 작성합니다. 쿼리를 작성하고 나면 쿼리를 실행하여 보고서를 받을 수 있습니다.
용어집
기간 | 정의 |
---|---|
치수 | 데이터를 분류하여 더욱 명확하게 표시될 수 있도록 데이터를 분류하는 속성입니다. 치수의 일반적인 예로는 시간, 제품, 위치가 있습니다. 치수는 ShopifyQL에서 매개 변수로 사용됩니다. |
키워드 | 쿼리를 지시하는 명령 역할을 하는 ShopifyQL 구문입니다. |
메트릭 | 데이터의 정량적 측정입니다. 메트릭의 일반적인 예로는 총 판매액, 주문 수, 총 수익이 있습니다. |
매개 변수 | 쿼리에 포함될 데이터베이스 요소나 세부 정보를 식별하는 ShopifyQL 구문입니다. |
연산자 | 쿼리의 일부분으로 사용되는 예약된 단어나 문자입니다. 예로는 STARTS WITH , >= 또는 last_week 가 있습니다. |
ShopifyQL 구문
ShopifyQL을 사용하여 유효한 보고서 쿼리를 만들 때는 다음 요구 사항을 충족해야 합니다.
- 전체 쿼리를 한 줄에 배치하거나 별도의 줄에 배치할 수 있습니다.
- 하나 이상의
FROM
및SHOW
키워드를 적절한 매개 변수와 함께 포함해야 합니다. 다른 모든 키워드와 매개 변수는 선택 사항입니다. - 쿼리의 모든 키워드는 다음 순서로 포함되어야 합니다.
1.
FROM
2.SHOW
3.WHERE
4.GROUP BY
5.TIMESERIES
6.WITH
TOTALS
,GROUP_TOTALS
,PERCENT_CHANGE
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 쿼리는 높은 수준의 데이터 분석 정보를 위한 기본적 쿼리에서부터 세부적인 분석 정보를 위한 포괄적 쿼리까지 다양합니다. 각 키워드에는 쿼리를 작성하는 특정 기능이 있습니다.
키워드 | 설명 |
---|---|
FROM | 데이터를 선택할 데이터 세트 표를 지정합니다. |
SHOW | 데이터 세트 표에서 추출할 열을 선택합니다. |
WHERE | 행이 선택되기 위해 충족해야 하는 조건(하나 이상)을 정의합니다. |
GROUP BY | 추출한 데이터를 차원 또는 시간 차원별로 그룹화합니다. |
TIMESERIES | 시간 차원별로 그룹화를 구분하고 쿼리에서 날짜를 백필합니다. |
WITH | 특정 ShopifyQL 키워드의 동작을 수정합니다. |
HAVING | 쿼리 결과를 그룹화한 후 필터링합니다. |
SINCE | 과거의 지정된 시간 이후의 데이터를 표시합니다. 흔히 UNTIL 과 함께 사용됩니다. |
UNTIL | 과거의 지정된 시간까지의 데이터를 표시합니다. 흔히 SINCE 또는 COMPARE TO 와 함께 사용됩니다. |
DURING | 과거의 지정된 시간 동안의 데이터를 표시합니다. |
COMPARE TO | 과거의 지정된 시간과 비교하는 데이터를 표시합니다. |
ORDER BY | 데이터를 정렬할 열을 지정합니다. |
LIMIT | 표시되는 데이터의 행 수를 제한합니다. |
VISUALIZE | 데이터를 선 또는 막대 시각화로 표시합니다. TYPE 을 사용하여 원하는 시각화를 지정할 수 있습니다. |
AS | 열 이름을 선택한 이름으로 바꾸는 선택적 키워드입니다. |
가장 간단한 ShopifyQL 쿼리를 생성하려면 FROM
과 SHOW
의 두 가지 키워드만 해당 순서로 작성하면 됩니다. FROM
다음에 하나 이상의 테이블 이름 매개 변수가 오면 쿼리할 테이블을 지정합니다. SHOW
다음에 열 이름 매개 변수가 원하는 수만큼 오면 선택할 열을 지정합니다.
SHOW
는 보고서에서 메트릭과 차원이 반환되는 순서를 지정하는 데 사용할 수 있습니다.
예를 들어 다음 쿼리를 작성하여 총 판매액의 합계를 반환할 수 있습니다.
FROM sales
SHOW total_sales
WHERE
WHERE
키워드를 사용하면 전체 ShopifyQL 쿼리에 차원 필터를 적용할 수 있습니다. 필터는 비교 연산자(예: 초과 >
), 논리 연산자(예: AND
또는 NOT
), 부분 문자열 및 배열 일치(예: STARTS WITH
및 CONTAINS
)를 모두 사용하여 수정할 수 있습니다.
WHERE
조건은 다음 요구 사항을 충족해야 합니다.
- 값은 큰따옴표(")가 아닌 작은따옴표(')로 묶어야 합니다.
- 조건은 산술을 포함할 수 없습니다.
- 조건은 메트릭이 아닌 차원만 참조할 수 있습니다.
예를 들어 청구지 국가를 기준으로 필터링된 총 판매액을 반환하려는 경우 쿼리는 다음과 같습니다.
FROM sales
SHOW total_sales, product_title, product_type, product_vendor
WHERE billing_country='Canada'
GROUP BY product_title, product_type, product_vendor
위의 예와 같이 WHERE
매개 변수가 SHOW
키워드에 포함되지 않은 경우에도 해당 파라미터를 사용하여 결과 집합을 필터링할 수 있습니다. 이 경우 billing_country
가 결과 집합에 포함되지 않더라도 총 판매액은 캐나다의 주문에 대해서만 필터링됩니다.
비교 연산자
WHERE
키워드는 비교 연산자를 사용하여 데이터를 필터링합니다. 위의 예에서는 =
을 사용하여 쿼리가 특정 값을 필터링하도록 지정했지만, 다른 연산자를 사용할 수도 있습니다.
비교 연산자 | 설명 |
---|---|
= | 같음 |
!= | 같지 않음 |
< | 작음 |
> | 큼 |
<= | 이하 |
>= | 이상 |
데이터를 더 필터링하기 위해 쿼리에 논리 연산자를 추가할 수 있습니다. 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 is_discounted_sale = true
GROUP BY product_title, product_type, product_vendor
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
시간 차원
다음은 데이터를 그룹화하는 데 사용할 수 있는 시간 치수입니다.
연산자 | 설명 |
---|---|
second | 시간의 초로 그룹화합니다. |
minute | 시간의 분으로 그룹화합니다. |
hour | 일의 시간별로 그룹화합니다. |
day | 일별로 그룹화합니다. |
week | 주간별로 그룹화합니다. |
month | 월별로 그룹화합니다. |
quarter | 달력 분기별로 그룹화합니다. |
year | 연도로 그룹화합니다. |
hour_of_day | 24시간별로 0부터 그룹화합니다(0, 1, ..., 23). |
day_of_week | 요일별로 0부터 그룹화합니다(0, 1, ... , 6). |
week_of_year | 주간별(1,2,...,52)로 그룹화합니다. |
month_of_year | 연도별 월(1, 2, ..., 12)로 그룹화합니다. |
시간 차원별로 그룹화를 구분하고, 시간에 따른 메트릭을 확인하고, 쿼리에서 날짜를 백필하여 데이터가 존재하지 않는 시계열 그래프로 전환하려는 경우 TIMESERIES
키워드를 사용할 수 있습니다.
다음 예에서는 지난 15일 동안 누락된 총 판매액 데이터를 백필합니다.
FROM sales
SHOW total_sales
GROUP BY product_title, billing_country
TIMESERIES day
SINCE -15d
TIMESERIES 및 열 순서
TIMESERIES
가 지정되었는지, GROUP BY
또는 SHOW
값에 존재하는지 여부에 따라 열의 순서가 변경될 수 있습니다.
TIMESERIES | SHOW | GROUP BY | 결과 |
---|---|---|---|
지정됨 | 없음 | 없음 |
TIMESERIES 가 첫 번째 차원입니다. |
지정됨 | 없음 | 있음 | 시간 차원 위치는 GROUP BY 에서의 위치로 정의됩니다. |
지정됨 | 있음 | 있음 | 시간 차원 위치는 SHOW 에서의 위치로 정의됩니다. |
지정되지 않음 | 없음 | 있음 | 시간 차원 위치는 GROUP BY 에서의 위치로 정의됩니다. 데이터가 백필되지 않습니다. |
지정되지 않음 | 있음 | 있음 | 시간 차원 위치는 SHOW 에서의 위치로 정의됩니다. 데이터가 백필되지 않습니다. |
지정되지 않음 | 있음 | 없음 |
SHOW 는 GROUP BY 에 있는 차원만 참조할 수 있으므로 구문 오류가 발생합니다. |
WHERE
과 마찬가지로 HAVING
키워드를 사용하여 쿼리 결과를 그룹화한 후 필터링할 수 있습니다. 필터에는 하나의 조건이 있을 수 있지만, 조건은 비교 연산자(예: 초과 >
) 및 논리 연산자(예: AND
또는 NOT
)를 모두 사용하여 수정할 수 있습니다. WHERE
키워드와 달리 HAVING
은 별칭, 집계 함수, 그룹화 열을 참조할 수 있습니다.
HAVING
은 쿼리에 GROUP BY
또는 TIMESERIES
절을 포함해야 합니다. HAVING
은 GROUP 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
이 쿼리는 다음과 유사한 보고서를 반환할 수 있습니다.
일 | 총 판매량 | 순 판매액 | 총 판매량 |
---|---|---|---|
요약 | 6 | 15 | 24 |
2024-01-01 | 1 | 4 | 7 |
2024-01-02 | 2 | 5 | 8 |
2024-01-03 | 3 | 6 | 9 |
GROUP_TOTALS
한정자는 집계별 그룹이 있는 경우 모든 하위 그룹에 대한 총계를 제공합니다. WITH GROUP_TOTALS
를 사용하면 쿼리는 메트릭 이름, 합산되는 차원, 열 이름의 일부로 "총계"가 포함된 결과 집합의 추가 열로 총계를 반환합니다. 각 행에는 해당하는 총계가 모두 포함됩니다.
예를 들어 다음 쿼리는 청구지 국가별 총 판매액을 표시합니다.
FROM sales
SHOW customer_id, total_sales
GROUP BY customer_id, billing_country
WITH TOTALS, GROUP_TOTALS
이 쿼리는 다음과 유사한 보고서를 반환할 수 있습니다.
국가 | 고객 ID | 총 판매량 |
---|---|---|
요약(미국+캐나다) | - | 1 |
미국 그룹 총계 | - | 0 |
미국 | 1 | 1 |
미국 | null | -1 |
캐나다 그룹 총계 | - | 1 |
캐나다 | 1 | 1 |
PERCENT_CHANGE
한정자는 COMPARE TO
를 사용할 때 각 비교 열에 변화율 메트릭을 추가합니다. WITH PERCENT_CHANGE
를 사용하면 쿼리는 메트릭 이름과 열 이름의 일부로 "변화율"이 포함된 결과 집합의 추가 열로 각 비교 메트릭의 변화율을 반환합니다.
변화율을 계산하는 데 사용되는 공식은 다음과 같습니다: (base_column - comparison_column) * 100 / abs(comparison_column)
예를 들어 다음 쿼리는 SINCE
및 COMPARE TO
를 사용하여 이전 달의 일별 순 판매액을 지난해의 같은 달과 비교하고 변화율 열을 포함합니다.
FROM sales
SHOW net_sales
TIMESERIES day
WITH PERCENT_CHANGE
SINCE -1m
UNTIL -0m
COMPARE TO previous_year
결과 보고서의 열에는 일, 순 판매액, 비교일, 순 판매액 일 비교, 순 판매액 비교, 순 판매액 변화율이 포함됩니다.
SINCE 및 UNTIL
날짜 또는 일부 기간으로 쿼리를 필터링하려는 경우 SINCE
및 UNTIL
키워드와 관련 매개 변수를 사용할 수 있습니다. 이러한 키워드는 기간만 필터링하므로 고유합니다. SINCE
를 사용하고 UNTIL
값을 정의하지 않으면 시간 범위의 끝은 기본적으로 today
로 설정됩니다.
예를 들어 다음은 어제까지 지난 12개월 동안의 캐나다 순 판매액을 찾는 쿼리입니다.
FROM sales
SHOW net_sales
WHERE billing_country = 'Canada'
GROUP BY month
SINCE -12m
UNTIL yesterday
오프셋 연산자
특정 날짜 또는 날짜 및 시간 오프셋을 기준으로 필터링할 수 있습니다. ShopifyQL 오프셋 연산자는 다음과 같습니다.
오프셋 연산자 | 설명 |
---|---|
-{#}s | 쿼리가 실행된 날짜 및 시간으로부터 몇 초 전입니다. |
-{#}min | 쿼리가 실행된 날짜 및 시간으로부터 몇 분 전입니다. |
-{#}h | 쿼리가 실행된 날짜 및 시간으로부터 몇 시간 전입니다. |
-{#}d | 쿼리가 실행된 날짜 및 시간으로부터 몇 일 전입니다. |
-{#}w | 쿼리가 실행된 날짜 및 시간으로부터 몇 주 전입니다. |
-{#}m | 쿼리가 실행된 날짜 및 시간으로부터 몇 달 전입니다. |
-{#}q | 쿼리가 실행된 날짜 및 시간으로부터 몇 분기 전입니다. |
-{#}y | 쿼리가 실행된 날짜 및 시간으로부터 몇 년 전입니다. |
yyyy-MM-dd | 특정 날짜입니다. |
yyyy-MM-ddThh:mm:ss | 특정 날짜 및 시간입니다. |
다음 함수는 SINCE
및 UNTIL
문에서 특정 날짜를 제외한 모든 날짜 범위 연산자와 결합하여 사용할 수 있습니다. "startOf...
" 함수는 SINCE
와 함께 사용하면 관련 시간 단위(분, 시, 일, 주, 월, 분기, 연도)의 시작까지 자르고, "endOf...
" 함수는 UNTIL
와 함께 사용하면 관련 시간 단위의 끝까지 자릅니다.
유효한 결과를 반환하려면 날짜 함수 단위와 연산자 단위가 일치해야 합니다. 예를 들어 startOfMonth(-1m)
은 올바르지만 startOfMonth(-1d)
는 올바르지 않습니다.
날짜 함수 | 설명 |
---|---|
now | 쿼리가 실행된 날짜 및 시간입니다. |
startOfMinute(-{#}min) | 날짜 범위 연산자를 대상 분의 시작으로 자릅니다. |
endOfMinute(-{#}min) | 날짜 범위 연산자를 대상 분의 끝으로 자릅니다. |
startOfHour(-{#}h) | 날짜 범위 연산자를 대상 시의 시작으로 자릅니다. |
endOfHour(-{#}h) | 날짜 범위 연산자를 대상 시의 끝으로 자릅니다. |
startOfDay(-{#}d) | 날짜 범위 연산자를 대상 일의 시작으로 자릅니다. |
endOfDay(-{#}d) | 날짜 범위 연산자를 대상 일의 끝으로 자릅니다. | startOfWeek(-{#}w) | 날짜 범위 연산자를 대상 주의 시작으로 자릅니다. |
예를 들어 오늘이 2022년 11월 8일이면 다음 쿼리를 사용하여 2020년 1월 1일부터 2022년 10월 31일까지의 총 판매량을 반환할 수 있습니다.
FROM sales
SHOW gross_sales
SINCE startOfYear(-2y)
UNTIL endOfMonth(-1m)
DURING
DURING
키워드는 날짜 범위에 대한 날짜 필터링을 간소화하며 SINCE
와 UNTIL
사용을 대체합니다. DURING
키워드를 사용하여 알려진 기간(예: 연도 또는 특정 월) 또는 매년 날짜가 다른 날짜 범위(예: 블랙 프라이데이 사이버 먼데이)에 대한 쿼리 결과를 필터링할 수 있습니다. 예:
FROM sales
SHOW total_sales
GROUP BY day
DURING bfcm2021
명명된 날짜 범위 연산자
DURING
은 다음과 같은 명명된 날짜 범위 연산자를 허용합니다.
명명된 날짜 범위 연산자 | 설명 |
---|---|
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
키워드를 사용하면 SINCE
와 UNTIL
또는 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
에는 명명된 날짜 범위 연산자 외에도 다음 상대 연산자를 사용할 수 있습니다.
상대 날짜 범위 연산자 | 설명 |
---|---|
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
키워드와 해당 매개 변수(오름차순의 경우 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 및 열 순서
쿼리에 TIMESERIES
및 ORDER BY
가 포함되어 있는지 여부에 따라 열의 순서가 변경될 수 있습니다.
TIMESERIES | ORDER BY | 결과 |
---|---|---|
있음 | 없음 | 결과는 TIMESERIES 차원을 기준으로 정렬됩니다. |
있음 | 있음 | 결과는 TIMESERIES 차원을 기준으로 정렬된 다음 ORDER BY 차원을 기준으로 정렬됩니다. |
없음 | 있음 | 결과는 ORDER BY 차원을 기준으로 정렬됩니다. |
없음 | 없음 | 결과는 첫 번째 SHOW 열을 기준으로 정렬됩니다. |
LIMIT
키워드를 사용하면 쿼리가 반환하는 최대 행 수를 지정할 수 있습니다. 이는 단순히 각 열의 데이터가 표시되는 방식을 파악하려고 하거나 쿼리에서 값을 반환하는 데 오래 걸릴 수 있는 대규모 보고서의 경우에 유용합니다. LIMIT
과 ORDER BY
를 결합하여 상위 및 하위 목록을 생성할 수 있습니다.
LIMIT
값을 지정하지 않으면 쿼리의 기본값은 1000행입니다.
선택 사항인 { OFFSET # }
매개 변수를 사용하여 행 데이터를 반환하기 전에 특정 수의 행을 건너뛸 수도 있습니다. 결과 문구의 형식은 LIMIT 15 { OFFSET 5 }
와 유사합니다.
이 예에서는 LIMIT
및 ORDER 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에는 다음과 같은 추가 연산자가 포함되어 있습니다.
- 수학 연산자. 예:
+
또는/
- 묵시적 조인
- 부분 문자열 및 배열 일치. 예:
STARTS WITH
및CONTAINS
- 주석
수학 연산자
ShopifyQL을 사용하면 데이터의 메트릭으로 산술 연산을 수행할 수 있습니다. 사용 가능한 수학 연산자는 다음과 같습니다.
수학 연산자 | 설명 |
---|---|
+ | 두 숫자를 더합니다. |
- | 두 숫자를 뺍니다. |
* | 두 숫자를 곱합니다. |
/ | 두 숫자를 나눕니다. |
예를 들어 다음 쿼리는 지난 1년 동안 각 지역의 주문 금액을 계산합니다. 메트릭과 함께 수학 연산자를 사용하는 경우 AS
키워드를 사용하여 새 메트릭에 새 이름을 지정할 수 있습니다. 수학적 표현식 사용에는 제한이 있음을 유의하시기 바랍니다.
FROM sales
SHOW (net_sales + returns) AS order_value, orders
GROUP BY billing_region
SINCE -1y
UNTIL today
묵시적 조인
조인을 사용하면 서로 다른 도메인의 메트릭을 나란히 볼 수 있습니다. ShopifyQL에서는 조인이 묵시적이고 지능적으로 수행됩니다.
ShopifyQL에는 다음과 같은 조인 기능이 있습니다.
- 쿼리에 단일
FROM
테이블이 있는 경우 ShopifyQL에서는 차원 필드 조인이 허용됩니다. - 차원 필드에는 자동 왼쪽 조인이 허용됩니다.
- 쿼리에 여러
FROM
테이블이 있는 경우 ShopifyQL에서는 다중 팩트 조인이 허용됩니다. - 차원별로 그룹화되고 여러 개의 테이블이나 스키마를 지원하는 다중 팩트 조인에서는 자동 전체 조인이 허용됩니다.
- 다중 팩트 조인 메트릭에서는 math를 사용할 수 있습니다.
Shopify QL에는 다음과 같은 조인 제한이 있습니다.
- 조인 필드의 이름은 조인된 모든 스키마에서 동일해야 합니다.
- 조인 필드는
GROUP BY
에 있어야 합니다. - 조인 필드에서는 math를 사용할 수 없습니다.
FROM
다중 팩트 조인이 작동하려면 필요합니다.- 다중 팩트 조인에서는 모든
GROUP BY
이(가) 모든 스키마에 있어야 하며 이는 조인될 필드로 간주됩니다.
예를 들어, 다음 쿼리에서는 다중 팩트 조인이 사용됩니다.
FROM sales, sessions
SHOW day, total_sales, sessions
GROUP BY day
SINCE 2023-10-03
ORDER BY day
부분 문자열 및 배열 일치
다음 연산자를 사용하여 부분 문자열 및 배열 일치를 수행할 수 있습니다.
연산자 | 설명 |
---|---|
STARTS WITH | 열이 접두사로 시작하는 모든 행을 반환합니다. |
ENDS WITH | 열이 접미사로 끝나는 모든 행을 반환합니다. |
CONTAINS | 열에 문자열의 일부 또는 배열의 요소가 포함된 모든 행을 반환합니다. |
연산자를 사용한 부분 문자열 일치의 몇 가지 예에는 다음과 같은 쿼리가 포함됩니다.
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
CONTAINS
연산자는 정수, 문자열, 소수를 포함한 배열 내의 요소를 일치시키는 데 사용할 수 있습니다. 이 일치는 대소문자를 구분하지 않습니다. CONTAINS
을(를) 사용한 배열 일치의 몇 가지 예에는 다음과 같은 쿼리가 포함됩니다.
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'
주석
주석을 사용하여 ShopifyQL 문의 섹션을 설명하거나 ShopifyQL 문 실행을 방지할 수 있습니다. 주석 내 모든 텍스트는 실행 시간 동안 무시됩니다.
한 줄로 된 주석은 --
으로 시작하여 줄 끝에서 끝납니다.
여러 줄로 된 주석은 /*
으로 시작하여 */
으로 끝납니다.
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
*/