使用 ShopifyQL 查詢編輯器

您可以使用 ShopifyQL 搭配新版 Shopify 分析來探索自己商家的資料庫並擷取資料,從而更深入瞭解自家業務。

ShopifyQL (或稱 Shopify 查詢語言) 是 Shopify 專為商務功能打造的查詢語言。查詢語言是用於要求和擷取資料庫中的資料。您商店的資料會儲存在資料庫表格中,並以定義的欄和列進行結構化。欄會定義所包含的資訊類型 (如銷售額),而列則指定資料類型的實際值,例如 $2,450 美元的銷售額。

若要以有意義的格式擷取資料,您必須將查詢提交到資料庫。「查詢」是一種要求特定資料作為答案的提問,由關鍵字和相對應的參數所組成。建立查詢的方式是將多個關鍵字與特定參數互相組合。建立查詢後,即可執行查詢並收到一份報告。

術語表

ShopifyQL 術語的定義,例如維度、關鍵字和運算子。
術語定義
尺寸一種屬性,可將資料區隔以便更清楚排序和顯示。維度的常見範例包括時間、商品和地點。維度會在 ShopifyQL 中的作為參數使用。
關鍵字ShopifyQL 語法,可做為指令來引導查詢。
指標對資料的量性衡量。常見的指標範例包括總銷售額、訂單數量和總利潤。
參數ShopifyQL 語法,可識別要包含在查詢中的資料庫元素或詳細資訊。
運算子用作部分查詢的保留字詞或字元。例如 STARTS WITH>=last_week

ShopifyQL 語法

使用 ShopifyQL 製作有效的報告查詢時,必須符合下列要求:

  • 您可以將整段查詢放在同一行,或放在不同的行上。
  • 必須至少包含 FROMSHOW 關鍵字以及相應的參數。所有其他關鍵字和參數皆為選用內容。
  • 查詢中的所有關鍵字必須依以下順序加入:
    1. FROM
    2. SHOW
    3. WHERE
    4. GROUP BY
    5. WITH TOTALSGROUP_TOTALSPERCENT_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顯示過去指定時間之前的資料。通常與 SINCECOMPARE 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 查詢。篩選條件可以使用比較運算子 (例如大於 >)、邏輯運算子 (例如 ANDNOT),以及符合的部分字串和陣列 (例如 STARTS WITHCONTAINS) 來修改。

