ShopifyQLクエリエディタを使用する

新しいShopifyストア分析でShopifyQLを使用すれば、自身のビジネスのデータベースを検索してデータを取得し、ビジネスへの理解を深めることができます。

ShopifyQLは「Shopify Query Language」の略語であり、コマース向けに構築されたShopifyのクエリ言語です。クエリ言語は、データをデータベースからリクエストして取得するために使用します。ストアのデータは、定義された列と行で構造化されたデータベーステーブルに格納されます。列では、売上など格納している情報のタイプを定義し、行では、売上2,450米ドルなど、データタイプの実際の値を指定します。

データを有意味な形式で取得するには、「クエリ」をデータベースに送信する必要があります。クエリとは、「キーワード」とそれに対応する「パラメーター」で構成された、特定のデータを回答として求める質問です。クエリは、特定のパラメーターを伴うさまざまなキーワードの組み合わせで作成されます。クエリを作成したら、実行してレポートを受け取ることができます。

用語集

ShopifyQLに関する用語 (ディメンション、キーワード、演算子など) の定義。
キーワード定義
ディメンションデータを分割して分類し、明確に表示できるようにする属性。ディメンションの一般的な例としては、時間、商品、場所などがあります。ディメンションは、ShopifyQLでパラメーターとして使用されます。
キーワードクエリを指示するコマンドとして機能するShopifyQL構文。
指標データの定量的測定。指標の一般的な例には、販売合計、注文数、売上総利益が含まれます。
パラメータークエリに含めるデータベースの要素や仕様を識別するShopifyQL構文。
演算子クエリの一部として使用される予約済みの単語または文字。例:STARTS WITH>=last_week

ShopifyQLの構文

ShopifyQLを使用して有効なレポートクエリを作成するには、以下の要件を満たす必要があります。

  • クエリは全体を1行に配置することも、複数行に分けて配置することもできます。
  • 少なくとも、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過去の指定された時間までのデータを表示します。多くの場合、SINCEまたはCOMPARE TOとの組み合わせで使用されます。
DURING過去の指定した期間中のデータを表示します。
COMPARE TO過去の指定した時間と比較するためにデータを表示します。
ORDER BYデータを配列する基準にする列を指定します。
LIMIT表示されるデータの行数を制限します。
VISUALIZE折れ線グラフや棒グラフで視覚化したデータを表示します。TYPEで表示形式を指定できます。
AS列の名前を選択した名前に変更する任意のキーワードです。

FROMとSHOW

最も簡単なShopifyQLクエリは、FROMSHOWの順序で記述する2つのキーワードだけで作成できます。後ろに1つ以上のテーブル名パラメーターが続く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キーワードで複数の絞り込みを使用することができます。

データセットクエリの例に加えて、請求先住所がカナダにあり、ディスカウントが適用された、ドライピーチ (Dried Peaches) を含むすべての注文の純売上高を月ごとにグループ化するには、次のクエリを実行します。

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の値に存在するかどうかによって、列の順序は変化します。

ShopifyQLにおけるTIMESERIESの指定とGROUP BYまたはSHOWの有無による列の表示順の変化例
TIMESERIESSHOWGROUP BY結果
指定あり存在せず存在せず TIMESERIESが最初のディメンションになる。
指定あり存在せず存在する時間ディメンションの位置は、GROUP BYにおける位置によって定義される。
指定あり存在する存在する時間ディメンションの位置は、SHOWにおける位置によって定義される。
指定なし存在せず存在する時間ディメンションの位置は、GROUP BYにおける位置によって定義される。データはバックフィルされない。
指定なし存在する存在する時間ディメンションの位置は、SHOWにおける位置によって定義される。データはバックフィルされない。
指定なし存在する存在せず SHOWが参照できるのはGROUP BYに存在するディメンションのみであるため、構文エラーがトリガーされる。

HAVING

WHEREと同様に、HAVINGキーワードを使用すれば、グループ化された後のクエリの結果を絞り込むことができます。この絞り込みで指定できる条件は1つですが、その条件は比較演算子 (> (より大きい) など) や論理演算子 (ANDNOTなど) の両方で変更できます。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_CHANGECOMPARE 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を使用した場合、クエリは結果セットに追加の列として各比較指標の変化率を返します。列名には、指標名と「変化率」が含まれます。

変化率の計算には、次の式が使用されます。 (base_column - comparison_column) * 100 / abs(comparison_column)

たとえば、以下のクエリでは、SINCECOMPARE TOを使用して、前月の1日あたりの純売上高を前年の同じ月と比較します。変化率を示す列も追加されます。

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 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特定の日時。

日付関数

SINCEおよびUNTILステートメントでは、任意の日付範囲を指定する演算子 (特定の日付を除く) と組み合わせた以下の関数を使用できます。「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日から11月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では以下の相対演算子も使用できます。

ShopifyQLの相対的な日付範囲 (前期間、前年など) を指定する演算子のリスト。
相対的な日付範囲を指定する演算子説明
previous_period基準となる日付範囲の1期間前。
previous_year基準となる日付範囲の1年前。
previous_quarter基準となる日付範囲の1四半期前。
previous_month基準となる日付範囲の1か月前。
previous_week基準となる日付範囲の1週前。
previous_day基準となる日付範囲の1日前。
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と列の順序

クエリにTIMESERIESおよびORDER BYが記載されているかどうかによって、列の順序が変化します。

ShopifyQL使用時のTIMESERIESとORDER BYの有無に応じた列の順序の例。
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キーワードは任意です。使用する場合は、視覚的要素のタイプを1つ指定する必要があります。TYPEがクエリに記載されていない場合、ShopifyQLでは、クエリに最適な方法でデータを可視化するよう自動的に決定します。クエリで記述どおりに可視化できない場合、ShopifyQLでは表形式のデータを返します。

VISUALIZE は、任意のLIMITキーワードも受け付けます。このパラメーターは、レンダリングするデータポイントの上限数です。

たとえば、動きを示す折れ線グラフを使用すると、昨年1年間の販売傾向を月別に可視化できます。次に示すクエリでは、昨年の月別の総売上高を示す時系列グラフを返します。総売上高は単線で表示され、x軸は月を、y軸は総売上高を表します。

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

AS

キーワードASは、任意のキーワードであり、列、または集計関数の戻り値の名前を変更 (またはエイリアスを指定) することができます。

AS は、1つのパラメーターのみを受け付けます。エイリアスの名前にスペースがある場合、そのエイリアスを二重引用符 (") で囲む必要があります。

FROM sales
SHOW total_sales AS "My Total Sales"

ShopifyQLのその他の関数および演算子

ShopifyQLには、他にも以下のような演算子や関数があります。

算術演算子

ShopifyQLを使用すると、データにある指標を使用して算術演算を実行できます。次の算術演算子を利用できます。

ShopifyQLの算術演算子 (加算、減算など) のリスト。
数学演算子説明
+2つの数値の加算。
-2つの数値の減算。
*2つの数値の乗算。
/2つの数値の除算。

たとえば、以下に示すクエリでは、昨年の地域ごとの注文金額を算出します。指標で算術演算子を使用する際は、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
*/
お探しの情報が見つかりませんか?いつでもお気軽にお問い合わせください。