derived_analytic_model

用途

# SQL-based derived analytic model
view: view_name {
  derived_analytic_model: {
    publish_as_db_analytic_model: yes | no
    sql: analytic_model_definition ;;
  }
}

# LookML-based derived analytic model
view: view_name {
  derived_analytic_model: {
    publish_as_db_analytic_model: yes | no
    model_source: explore_name {
      fields: [field_1, field_2, ...]
      join: +joined_view_name {
        foreign_key: field_name
      }
    }
  }
}
階層
derived_analytic_model
デフォルト値
なし

特別なルール
分析モデルは、BigQuery と Snowflake の接続でのみサポートされています。

定義

BigQuery と Snowflake の接続の場合、derived_analytic_model パラメータは、Looker によって管理されるインデータベース分析モデルBigQuery Graph または Snowflake のセマンティック ビュー)を定義します。

派生テーブルとは異なり、Looker で管理される分析モデル オブジェクトは、データベース内にデータを保持せず、増分更新も行われません。代わりに、データベースで関係と指標を直接定義するセマンティック モデルを表します。

Looker では、次の 2 種類の派生分析モデルがサポートされています。

  • SQL ベースの派生分析モデル: SQL のデータ定義言語(DDL)ステートメントを使用して分析モデルを定義します。Looker は、指定した SQL ステートメントを実行して、データベース内に分析モデルを生成します。
  • LookML ベースの派生分析モデル: 既存の LookML Explore を参照して分析モデルを定義します。Looker は、Explore のトポロジ、結合、ディメンション、指標をデータベース ネイティブの分析モデル DDL ステートメントに自動的に変換し、データベースでモデルを作成して管理します。

SQL ベースの派生分析モデル

SQL ベースの派生分析モデルでは、Looker は、derived_analytic_model LookML パラメータの定義で指定した適切な SQL データ定義言語(DDL)ステートメントを実行して、データベース内に分析モデルを生成します。derived_analytic_model パラメータで定義する SQL 構文は、データベースでサポートされている必要があります。

SQL ベースの分析モデルを定義するには、derived_analytic_model パラメータの次のいずれかのサブパラメータを使用します。

また、sql サブパラメータを使用して分析ビューを定義する場合は、derived_analytic_model パラメータの publish_as_db_analytic_model サブパラメータを使用して、Looker の外部でクエリできる安定した分析モデルを作成できます。

derived_analytic_model パラメータ内で分析モデルを定義したら、分析モデルにマッピングする LookML ディメンションとメジャーを定義できます。詳細については、SQL ベースの派生分析モデルの例をご覧ください。

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 ステートメントに、LookML の view パラメータで指定した分析モデル名が正しく含まれるようになります。

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 が publish_as_db_analytic_model: yes本番環境にデプロイされた後、次の Looker 再生ツールのサイクルで公開(作成)されます。

publish_as_db_analytic_model: yes を指定すると、Looker 再生ツールはデータベースに 2 つの分析モデルを作成します。1 つは内部名、もう 1 つは安定した名前です。それ以外の場合、再生成ツールは内部名を使用して、データベースに 1 つの分析モデルのみを作成します。

Looker の外部で安定版分析モデルをクエリするために、安定版分析モデルの名前を取得する方法については、安定版分析モデルへのアクセスをご覧ください。

SQL ベースのアナリティクス ビューに基づいて LookML ディメンションとメジャーを作成する

分析モデルを定義したら、同じビューファイルで、分析モデルに基づく LookML ディメンションとメジャーを定義できます。

分析モデルの定義と分析モデル内の要素の参照に使用する適切な構文については、ダイアレクトのドキュメントをご覧ください。たとえば、BigQuery Graph エンティティから LookML ディメンションを作成するには、スコーピング時にアンダースコアを使用して要素を区切る必要があります。たとえば、BigQuery Graph の場合、この LookML ディメンションは Stores ノードテーブルの location_id プロパティに基づいています。

  dimension: location_id {
    type: number
    sql: Stores_location_id ;;
  }

ただし、Snowflake セマンティック ビューに基づく LookML ディメンションを作成するには、指標またはディメンションの非修飾名を使用する必要があります。

SQL ベースの派生分析モデルの例

以降のセクションでは、derived_analytic_model のさまざまなサブパラメータを使用して分析ビューを作成する例を示します。

sql を使用して派生分析モデルを作成する

次の例は、derived_analytic_modelsql サブパラメータを使用して 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_modelcreate_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_modelsql_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 サブパラメータを使用して派生分析モデルを作成し、derived_analytic_model パラメータの下に publish_as_db_analytic_model: yes ステートメントを含めた場合、Looker は、派生分析モデルの LookML が publish_as_db_analytic_model: yes本番環境にデプロイされた後、次の Looker 再生ツールのサイクルで安定版の分析モデルを公開(作成)します。