WHERE 條件必須符合下列要求:

  • 值必須以單引號 (') 而非雙引號 (") 括住。
  • 條件不得包含任何算式。
  • 條件只能參考維度,而不能參考指標。

舉例來說,如果您想回傳總銷售額並依帳單開具國家/地區篩選,則查詢內容如下:

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

如上方範例所示,即使 SHOW 關鍵字中沒有包含 WHERE 參數,您還是可以使用該參數篩選結果集。在這種情況下,即使結果集中未包含 billing_country,也只會篩選出加拿大訂單的總銷售額。

比較運算子

WHERE 關鍵字使用比較運算子來篩選資料。在上面的範例中,「=」用於指定該查詢使用特定值來篩選結果,但您還有其他可運用的運算子:

ShopifyQL 比較運算子清單,例如大於或等於。
選取比較運算子說明
=等於
!=不等於
<小於
>大於
<=小於或等於
>=大於或等於

邏輯運算子

若要進一步篩選資料,您可以在查詢中新增邏輯運算子。ShopifyQL 邏輯運算子為:

ShopifyQL 邏輯運算子清單,例如 AND、OR 和 NOT。
邏輯運算子說明
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_day按 24 小時分組 (1、2、...、24)。
day_of_week依週間日分組 (週一、週二、週三、...、週日)。
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 和欄順序

根據 GROUP BYSHOW 值中是否指定和具有 TIMESERIES,欄的順序可能有所變動。

下列為 TIMESERIES 的範例,包含在 ShopifyQL 中使用 GROUP BY 或 SHOW 時決定欄顯示順序的方式。
TIMESERIESSHOWGROUP BY結果
指定不存在不存在 TIMESERIES 是第一個維度。
指定不存在存在時間維度的位置是由它在 GROUP BY 中的位置所定義。
指定存在存在時間維度的位置是由它在 SHOW 中的位置所定義。
未指定不存在存在時間維度的位置是由它在 GROUP BY 中的位置所定義。資料未回填。
未指定存在存在時間維度的位置是由它在 SHOW 中的位置所定義。資料未回填。
未指定存在不存在觸發語法錯誤,因為 SHOW 只能參考存在於 GROUP BY 的維度。

HAVING

WHERE 相似,您可以使用 HAVING 關鍵字來篩選分組後的查詢結果。篩選條件可以只有一個條件,而該條件可藉由比較運算子 (例如大於 >) 和邏輯運算子 (例如 ANDNOT) 來修改。與 WHERE 關鍵字不同,HAVING 可參考別名、彙總函數和分組的欄。

HAVING 要求您的查詢必須包含 GROUP BYTIMESERIES 子句,因為 HAVING 會篩選使用 GROUP BYTIMESERIES 分組後的查詢結果。

在此範例中,您將篩選總銷售額大於 1000 且小於 5000 元的商品總銷售額:

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

WITH

WITH 關鍵字會修改其他特定 ShopifyQL 關鍵字的行為。三種可行修改方式如下:

  • TOTALS:提供指標在依任何維度細分之前的最上層摘要。
  • GROUP_TOTALS:在有分組彙總資料時,提供所有子群組的總計。
  • PERCENT_CHANGE:為 COMPARE TO 中的每個比較欄新增百分比變化指標。存在此修飾詞時,會為每個比較指標欄新增包含百分比變化的欄。

TOTALS

TOTALS 修飾詞提供指標在依其他維度細分之前的最上層摘要。使用 WITH TOTALS 時,查詢會在結果集中以額外欄的形式回傳總計,而欄名稱會包含指標名稱和「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 時,查詢會在結果集中以額外欄的形式回傳總計,而欄名稱會包含指標名稱、加總計算的維度及「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 時,查詢會在結果集中會以額外欄的形式回傳每個比較指標的百分比變化,而欄名稱包含指標名稱和「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 陳述式中,將任何日期範圍運算子 (特定日期除外) 與下列函數合併使用。與 SINCE 一起使用時,startOf... 函數會將時間截斷至相關時間單位 (分、小時、日、週、月、季、年) 的開頭;而與 UNTIL 一起使用時,endOf... 函數會將時間截斷至相關時間單位的結束。

日期函數單位必須與運算子的單位相符,才能回傳有效結果。舉例來說,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 關鍵字,根據 SINCEUNTILDURING 的日期範圍與 COMPARE TO 中的日期範圍比較資料。

您可以將 COMPARE TO 關鍵字與下列類型的參數搭配使用:

  • 絕對日期 (如 2023-01-01):包含指定期間的指標,以及與絕對日期相同期間的比較指標。
  • 指定日期 (如 last_week):包含指定期間的指標,以及與指定日期相同期間的比較指標。

    • COMPARE TO 使用的運算子不一定要與 DURING 所使用的時間長度相同。如果未提供 UNTIL 值,則計算的時間範圍會等於 DURING 中指定的值。舉例來說,DURING this_week COMPARE TO last_month 會將本週的資料與上個月初開始的一週期間比較。
  • 位移日期 (如 -3q):包含指定期間的指標,以及與相對日期相同期間的比較指標。

  • 多個日期比較 (如 -1y, -2y):比較特定日期範圍與其他多個日期範圍的資料。這在追蹤多個期間的變化時非常實用。

  • 如果您在查詢中將日期維度與 COMPARE TO 搭配使用,則必須使用 TIMESERIES,而不是 GROUP BY

以下範例是用於比較前一個月與去年同月份的銷貨淨額:

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基準日期範圍的前一年。
previous_quarter基準日期範圍的前一季。
previous_month基準日期範圍的前一個月。
previous_week基準日期範圍的前一週。
previous_day基準日期範圍的前一天。
previous_hour基準日期範圍的前一個小時。
previous_minute基準日期範圍的前一分鐘。
previous_second基準日期範圍的前一秒。

ORDER BY

您可以使用 ORDER BY 關鍵字及參數,指定要如何排序查詢回傳的資料:ASC 為遞增順序,而 DESC 為遞減順序。

您可以在 ORDER BY 關鍵字中指定查詢中包含的任何指標或維度,包含多個欄位。

例如,此查詢會回傳過去一年所有商品和子類商品的銷貨淨額;結果會先依產品名稱的字母順序排序,然後再依產品類型的字母反向排序:

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,欄的順序可能會有所變動。

以下是 TIMESERIES 的範例,包含 ShopifyQL 中存在 ORDER BY 時的欄順序。
TIMESERIESORDER BY結果
存在不存在結果依 TIMESERIES 維度排序。
存在存在結果先後依時間維度 TIMESERIESORDER 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 關鍵字,其中的參數為要顯示的數據點數量上限。

例如,您可以使用趨勢線,視覺化呈現過去一年各月的銷售趨勢資料。此查詢會回傳時間序列圖表,顯示去年各月的銷售總額。銷售總額會以單行表示,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 數學運算子清單,包含加號和減號。
數學運算子說明
+將兩組數字相加。
-將兩組數字相減。
*將兩組數字相乘。
/將兩組數字相除。

舉例來說,此查詢會計算去年每個地區的訂單價值。將數學運算子搭配指標使用時,您可以採用 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
*/
沒有找到您需要的答案嗎?我們很樂意為您提供協助。