Looker 式は、Looker 内でカスタム計算を実行し、高度なロジックを適用するために使用する数式です。Looker 式を使用して、動的な表計算、カスタム フィールド、カスタム フィルタ、データテストを作成します。この機能を使用すると、特定の分析情報を抽出し、データ分析をカスタマイズできます。このガイドでは、Looker 式を効果的に作成して使用する方法について説明します。
一般的な関数のショートカット
Looker 式を作成する前に、組み込みのショートカットを使用してタスクを完了できるかどうかを確認します。
- 表計算: 管理者から表計算を作成する権限が付与されている場合は、ショートカット計算を使用して、Explore のデータ表にある数値フィールドに対して一般的な計算をすばやく実行できます。
- カスタム フィールド: 管理者からカスタム フィールドを作成する権限が付与されている場合は、次の機能を使用できます。
- カスタム グループ。
sqlパラメータまたはtype: caseフィールドでCASE WHENロジックを開発しなくても、カスタムラベルで値をグループ化できます。 - カスタム ビン。
type: tierLookML フィールドを開発しなくても、カスタム階層で数値型のディメンションをグループ化できます。
- カスタム グループ。
Looker Expressions
Looker 式は、以下の計算に使用されます。
Looker 式は、次の要素を組み合わせて構築されています。
NULL: 値NULLは、データが存在しないことを示し、何かが空であるまたは存在しないことを確認したい場合に便利です。定数: 定数はお客様が指定する不変の値です。
7などの数値やCompletedなどの文字列は定数です。Looker フィールド: ディメンション、メジャー、表計算などの Looker フィールドへの参照。
Looker 演算子: 使用可能な演算子のリストについては、Looker 関数と演算子をご覧ください。サポートされている演算子には、次のカテゴリがあります。
- 数学演算子(
+、-、*、/など) - 比較演算子(
=、>、<=など) - 論理演算子(
AND、OR、NOTなど)
- 数学演算子(
Looker 関数: スプレッドシート関数と同様に、関数を使用すると、複雑な方法でデータの変換や参照を行うことができます。使用可能な関数のリストについては、Looker 関数と演算子をご覧ください。
Looker 式を作成する
表計算、カスタム フィールド、カスタム フィルタでは、Looker 式エディタを使用します。式を入力すると、Looker により、使用する関数、演算子、フィールド名が求められます。
すべての候補を表示する
表計算、カスタム フィールド、またはカスタム フィルタを作成して、Explore で Looker 式エディタにアクセスします。
スペースを入力すると、選択可能なすべてのフィールド、関数、演算子の一覧が表示されます。フィールドが Explore で現在選択されている場合、Looker によりそのフィールドの左側に黒い点が表示され、リストの上部にそのフィールドが表示されます。
Looker 式エディタに入力を開始して、リストを関心のある項目に絞り込みます。
カスタム フィールドの関数と互換性がある場合は、カスタム フィールドのエディタには現在使用中の Explore フィールドが表示されます。
フィールドの追加
式に Looker フィールドを含めるには、フィールド名の入力を開始します。入力すると、エディタによって、入力したものを含むフィールドと関数のリストに検索が絞り込まれます。Explore ページに表示されているフィールド名を入力するか、LookML の名前がわかっている場合はそれを使用できます。
リストからフィールドを選択すると、Looker は ${view_name.field_name} という形式で LookML 名を使用して、式に追加します。これにより、すべてのフィールドに式内の一意の名前を付けることができます。
合計を追加する
合計を表示した Explore に基づく式を作成する場合は、式に列と行の合計を含めることもできます。列の合計は、フィールド名の LookML 反復処理の前に [合計] という単語でエディタに表示されます。たとえば、Count という名前のフィールドの場合、Looker は、そのフィールドの列の合計を名前 Count - Total で表示します。
合計の LookML 名は ${view_name.field_name:total} という形式です。これはフィールド名の末尾に :total が追加されたものです。
行の合計については、エディタのフィールド名の前に [行の合計] という単語が表示されます。フィールドの LookML 名では、${view_name.field_name:row_total} のように、フィールド名の末尾に :row_total が追加されます。
演算子を追加する
必要に応じて、AND、OR、NOT などの論理演算子を式に追加できます。通常、AND 演算子は OR 演算子の前に評価されますが、かっこを使用することでこの動作をオーバーライドできます。比較演算子(>、=、<= など)と数学演算子(+、* など)も使用できます。
演算子にカーソルを合わせると、情報ペインに適切な使用方法に関するメモが表示されます。
関数を追加
式に Looker 関数を含めるには、関数名の入力を開始します。入力すると、エディタによって、入力したものを含むフィールドと関数のリストに検索が絞り込まれます。
関数は、フィールド、数値、はい/いいえなど、特定の型を必要とする引数(または変数)で構成される場合があります。関数にポインタを合わせると、情報ペインのメモで、指定する必要がある引数とその型を確認できます。
関数の完全なリストについては、Looker 関数と演算子をご覧ください。
エラーのヒントと情報ペインを使用する
Looker により Looker 式エディタの横に情報パネルが表示されます。このペインには、特に式にエラーがある場合に、ドキュメントと候補が表示されます。
情報ペインには次の情報が表示されます。
エラーのハイライト表示: 式でまだ正しくない箇所に、Looker によって赤で下線が表示されます。
候補とエラーの詳細: Looker は、式に次に追加する内容に関する候補を表示します。エラーがある場合は、エラーが発生している理由が説明されます。
ドキュメント: 操作中の関数または演算子に関するドキュメントが Looker により表示されます。たとえば、
if関数の最初の引数を入力する際、最初の引数はyesまたはnoとして評価されることが示されます。関数名をクリックして、ドキュメントを表示します。
コメントを含める
式エディタで # でコメント行を開始することで、コメントを Looker 式に含めることができます。
フィールドを使用する
フィールドの値(ディメンション、メジャー、表計算)を式で使用する必要がある場合があります。フィールドの値を別の値に追加する、フィールドの値に特定の値があることを確認する、フィールドの値を関数に含めるなど、多くの可能性が考えられます。
フィールドを追加するで説明したように、フィールドの名前を式エディタに入力すると、Looker により適切な参照形式を確認できます。式にフィールドを追加すると、Looker ではフィールドの LookML 識別子(${view_name.field_name} など)が使用されます。フィールド ピッカーに表示されているフィールド名を入力すると、式エディタにフィールド ピッカー名と LookML 識別子が一緒に表示されます。
値を取得する方法はいくつかあります。
同じ行から値を取得する: フィールドを使用する最も基本的な方法は、
${product.category}のようにフィールドを直接参照することです。これは、現在の行のそのフィールドの値を参照します。別の行から値を取得する: 別の行からフィールドの値を取得することもできます。たとえば、前の行から商品カテゴリを取得するには、
offset(${product.category}, -1)などのオフセット関数を使用します。位置関数のリストについては、位置関数をご覧ください。ピボット列から値を取得する: ピボット列から値を取得するには、
pivot_index(${order.total_sales}, 1)などのピボット関数を使用します。ピボット関数の一覧については、ピボット関数をご覧ください。行または列から合計を取得する: Explore に合計を表示した場合、
${field_name:total}の形式で:total(列の合計)または:row_total(行の合計)をフィールド名に追加することで、合計値を取得できます。例:${orders.count} / ${orders.count:total}。
演算子を使用する
Looker 式には論理演算子、比較演算子、数学演算子を使用して、さまざまな条件を作成できます。
- 論理演算子(
AND、OR、NOTなど) - 比較演算子(
>、<など) - 数学演算子(
+、-など)
かっこで特に指定しない限り、OR ロジックの前に AND ロジックが評価されます。次の式では追加のかっこを使用していません。
if (
${order_items.days_to_process}>=4 OR
${order_items.shipping_time}>5 AND
${order_facts.is_first_purchase},
"review", "okay")
これは次のように評価されます。
if (
${order_items.days_to_process}>=4 OR
(${order_items.shipping_time}>5 AND ${order_facts.is_first_purchase}),
"review", "okay")
Looker では、true と false の代わりに yes と no を使用します。これらの論理定数は、リテラル文字列 "yes" や "no" と同じではありません。詳細については、論理定数をご覧ください。
関数を使用する
Looker の式には、データを取得または計算するための関数が 1 つ以上含まれていることがよくあります。スプレッドシートの関数と似ています。
関数は、名前にかっこが続きます(例: my_function())。かっこ内に渡される値は、my_function(argument_1, argument_2) などの引数です。
たとえば、now 関数は引数を受け取らず、現在の日時 now() を返します。
round 関数は、数値の引数 round(3.2) を 1 つ取ります。結果は 3 です。
指定する引数を確認するには:
- 式エディタの横にある情報ペインには、アクティブな関数のドキュメントが表示されます。
- 関数の完全なリストについては、Looker 関数と演算子をご覧ください。
contains 関数について考えてみましょう。
| 関数 | 構文 | 目的 |
|---|---|---|
| contains {:#function-contains} | contains(string, search_string) |
string が search_string を含む場合は Yes を返し、それ以外の場合は No を返します。 |
contains 関数には、string と search_string の 2 つの引数が必要です。string 引数は検索するフィールドまたはテキストを表し、search_string は検索する用語を表します。
contains(${customer.feedback_text}, "great")
顧客からのフィードバックに「great」という単語が含まれる場合、この関数は Yes を返します。それ以外の場合は、No を返します。
関数を他の関数の内部にネストできます。
contains(
if(
is_null(${customer.feedback_text}),
${customer.comment_text},
${customer.feedback_text}
),
"great")
この式は次の 3 つのステップで評価されます。
is_null関数は、顧客からのフィードバック テキストが空かどうかを確認します。if関数は、フィードバック テキストがある場合はそれを返し、ない場合はコメント テキストを返します。contains関数は、返されたテキストから「great」を検索します。
論理的には、この式は「顧客からのフィードバックがある場合は、そのテキストを検索する。ない場合は、顧客からのコメントの中を代わりに検索する。どちらの場合でも、「great.」という単語を探す」という意味になります。