目標
- 単純な数式を使った計算フィールドの作成方法を学びます。
- データを評価し、さまざまな結果を返す条件式を作成します。
- 計算フィールドを実装するさまざまな方法を学びます。
シナリオ
ペット用品のオンライン ショップを経営していると仮定します。その場合、商品コード(SKU)や商品名、価格や販売数量などの販売データを把握したいと考えるかもしれません。たとえば、次のような例が考えられます。
SKU | 商品 | 価格 | 販売数 |
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 の計算フィールドでは、こうしたデータの操作や拡張を行うことができます。この演習では、計算フィールドを使用して次のことを行います。
- 各注文の合計金額を計算する
- 一定の金額を超える注文に割引を適用する
- 販売した商品を部門別に分類する
解答に関する注意事項
計算フィールドを使って特定の結果を得る方法は、多くの場合、ニーズやフィールドの用途に応じて複数存在します。このチュートリアルでは 1 つの方法(個別のフィールドを計算に使用する)について説明します。この記事の最後に、その他の方法もいくつか紹介します。
サンプルデータ
この演習を手順どおりに進めるには、以下のサンプルデータを使用してください。ご自身で用意したデータを使用することもできます(フィールド名は適宜調整してください)。また、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
データを準備する
- 上の枠内のサンプルデータをコピーします。
- テキスト エディタを開いてサンプルデータを貼り付け、「
pet-store-data.csv
」いう名前でファイルを保存します。-
このファイルは必ず書式なしのテキスト形式で保存しましょう。他の形式にすると、Google スプレッドシートにインポートできなくなります。
-
Windows の場合は、「メモ帳」を使用できます。
-
Mac OS の場合は、テキストエディット(TextEdit)を使用し、メニューで [フォーマット] > [標準テキストにする] を選択します。
-
Chrome OS の場合、「Text」アプリを使用するか、Google ドキュメントで [ファイル] > [ダウンロード] > [書式なしテキスト] の順に選択します。
-
-
- 新しい Google スプレッドシートを作成します。
- スプレッドシート内で [ファイル] [インポート] の順に選択します。
- [アップロード] を選択し、手順 2 で作成したサンプルデータのファイルをアップロードします。
- [スプレッドシートを置換する] を選択します。
- スプレッドシートに「Pet Store」という名前を付けます。
レポートを作成してデータを追加する
- Looker Studio で新しいレポートを作成します。
- [データのレポートへの追加] パネルで、Google スプレッドシートのコネクタを選択します。
- 「
Pet Store
」のスプレッドシートと作成したワークシートを選択します。 - デフォルトで選択されているオプションはそのままにします。
- 右下にある [追加] をクリックします。
まもなく新しいレポートが表示されます。レポートのキャンバスには、データソース「Pet Store」由来のフィールドを使った表が追加されています。
小計フィールドを作成する
- メニューで [リソース] > [追加済みのデータソースの管理] を選択します。
- データソース「Pet Store」の右側にある [編集] をクリックします。
データソースのフィールド パネルが表示されます。 - 右上の [フィールドを追加] をクリックします。
計算フィールドのエディタが表示されます。 - [フィールド名] 欄に「
小計
」と入力します。 - [計算式] 欄に「
価格 * 販売数
」と入力します。ヒント: 数式エディタでディメンション、指標、関数の名称を入力する際は、予測入力機能を利用できます。左側の [使用可能な項目] リストからフィールドを計算式にドラッグすることも可能です。 - 右下にある [保存] をクリックします。
- 左側にある [すべてのフィールド] をクリックして、メインのデータソース エディタに戻ります。
割引フィールドを作成する
注文の金額に応じて異なる割引率を適用したいとします。もうひとつ計算フィールドを作成して「割引
」という名前を付けて、「小計」フィールドの内容に応じて次の割引率を適用するよう設定しましょう。
小計値 | 割引率 |
0~99 | 0 |
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
注: 各 WHEN 節は順番に評価され、最初に true になったものの THEN 節が返されます。
合計フィールドを作成する
新しい計算フィールドを作成して「合計
」という名前を付けて、「小計」フィールドの値と「割引」フィールドの値を乗算するように設定します。
解答
小計 * 割引
部門フィールドを作成する
最終的な値を返す計算フィールドを作成し、「部門」という名前を付けて、SKU フィールドの解析と SKU に応じた新しい値の割り当てを行うように設定します。犬、猫、鳥に関する商品を別々の部門に分類するようにします。
ヒント: 今回は CASE
文と一緒に STARTS_WITH(または REGEXP_MATCH)関数を使用します。
解答
CASE
WHEN STARTS_WITH(SKU, "C") THEN "猫"
WHEN STARTS_WITH(SKU, "D") THEN "犬"
WHEN STARTS_WITH(SKU, "B") THEN "鳥"
ELSE "その他"
END
データをレポートに表示する
- 「部門」フィールドを保存した後、左側の [すべてのフィールド] をクリックして、データソース エディタに戻ります。
- 右上の [完了] をクリックします。
- 右側に表示されているデータソース管理パネルを閉じます。
これで作成した計算フィールドをグラフに追加できるようになりました。
- 表を選択します。
- 右側の [使用可能な項目] リストから、作成した計算フィールドを 1 つずつドラッグして、[データ] パネルのディメンションと指標のセクションに下の図のようにドロップします。
その他の方法
上記の方法では、小計
フィールドと割引
フィールド、および合計
フィールドに分割したことからもわかるように、問題を個々のチャンクに分割して個別のフィールドを作成し、チャンクを 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
この方法では、大規模および中規模の注文とそれに対応する割引率の値を保持するフィールドを個別に作成しています。
この方法には、読みやすさのほか、柔軟性が高く、必要に応じて比較的簡単に調整できるという利点があります。