安定版の分析モデルが公開されたら、安定版の名前を使用して直接クエリできます。分析モデルの安定した名前を取得する方法は 2 つあります。

PDT 詳細モーダル

管理者または see_pdts 権限を持つユーザーは、次の手順に沿って、Looker の [管理者] セクションの [永続的な派生テーブル] ページを使用して、分析モデルの安定した分析モデル名を取得できます。

  1. Looker のメインメニュー アイコン をクリックし、[管理] を選択します([管理] メニューがまだ表示されていない場合)。(Looker のメインメニューの [Explore] セクションまたは [Develop] セクションにいる場合は、[管理者] メニューを表示するために戻る矢印をクリックする必要がある場合があります)。
  2. [Admin] メニューから [Persistent Derived Tables] を選択します。
  3. [Persistent Derived Tables] ページで、分析モデルの名前を検索します。
  4. 分析モデルのその他メニューをクリックし、[PDT の詳細] を選択します。
  5. [PDT の詳細] モーダルで、[安定した名前] フィールドを探します。

安定版分析モデルを直接クエリするには、モデル名の前にスクラッチ スキーマ名を追加します。たとえば、スクラッチ スキーマ名が tmp の場合、次のようなコマンドを使用して安定した分析モデルをクエリできます。

SELECT * from tmp.PA_bq_analytic_model_sales_semantic_view

Explore の [SQL] タブ

[永続派生テーブル] 管理ページにアクセスできない場合は、分析モデルの Explore クエリの [データ] セクションの [SQL] タブに表示される情報から安定した名前を特定できます。分析モデルの安定した名前を取得する手順は次のとおりです。

  1. 分析モデルのビューの Explore を開きます。

  2. Explore で、フィールド ピッカーからディメンションまたは measure を選択します。

  3. [データ] セクションの [SQL] タブをクリックします。

  4. [SQL] タブで、次のいずれかの SQL ステートメントを見つけます。

    • BigQuery Graph の場合:
      • CREATE PROPERTY GRAPH
      • SELECT ... FROM GRAPH_EXPAND('PROPERTY_GRAPH_NAME')
    • Snowflake セマンティック ビューの場合:
      • CREATE SEMANTIC VIEW
      • SELECT ... FROM SEMANTIC_VIEW_NAME
  5. 安定した名前は、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: 分析モデルが定義されているビューの名前。

たとえば、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_NAMElooker-test-db.looker_scratch
  • CONNECTION_REGISTRATION_KEYJ7
  • MODEL_NAMEthelook
  • VIEW_NAMEsales_analytic_model

したがって、分析モデルの安定版名は次のようになります。

looker-test-db.looker_scratch.J7_thelook_sales_analytic_model

分析モデルの安定した名前を取得したら、分析モデルを直接クエリできます。

LookML ベースの派生分析モデル

LookML ベースの派生分析モデルを使用すると、データベース固有の SQL DDL ステートメントを記述することなく、既存の LookML エクスプローラから直接、データベース内分析モデル(BigQuery GraphSnowflake セマンティック ビューなど)を定義できます。

LookML ベースの派生分析モデルを定義するには、次のパラメータを使用します。

  • model_source
    • fieldsmodel_source のサブパラメータ)
    • joinmodel_source のサブパラメータ。結合自体にサブパラメータがある)
  • publish_as_db_analytic_model(このパラメータは、LookML ベースと SQL ベースの両方の派生分析モデルに適用されます)

LookML ベースの派生分析モデルを作成するには、model_source パラメータを使用して、データ トポロジを定義するソース Explore を指定します。Looker は、LookML のビュー、結合、ディメンション、指標をデータベース ネイティブの分析モデル DDL ステートメントに自動的に変換します。

  • ノード / テーブル: ソース エクスプローラの各 LookML ビューは、BigQuery Graph のノードテーブルまたは Snowflake セマンティック ビューのテーブルになります。
  • エッジ / 関係: ソース エクスプローラで foreign_key パラメータを使用して定義された各結合は、BigQuery Graph のエッジテーブルまたは Snowflake セマンティック ビューの関係になります。
  • プロパティ / ディメンションと指標: ソースビューの LookML ディメンションと指標は、BigQuery Graph のノード プロパティ、または Snowflake セマンティック ビューのディメンションと指標になります。

LookML ベースの派生分析モデルビューに基づく Explore をクエリすると、Looker はデータベース DDL を生成して実行し、データベースのスクラッチ スキーマに分析モデルを作成してから、生成された分析モデルに対してクエリを実行します。分析モデルが作成されると、Looker はそのモデルを永続化します。これにより、LookML 定義が変更されるまで、後続のクエリは既存のモデルを直接参照します。

model_source

model_source パラメータは、分析モデルのトポロジと関係のソースとして機能する LookML Explore の名前を指定します。

