用途
view: view_name {
derived_analytic_model: {
sql: analytic_model_definition ;;
}
}
|
階層
derived_analytic_model |
デフォルト値
なし
特別なルール
分析モデルは、BigQuery と Snowflake の接続でのみサポートされています。
|
定義
BigQuery と Snowflake の接続の場合、derived_analytic_model パラメータは、Looker によって管理されるデータベース内分析モデル(BigQuery グラフまたは Snowflake のセマンティック ビュー)を定義します。このシナリオでは、Looker は、derived_analytic_model LookML パラメータの定義で指定した適切な SQL データ定義言語(DDL)ステートメントを実行して、データベース内に分析モデルを生成します。derived_analytic_model パラメータで定義する SQL 構文は、データベースでサポートされている必要があります。
派生テーブルとは異なり、Looker で管理される分析モデル オブジェクトはデータベース内にデータを保持せず、増分更新されません。代わりに、データベース内で直接関係とメジャーを定義するセマンティック モデルを表します。
分析モデルを定義するには、derived_analytic_model パラメータの次のいずれかのサブパラメータを使用します。
また、sql サブパラメータで分析ビューを定義する場合は、publish_as_db_analytic_model サブパラメータを使用して、Looker の外部でクエリできる安定した分析モデルを作成できます。derived_analytic_model
derived_analytic_model パラメータ内で分析モデルを定義したら、分析モデルにマッピングする LookML ディメンションとメジャーを定義できます。例については、例のセクションをご覧ください。
sql
分析モデルの定義にのみ SQL を指定し、分析モデルの作成を Looker に管理させる場合は、sql パラメータを使用します。sql サブパラメータを使用する場合は、CREATE ステートメントまたは CREATE OR REPLACE ステートメントを含めないでください。Looker は、データベース側で分析モデルを作成する DDL ステートメントを自動的に生成するためです。
sql を使用してデータベースに分析モデルを作成する例については、sql パラメータを使用して派生分析モデルを作成するをご覧ください。
sql_create
sql_create パラメータを使用して、分析モデルを作成する完全な SQL ステートメントを定義します。sql_create パラメータを使用する場合は、CREATE OR REPLACE ステートメント(または、言語で CREATE OR REPLACE がサポートされていない場合は CREATE ステートメント)を含める必要があります。
sql_create サブパラメータを使用する場合は、次の点に注意してください。
- BigQuery 接続の場合は、
CREATE OR REPLACEステートメントを使用して分析モデルを作成します。 ${SQL_TABLE_NAME}を使用して、作成する分析モデルの計算された名前を代入します。これにより、SQL ステートメントに、LookMLviewパラメータで指定した分析モデル名が正しく含まれるようになります。
パラメータを使用してデータベースに分析モデルを作成する例については、sql_create を使用して派生分析モデルを作成するをご覧ください。sql_create
create_process
分析モデルを定義するために複数の順次 SQL ステートメントを定義する必要がある場合は、create_process パラメータを使用します。create_process パラメータで、sql_step サブパラメータを使用して個々の SQL ステートメントを指定します。データベースは、指定した順序で sql_step ステートメントを 1 つずつ実行します。Looker は、sql_step サブパラメータで定義した SQL ステートメントをラッパーなしで発行します。つまり、CREATE OR REPLACE ステートメント(または、言語で CREATE OR REPLACE がサポートされていない場合は CREATE ステートメント)を含むステップを含める必要があります。
パラメータを使用してデータベースに分析モデルを作成する例については、create_process を使用して派生分析モデルを作成するをご覧ください。create_process
publish_as_db_analytic_model
sql パラメータで作成された派生分析モデルの場合は、publish_as_db_analytic_model: yes で派生分析モデルを定義して、Looker の外部でクエリできる安定した分析モデルを作成するように Looker に指示できます。
安定した分析モデルは、派生分析モデルの LookML が 本番環境にデプロイされた後、Looker 再生成ツールの次のサイクルで公開(作成)されます。publish_as_db_analytic_model: yes
安定した分析モデルの名前を取得して、Looker の外部で安定した分析モデルをクエリできるようにする方法については、安定した分析モデルにアクセスするをご覧ください。
分析ビューに基づいて LookML ディメンションとメジャーを作成する
分析モデルを定義したら、同じビューファイルで、分析モデルに基づく LookML ディメンションとメジャーを定義できます。
分析モデルの定義に使用する適切な構文と、分析モデルの要素を参照する方法については、言語のドキュメントをご覧ください。たとえば、BigQuery グラフ エンティティから LookML ディメンションを作成するには、スコープ設定時にアンダースコアを使用して要素を区切る必要があります。たとえば、BigQuery グラフの場合、この LookML ディメンションは Stores ノードテーブルの location_id プロパティに基づいています。
dimension: location_id {
type: number
sql: Stores_location_id ;;
}
ただし、Snowflake セマンティック ビューに基づく LookML ディメンションを作成するには、メジャーまたはディメンションの非修飾名を使用する必要があります。
例
次のセクションでは、derived_analytic_model のさまざまなサブパラメータを使用して分析ビューを作成する例を示します。
- 派生分析モデルを
sql使用して作成する - 派生分析モデルを
create_process使用して作成する - 派生分析モデルを
sql_create使用して作成する
sql を使用して派生分析モデルを作成する
次は、derived_analytic_model の sql サブパラメータを使用して、BigQuery データベースの SQL ベースの分析モデルを定義する LookML ビューファイルの例です。Looker は、sql パラメータで指定された SQL DDL コマンドを実行して、データベース内に分析モデルを作成します。
この例では、次の点に注意してください。
sqlサブパラメータには、分析モデル自体の定義のみが含まれています。sqlを使用すると、Looker が分析モデルのCREATEコマンドを自動的に処理するため、CREATEステートメントはありません。- 分析モデルは
publish_as_db_analytic_model: yesで定義されているため、Looker は Looker の外部でクエリできる安定した分析モデルを作成します。
view: MyWarehouseOrdersView {
derived_analytic_model: {
publish_as_db_analytic_model: yes
# Defining the analytic model
sql:
NODE TABLES (
Customers
KEY(customer_id)
PROPERTIES(
country_code,
concat(first_name, ' ', last_name) AS name,
age,
MEASURE(AVG(age)) AS AvgAge
),
Orders
KEY(order_id)
PROPERTIES (
customer_id,
employee_id,
date,
discount,
MEASURE(AVG(discount)) AS AvgDiscount
)
EDGE TABLES (
-- Relationship: Orders -> Customers
looker_test.orders AS orders_to_users
KEY(id)
SOURCE KEY (order_id) REFERENCES orders (order_id)
DESTINATION KEY (customer_id) REFERENCES Customers (customer_id)
NO PROPERTIES
) ;;
}
# Mapping dimensions/measures to the dimensions/measures
# provided by the analytic model
dimension: customer_id {
type: number
sql: Customers_customer_id ;;
}
dimension: customer_age {
type: number
sql: Customers_age ;;
}
measure: orders_avg_discount {
type: number
sql: Orders_AvgDiscount ;;
}
}
create_process を使用して派生分析モデルを作成する
次は、derived_analytic_model の create_process サブパラメータを使用して、BigQuery データベースの SQL ベースの分析モデルを定義する LookML ビューファイルの例です。この例では、分析モデルを定義するために複数の順次 SQL ステートメントを定義する必要があります。最初のステップでは、分析モデルがすでに存在する場合は削除され、2 番目のステップで分析モデルが作成されます。
view: university_statistics {
derived_analytic_model: {
create_process: {
sql_step:
DROP PROPERTY GRAPH IF EXISTS ${SQL_TABLE_NAME} ;;
sql_step:
CREATE PROPERTY GRAPH ${SQL_TABLE_NAME}
NODE TABLES (
university.College
KEY(college_id)
PROPERTIES(college_id, college_name),
university.Department
KEY(dept_id)
PROPERTIES(dept_id, dept_name, college_id,
budget OPTIONS(description="Department budget in USD"),
MEASURE(SUM(budget)) AS total_budget),
university.Course
KEY(course_id)
PROPERTIES(
course_id,
course_name,
credits,
dept_id,
MEASURE(AVG(credits)) AS avg_credits,
MEASURE(SUM(credits)) AS total_credits,
MEASURE(COUNT(course_id)) AS course_count)
)
EDGE TABLES (
university.Department AS CollegeDept
SOURCE KEY (college_id) REFERENCES College (college_id)
DESTINATION KEY (dept_id) REFERENCES Department (dept_id),
university.Course AS DeptCourse
SOURCE KEY (dept_id) REFERENCES Department (dept_id)
DESTINATION KEY (course_id) REFERENCES Course (course_id)
);;
}
}
# Mapping dimensions/measures to the dimensions/measures
# provided by the analytic model
dimension: college_id {
type: number
sql: College_college_id ;;
}
dimension: course_name {
type: string
sql: Course_course_name ;;
}
...
}
sql_create を使用して派生分析モデルを作成する
次は、derived_analytic_model の sql_create サブパラメータを使用して、BigQuery データベースの SQL ベースの分析モデルを定義する LookML ビューファイルの例です。この例では、sql_create パラメータは、分析モデルを 1 つのステップで作成するために実行する完全な CREATE OR REPLACE ステートメントを定義します。
view: MyWarehouseOrdersView {
derived_analytic_model: {
sql_create:
CREATE OR REPLACE PROPERTY GRAPH ${SQL_TABLE_NAME}
NODE TABLES(
accounting.Loan AS Loan
KEY(loanId)
LABEL Loan PROPERTIES(
loanId,
loanAmount,
balance,
createTime,
interestRate,
accountId,
balance + 100 AS derived_balance,
CASE WHEN balance > 1000 THEN "High" ELSE "Low" END AS risk_level,
CONCAT("ID-", CAST(loanId AS STRING)) AS full_id,
DATE(2024, 1, 1) AS fixed_date,
MEASURE(AVG(interestRate)) AS avg_interest_rate
),
accounting.AccountView AS Account
KEY(accountId)
LABEL Account PROPERTIES(
accountId,
createTime,
isBlocked,
accountType,
amount,
ownerId,
MEASURE(MIN(createTime)) AS oldest_account_create_time,
MEASURE(MAX(createTime)) AS newest_account_create_time,
MEASURE(AVG(amount)) AS avg_account_amount,
MEASURE(SUM(amount)) AS total_account_amount,
MEASURE(COUNT(DISTINCT accountType)) AS account_type_count
),
accounting.PersonMV AS Person
KEY(personId)
LABEL Person PROPERTIES(
personId,
personName,
age,
age_tier,
MEASURE(AVG(age)) AS avg_age,
MEASURE(COUNT(DISTINCT age_tier)) AS age_tier_count
)
)
EDGE TABLES(
accounting.Loan AS Account_Repay_Loan
KEY(loanId)
SOURCE KEY(loanId) REFERENCES Loan(loanId)
DESTINATION KEY(accountId) REFERENCES Account(accountId)
LABEL Repay NO PROPERTIES,
accounting.Account AS Person_Own_Account
KEY(accountId)
SOURCE KEY(accountId) REFERENCES Account(accountId)
DESTINATION KEY(ownerId) REFERENCES Person(personId)
LABEL Own NO PROPERTIES
);;
}
# Mapping dimensions/measures to the dimensions/measures
# provided by the analytic model
dimension: loan_id {
type: number
sql: Loan_loanId ;;
}
dimension: account_ID {
type: number
sql: Account_accountID ;;
}
...
}
安定した分析モデルにアクセスする
sql サブパラメータを使用して派生分析モデルを作成し、publish_as_db_analytic_model: yes ステートメントを derived_analytic_model パラメータに含めた場合、Looker は、派生分析モデルの LookML が publish_as_db_analytic_model: yes で 本番環境にデプロイされた後、Looker 再生成ツールの次のサイクルで安定した分析モデルを公開(作成)します。
安定した分析モデルが公開されたら、安定した名前を使用して直接クエリできます。安定した名前は、分析モデルの Explore クエリの [データ] セクションの [SQL] タブに表示される情報から確認できます。分析モデルの安定した名前を取得する手順は次のとおりです。
分析モデルのビューの Explore を開きます。
Explore で、フィールド ピッカーからディメンションまたはメジャーを選択します。
[データ] セクションの [SQL] タブをクリックします。
[SQL] タブで、次のいずれかの SQL ステートメントを見つけます。
- BigQuery グラフの場合:
CREATE PROPERTY GRAPHSELECT ... FROM GRAPH_EXPAND('PROPERTY_GRAPH_NAME')
- Snowflake セマンティック ビューの場合:
CREATE SEMANTIC VIEWSELECT ... FROM SEMANTIC_VIEW_NAME
- BigQuery グラフの場合:
安定した名前は、Looker がスクラッチ スキーマに作成するビューで、[SQL] タブに表示される実際の難読化されたテーブルを指します。分析ビューの安定した名前を取得するには、SQL ステートメントから次の情報を入力します。
SCRATCH_SCHEMA_NAME.CONNECTION_REGISTRATION_KEY_MODEL_NAME_VIEW_NAME- SCRATCH_SCHEMA_NAME: スクラッチ スキーマ名は、
CREATEステートメントまたはSELECTステートメントの後の文字列の先頭で、「.」の前にあります。 - CONNECTION_REGISTRATION_KEY: 接続登録キーは 2 文字です。データベース言語に応じて、
CREATEステートメントまたはSELECTステートメントのテーブル名のドル記号または最初のアンダースコアの後に続きます。 - MODEL_NAME: LookML モデルの名前。
- VIEW_NAME: 分析モデルが定義されているビューの名前。
- SCRATCH_SCHEMA_NAME: スクラッチ スキーマ名は、
たとえば、BigQuery 接続の Explore クエリの [SQL] タブのテキストは次のようになります。分析モデルは sales_analytic_model という名前のビューで定義され、LookML モデルの名前は thelook です。この場合、Looker はすでに分析モデルを作成しているため、CREATE ステートメントはありません。ただし、SELECT ... FROM GRAPH_EXPAND ステートメントにはテーブル名情報が含まれています。
-- use existing sales_analytic_model in `looker-test-db.looker_scratch.LG_J7LSZ1778710001008_sales_analytic_model`
SELECT
sales_analytic_model.orders_id AS sales_analytic_model_orders_id,
AGG(sales_analytic_model.orders_count_orders ) AS sales_analytic_model_count_orders
FROM GRAPH_EXPAND("looker-test-db.looker_scratch.LG_J7LSZ1778710001008_sales_analytic_model") AS sales_analytic_model
GROUP BY
1
ORDER BY
2 DESC
LIMIT 500
分析モデルの安定した名前を導出するために必要な値は次のとおりです。
- SCRATCH_SCHEMA_NAME は
looker-test-db.looker_scratch - CONNECTION_REGISTRATION_KEY は
J7 - MODEL_NAME は
thelook - VIEW_NAME は
sales_analytic_model
したがって、分析モデルの安定した名前は次のようになります。
looker-test-db.looker_scratch.J7_thelook_sales_analytic_model
分析モデルの安定した名前を取得したら、分析モデルを直接クエリできます。
注意点
データベース内分析モデルを使用する場合は、次の考慮事項と制限事項に注意してください。
データ型: 分析モデルでは、ディメンションとメジャーに次のデータ型のみがサポートされています。
- ディメンションとメジャーでサポートされているもの:
stringnumberdateyesno
- ディメンションでのみサポートされているもの:
timedate_time
- ディメンションとメジャーでサポートされているもの:
メジャー:
- ベースメジャーは事前定義されている必要があります: ベースメジャーは、基盤となるデータベース分析モデルで事前定義されている必要があります。Looker は、分析モデルのディメンションで集計(
type: sumやtype: countなど)を実行して、新しいベースメジャーを定義することはできません。 他のメジャーに基づくメジャーがサポートされています: LookML メジャーの
sqlパラメータを使用して、分析モデルの事前定義されたベースメジャーを使用する非集計計算を実行できます。他のメジャーに基づくメジャーを作成する場合、新しいメジャーをsumやcountなどの集計メジャータイプとして定義することはできません。新しいメジャーは、string、number、date、またはyesnoなどの非集計メジャータイプとして定義する必要があります。次の例をご覧ください。measure: average_order_amount { type: number sql: ROUND(${total_order_amount} / NULLIF(${count_orders}, 0), 2) ;; }
- ベースメジャーは事前定義されている必要があります: ベースメジャーは、基盤となるデータベース分析モデルで事前定義されている必要があります。Looker は、分析モデルのディメンションで集計(
結合: ベースビューが分析モデルに基づく Explore には、結合を含めることはできません。同様に、分析モデルに基づくビューを、標準の LookML ベースビューを持つ Explore に結合することはできません。
暗黙的な結合: 暗黙的な結合に依存する機能は、分析モデルではサポートされていません。暗黙的な結合に依存する機能の例としては、カスタム カレンダーや、
type: location、type: distance、またはtype: zipcodeで定義されたフィールドなどがあります。分析モデルでは、次の機能はサポートされていません。