目標
このチュートリアルでは、次の作業を行います。
- 単純な数式を使った計算フィールドの作成方法を学びます。
- データを評価し、さまざまな結果を返す条件式を作成します。
- 計算フィールドを実装するさまざまな方法を学びます。
シナリオ
ペット用品のオンライン ショップを経営していると仮定します。その場合、商品コード(SKU)や商品名、価格や販売数量などの販売データを把握したいと考えるかもしれません。簡単な例を次に示します。
SKU | 項目 | Price | 販売数 |
---|---|---|---|
D-001 | Healthy Dog Dog Food | 79.96 |
16 |
B-002 | Parrot Perch | 74.97 |
8 |
B-001 | Pretty Bird Bird Seed | 31.96 |
20 |
C-002 | Hungry Kitty Cat Food | 29.98 |
3 |
D-002 | Playful Puppy Toy | 17.97 |
11 |
C-001 | Happy Cat Catnip |
14.97 |
4 |
Looker Studio の計算フィールドでは、こうしたデータの操作や拡張を行うことができます。この演習では、計算フィールドを使用して次のことを行います。
- 各注文の合計金額を計算します。
- 一定の金額を超える注文に割引を適用する。
- 販売した商品を部門別に分類する
サンプルデータ
この演習を手順どおりに進めるには、次のサンプルデータを使用してください。ご自身で用意したデータを使用することもできます(フィールド名は適宜調整してください)。また、Google スプレッドシートへのアクセスが必要です。あるいは、ファイル アップロード コネクタを使って、Looker Studio にデータをインポートすることも可能です。
以下のデータをコピーして、テキスト ファイルに貼り付けます。
SKU,Item,Price,Qty Sold D-001,Healthy Dog Dog Food,79.96,16 B-002,Parrot Perch,74.97,8 B-001,Pretty Bird Bird Seed,31.96,20 C-002,Hungry Kitty Cat Food,29.98,3 D-002,Playful Puppy Toy,17.97,11 C-001,Happy Cat Catnip,14.97,4
ステップ 1: データを準備する
目標: 前述のサンプルデータを使用して Google スプレッドシートを作成します。
- 上の枠内のサンプルデータをコピーします。
- テキスト エディタを開いてサンプルデータを貼り付け、ファイルを
pet-store-data.csv
として保存します。
スプレッドシートで、[ファイル] > [インポート] を選択します。
[アップロード] を選択し、手順 2 で作成したサンプルデータのファイルをアップロードします。
[スプレッドシートを置換する] を選択します。
スプレッドシートに
Pet Store
という名前を付けます。
ステップ 2: レポートを作成してデータを追加する
目標: データソースをスプレッドシート「Pet Store」に接続し、レポートに追加します。
- Looker Studio で新しいレポートを作成します。
- [データのレポートへの追加] パネルで、Google スプレッドシートのコネクタを選択します。
- 作成した
Pet Store
スプレッドシートとワークシートを選択します。 - デフォルトで選択されているオプションはそのままにします。
- [追加] をクリックします。
まもなく新しいレポートが表示されます。レポートのキャンバスには、データソース「Pet Store」由来のフィールドを使った表が追加されています。
ステップ 3: 小計フィールドを作成する
目標: 注文の小計を計算するフィールドを作成します。
メニューで [リソース] > [追加済みのデータソースの管理] を選択します。
データソース「Pet Store」を見つけて、 [編集] をクリックします。
[データソースのフィールド] パネルが表示されます。
[ フィールドを追加] をクリックします。
計算フィールドのエディタが表示されます。
[フィールド名] に「
Subtotal
」と入力します。[数式] に「
Price * Qty Sold
」と入力します。[保存] をクリックします。
[すべてのフィールド] をクリックして、メインのデータソース エディタに戻ります。
ステップ 4: 割引フィールドを作成する
目標: 一定の金額の注文に変動型の割引率を適用するフィールドを作成します。
注文の金額に応じて異なる割引率を適用したいとします。Discount
という名前の別の計算フィールドを作成して、「小計」フィールドの内容に応じて次の割引率を適用するよう設定しましょう。
小計値 | 割引率 |
0 ~ 99 | 撮影していない |
100 ~ 499 | 5% |
500 件以上 | 10% |
ヒント:
- このステップで行うのは割引率の計算のみです。指定した割引率を適用する作業は次のステップで行います(「小計」フィールドの値に「割引」フィールドの値を掛けます)。
CASE
式を使用して「小計」フィールドを評価します。
- 各割引率は
WHEN
句を使って記述します。- 定価(割引率 0%)を返すには
ELSE
節を使用します。- 割引率は小数で表します。たとえば 25% の割引なら .25 と表現します。
解決策
CASE WHEN Subtotal > 499 THEN .9 WHEN Subtotal > 100 THEN .95 ELSE 1 END
ステップ 5: 合計フィールドを作成する
目標: 小計に割引率を適用するフィールドを作成します。
Total
という名前の別の計算フィールドを作成し、小計フィールドに割引フィールドを乗算するように設定します。
解決策
Subtotal * Discount
ステップ 6: 部門フィールドを作成する
目標: 販売された商品を部門別に分類する計算フィールドを作成します。
最終的な値を返す計算フィールドを作成し、「Department
」という名前を付けて、SKU フィールドの解析と SKU に応じた新しい値の割り当てを行うように設定します。犬、猫、鳥に関する商品を別々の部門に分類します。
ヒント:
CASE
ステートメントをもう一度使用します。今回はSTARTS_WITH
(またはREGEXP_MATCH
)関数を使用します。
解決策
CASE WHEN STARTS_WITH(SKU, "C") THEN "Cat" WHEN STARTS_WITH(SKU, "D") THEN "Dog" WHEN STARTS_WITH(SKU, "B") THEN "Bird" ELSE "Misc" END
ステップ 7: レポートにデータを表示する
目標: 計算フィールドを視覚化します。
- 「部門」フィールドを保存した後、左側の [すべてのフィールド] をクリックして、データソース エディタに戻ります。
- [完了] をクリックして、データソース管理パネルを閉じます。
作成した計算フィールドをグラフに追加する手順は次のとおりです。
- テーブルを選択します。
- 作成した各計算フィールドをテーブルに追加するには、[データ] パネルからテーブルまたはテーブルの [設定] パネルにドラッグします。
代替ソリューションも
上記の方法では、小計フィールドと割引フィールド、および合計フィールドに分割したことからもわかるように、問題を個々のチャンクに分割して個別のフィールドを作成し、チャンクを 1 つずつ処理します。
別の方法として、1 つの計算フィールドですべての計算を行う方法があります。たとえば、次のように、このチュートリアルのステップ 3 ~ 5 を 1 つのフィールドにまとめることができます。
CASE WHEN Price * Qty Sold > 499 THEN (Price * Qty Sold) * .9 WHEN Price * Qty Sold > 100 THEN (Price * Qty Sold) * .95 ELSE Price * Qty Sold END
どの方法にも長所と短所があります。
複雑な数式を個別のフィールドに分割すると、数式を読んだり記述したりしやすくなり、エラーの発生を抑えることができます。フィールドを分けると、さまざまなコンテキストで使用できるというメリットもあります。たとえば、割引率の計算に個別のフィールドを使用すると、そのフィールドを他の計算で使用することや、レポートに表示することができます。個別の計算フィールドを多数使用した数式を作成する短所としては、各フィールドの動作が不明確となる可能性があるため、それらを個別に編集して計算結果を確認する必要があることが挙げられます。
その一方で、すべてのロジックを 1 つのフィールドにまとめれば、数式がシンプルになって把握や編集がしやすくなります。ただし、同じ内容を繰り返し入力することが必要となる可能性もあります。その場合、数式が複雑だと拡張や保守を行いにくくなります。たとえば、商品グレードが 10 あり、それぞれ注文数のしきい値が異なっている場合や、別の商品ラインで同じ割引率を使用する場合を考えてみましょう。このような場合は、しきい値や割引率ごとに個別のフィールドを使用すると、より簡単で効率的です。
中間的な方法
このソリューションは、前述の 2 つのアプローチを組み合わせたものです。メインのロジックを 1 つのフィールドにまとめつつ、依存するロジックの一部を個別のフィールドに分割します。
CASE WHEN Subtotal > Large Order THEN Subtotal * Large Order Discount WHEN Subtotal > Medium Order THEN Subtotal * Medium Order Discount ELSE Subtotal END
この方法では、大規模および中規模の注文とそれに対応する割引率の値を保持するフィールドを個別に作成しています。
この方法には、読みやすさのほか、柔軟性が高く、必要に応じて比較的簡単に調整できるという利点があります。