view: sales_analytic_model {
  derived_analytic_model: {
    model_source: order_items {
      fields: [order_items.id, orders.id, orders.status, users.name]
    }
  }
}

ソース Explore に含まれるビューには、主キー ディメンションで primary_key: yes を使用して定義された主キーが必要です。

model_source は、次のサブパラメータを受け入れます。

パラメータ 説明
fields 省略可。分析モデルにエクスポートするソース Explore のフィールドの許可リストまたは拒否リストを指定します。
join(または joins 省略可。分析モデル専用に、ソース Explore からの結合を定義または絞り込みます。

fields

デフォルトでは、ソース Explore のビューで使用可能なすべてのフィールドが分析モデルにエクスポートされます(ソース Explore 自体が fields パラメータで定義されている場合、ソース Explore の一部のフィールドは使用できないことがあります)。model_source 内の fields サブパラメータを使用すると、エクスポートするフィールドのサブセットを指定したり、標準の LookML リスト構文を使用して特定のフィールドを除外したりできます。

  view: sales_analytic_model {
    derived_analytic_model: {
      model_source: order_items {
        fields: [
          order_items.id,
          order_items.price,
          orders.id,
          orders.status,
          users.name
        ]
      }
    }
  }

join

model_source 内の join パラメータを使用すると、ソース Explore で指定済みの結合に絞り込みを追加できます。絞り込みを追加すると、ソースの Explore 定義を変更せずに、分析モデルのみにスコープ設定された調整を行うことができます。

model_sourcejoin パラメータで、ソース Explore の結合の名前を + 絞り込みインジケーターとともに指定します。たとえば、join: +view_name のようにします。次に、join サブパラメータを使用して、分析モデルで必要に応じて、ソース Explore からの結合を絞り込みます。例については、手順 2 をご覧ください。

model_source 内の join パラメータは、結合の絞り込みのみを受け取ります。ソースの Explore に存在しない新しい結合を分析モデルに追加することはできません。

model_source 内の join パラメータは、次のサブパラメータをサポートしています。

サブパラメータ 説明
foreign_key 分析モデルのリレーションを確立する外部キーの列またはディメンションを指定します。foreign_key パラメータの例については、ステップ 1 の例をご覧ください。
relationship 結合のカーディナリティ(many_to_oneone_to_oneone_to_manymany_to_many)を定義します。

LookML ベースの派生分析モデルを設定する

LookML ベースの派生分析モデルを設定する手順は次のとおりです。

  1. foreign_key 結合を使用してベースビューとソース Explore を定義する
  2. 派生分析モデルビューを作成する
  3. 分析モデルビューで LookML ディメンションとメジャーを定義する
  4. 分析モデル ビューの Explore を作成する
  5. Looker で分析モデルをクエリする

ステップ 1: foreign_key 結合を使用してベースビューとソースの Explore を定義する

まず、ベースビュー(order_itemsordersusers など)が主キーで定義されていることを確認します。

次に、ビュー間の関係を指定する LookML モデルファイルで Explore を定義します。データベース内分析モデル内でリレーションシップを構築するには、ソース Explore の各結合に foreign_key パラメータが厳密に必要です。

explore: order_items {
  fields: [ALL_FIELDS*]

  join: orders {
    relationship: many_to_one
    foreign_key: order_id
  }

  join: users {
    relationship: many_to_one
    foreign_key: orders.user_id
  }
}

ステップ 2: 派生分析モデルビューを作成する

新しいビューファイル(sales_analytic_model.view.lkml など)を作成し、ソースの Explore を指す model_source パラメータを含む derived_analytic_model ブロックを追加します。

view: sales_analytic_model {
  derived_analytic_model: {
    model_source: order_items {
      # Optional: Use fields to restrict the properties exported to the analytic model
      # fields: [order_items.id, orders.id, orders.status, users.name]

      # Optional: Use join refinements to refine the relationships from the source Explore
      # join: +orders {
      #   foreign_key: order_id
      # }
      # join: +users {
      #   foreign_key: orders.user_id
      # }
    }
  }
  ...

ステップ 3: 分析モデルビューで LookML ディメンションとメジャーを定義する

同じ分析モデルのビューファイルで、生成された分析モデルのプロパティにマッピングされるディメンション、ディメンショングループ、メジャーを定義します。これにより、Looker Explore でクエリを実行できます。

${TABLE}.<view_name>_<field_name>(または ${TABLE}.<property_name>)を使用して、基盤となるモデルの参照フィールドを参照します。

  # Dimensions
  dimension: order_items_id {
    type: number
    sql: ${TABLE}.order_items_id ;;
  }

  dimension: orders_id {
    type: number
    sql: ${TABLE}.orders_id ;;
  }

  dimension: orders_status {
    type: string
    sql: ${TABLE}.orders_status ;;
  }

  dimension_group: orders_created {
    type: time
    timeframes: [raw, time, date, week, month, quarter, year]
    sql: ${TABLE}.orders_created_at ;;
  }

  dimension: users_name {
    type: string
    sql: ${TABLE}.users_name ;;
  }

  dimension_group: users_created {
    type: time
    timeframes: [raw, time, date, week, month, quarter, year]
    sql: ${TABLE}.users_created_at ;;
  }

  # Measures
  measure: count_users {
    type: number
    sql: ${TABLE}.users_count_users ;;
  }

  measure: count_orders {
    type: number
    sql: ${TABLE}.orders_count_orders ;;
  }

  measure: total_order_amount {
    type: number
    sql: ${TABLE}.orders_total_order_amount ;;
  }

  measure: total_order_item_amount {
    type: number
    sql: ${TABLE}.order_items_total_order_item_amount ;;
  }
}

ステップ 4: 分析モデルビューの Explore を作成する

モデルファイル(sales.model.lkml など)で、ビューの名前を使用して分析モデルビューの Explore を作成します。

explore: sales_analytic_model {}

分析モデルビューに基づく Explore には結合を含めることはできません。これは、リレーションシップが分析モデル自体内で内部的に定義されているためです。

ステップ 5: Looker で分析モデルにクエリを実行する

Looker で新しい Explore(例: Sales Analytic Model)を開き、ディメンションとメジャーを選択して、クエリを実行します。

生成された SQL を調べる手順は次のとおりです。

  1. [データ] パネルで [SQL] タブをクリックします。
  2. [SQL] タブでは、Looker が生成するデータベース固有の DDL ステートメント(BigQuery Graph の NODE TABLESEDGE TABLES を含む CREATE PROPERTY GRAPH ... など)と、分析モデルに対して実行されるクエリ(FROM GRAPH_EXPAND(...) AS sales_analytic_model など)を表示できます。
  3. クエリが実行されると、Looker は分析モデルをデータベースのスクラッチ スキーマに永続化します。後続のクエリでは、LookML 定義が変更されるまで、永続モデルが再利用され、DDL の再実行が回避されます。

LookML ベースの派生分析モデルに関する考慮事項

LookML ベースの派生分析モデルを定義する際は、次の点に注意してください。

  • 主キー: ソース Explore のすべてのビューに、primary_key: yes を使用して定義された主キー ディメンションが必要です。
  • 非巡回トポロジ: ソースの探索で結合によって定義される関係は、厳密な非巡回ツリー構造を形成する必要があります。循環関係はサポートされていません。
  • ソースビューの要件: ソース Explore に含まれるビューは、安定した名前を持つ標準のデータベース テーブルまたは永続的な派生テーブル(PDT)である必要があります。他の分析モデルに基づく一時的な(永続的でない)派生テーブルとビューは、ソースとして使用できません。
  • Explore パラメータ: 分析モデルの生成時に、ソース Explore の動的ランタイム フィルタリング パラメータ(sql_always_wherealways_filteraccess_filter)と sql_always_join は無視されます。

注意点

データベース内分析モデルを使用する場合は、次の考慮事項と制限事項に注意してください。

  • データ型: 分析モデルでサポートされているのは、ディメンション指標の次のデータ型のみです。

    • ディメンションとメジャーでサポートされます。
      • string
      • number
      • date
      • yesno
    • ディメンションでのみサポートされます。
      • time
      • date_time
  • 測定:

    • ベースメジャーは事前定義されている必要があります: ベースメジャーは、基盤となるデータベース分析モデルで事前定義されている必要があります。Looker では、分析モデルのディメンションに対して集計(type: sumtype: count など)を実行して、新しいベースメジャーを定義することはできません。
    • 他のメジャーに基づくメジャーがサポートされています: LookML メジャーの sql パラメータを使用して、分析モデルの事前定義されたベースメジャーを使用する非集計計算を実行できます。他のメジャーに基づくメジャーを作成する場合、新しいメジャーを sumcount などの集計メジャー タイプとして定義することはできません。新しい指標は、stringnumberdateyesno などの非集計指標タイプとして定義する必要があります。次の例をご覧ください。

      measure: average_order_amount {
        type: number
        sql: ROUND(${total_order_amount} / NULLIF(${count_orders}, 0), 2) ;;
      }
      
  • 結合: ベースビューが分析モデルに基づく Explore には、結合を含めることはできません。同様に、分析モデルに基づくビューを、標準の LookML ベースビューを持つ Explore に結合することはできません。

  • 暗黙的な結合: 暗黙的な結合に依存する機能は、分析モデルではサポートされていません。暗黙的な結合に依存する機能の例としては、カスタム カレンダーや、type: locationtype: distancetype: zipcode で定義されたフィールドなどがあります。

  • 分析モデルでは、次の機能は対象外です。