セマンティックビューのYAML仕様¶
セマンティックビューは、データに対するビジネス概念を定義するスキーマレベルのオブジェクトであり、ユーザーがビジネス用語を使用してデータを容易にクエリおよび分析できるようにします。YAML 仕様を使用して Cortex Analyst でセマンティックビューを作成する、または SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML ストアドプロシージャを使用して YAML 仕様からセマンティックビューを作成するすることができます。
概要¶
セマンティックビューは、Snowflakeでビジネスのセマンティクスを定義するために**推奨されるアプローチ**です。セマンティックビューは、Snowflakeの権限システム、共有メカニズム、メタデータカタログと統合されたスキーマレベルのオブジェクトです。
注釈
従来のセマンティックモデル YAML ファイル(ステージに格納)を引き続き Cortex Analyst で使用して下位互換性を確保できますが、新しい実装にはセマンティックビューを使用することをお勧めします。
レガシーセマンティックモデルと比較した場合のセマンティックビューの利点は以下のとおりです。
ネイティブSnowflake統合:フル RBAC が実施されるスキーマレベルのオブジェクト、共有、カタログのサポート
高度な機能:派生メトリクスとアクセス修飾子のサポート(パブリック/プライベート)
より優れたガバナンス:Snowflakeの権限および共有システムとの統合
簡素化された管理:ステージ上の YAML ファイルの管理の必要なし
YAML 形式¶
セマンティックビューは `YAML<https://yaml.org/>`__ 仕様を取得して動作を定義し、読みやすいプレーンテキストの定義を可能にします。
セマンティックビューの YAML 仕様の一般的な構文は次のとおりです。
重要
セマンティックビューにはレガシーセマンティックモデルで使用されていた ``join_type`` フィールドまたは ``relationship_type`` フィールドは必要ありません。関係タイプはデータから自動的に推測されます。
主な概念¶
テーブル¶
論理テーブルはビジネスエンティティ(顧客、注文、製品など)を表し、物理的なデータベーステーブルにマッピングされます。各論理テーブルは次の対象を定義できます。
ベーステーブル:物理テーブルの完全修飾名
プライマリキー:行を一意に識別する列
同義語:テーブルの代替名
説明:テーブルが表している内容に関するビジネスフレンドリーな説明
ディメンション¶
ディメンションは、分析のためのコンテキストを提示するカテゴリ属性を表します。それらは「誰が」、「何を」、「どこで」、「いつ」の質問に答えます。ディメンションは次のとおりです。
通常のディメンション:テキスト、数値、またはその他のカテゴリ値
時間ディメンション:特別な時間ベースの処理による日付またはタイムスタンプの列
ディメンションのプロパティ¶
expr: ディメンション値を計算するための SQL 式synonyms:ユーザーが使用できる代替用語unique:値が行全体で一意であるかどうかis_enum:ディメンションに固定値セットがあるかどうかcortex_search_service:セマンティック検索のためのオプションのCortex Searchサービス
物理ディメンションのオプションのプロパティ¶
これらのフィールドはオプションですが、セマンティックビュー検索から高品質の結果を生成するために推奨されます。
synonymsこのディメンションを参照するために使用されるその他の用語/フレーズのリスト。このセマンティックモデル内のすべての同義語で一意でなければなりません。
descriptionこのディメンションの簡単な説明。このディメンションが表すデータなど、有用なコンテキストを提示する情報を記載します。
uniqueこのディメンションに一意の値があることを示すブール値。
sample_valuesこの列のサンプル値(ある場合)。ユーザーの質問で参照される可能性のある値を追加します。
is_enumブール値。
Trueの場合、sample_valuesフィールドの値は可能な値の完全なリストとみなされ、モデルがその列でフィルタリングする際にそれらの値から選択します。cortex_search_serviceこのディメンションに使用するCortex Search Serviceを指定します。以下のフィールドがあります。
service:Cortex Search Serviceの名前。literal_column: (オプション)リテラル値を含むCortex Search Serviceの列。database: (オプション)Cortex Search Serviceがあるデータベース。デフォルトはbase_tableのデータベースです。schema: (オプション)Cortex Search Serviceがあるスキーマ。デフォルトはbase_tableのスキーマです。
cortex_search_serviceは、名前しか指定できなかったcortex_search_service_nameフィールドに取って代わるものです。cortex_search_service_nameは非推奨になりました。
時間ディメンションのオプションのプロパティ¶
これらのフィールドはオプションですが、セマンティックビュー検索から高品質の結果を生成するために推奨されます。
synonymsこの時間ディメンションを参照するために使用されるその他の用語/フレーズのリスト。このセマンティックモデル内のすべての同義語で一意でなければなりません。
descriptionこのディメンションの簡単な説明。このディメンションが参照点として使用するタイムゾーンなど、有用なコンテキストを提示する情報を記載します。
unique:この列が一意な値を持つことを示すブール値。
sample_values:この列のサンプル値(ある場合)。ユーザーの質問で参照される可能性のある値を追加します。
ファクト¶
ファクトは、特定のビジネスイベントまたはトランザクションを表す行レベルの定量属性です。ファクトは、個別の販売金額、購入数量、コストなど、最も詳細なレベルで「金額」または「数量」をキャプチャします。
通常、ファクトはセマンティックビュー内の「ヘルパー」概念として機能し、ディメンションとメトリックの構築を支援します。
ファクトのプロパティは次のとおりです。
expr: ファクト値を計算するための SQL 式access_modifier:private_accessに設定してクエリで非表示にする(中程度の計算に便利)data_type:ファクトのデータ型
メトリック¶
メトリックは、SUM、AVG、COUNT のような関数を使用してファクトやその他の列を集計することで計算される、ビジネスパフォーマンスの定量化可能な測定値です。
2種類のメトリック:
テーブルレベルのメトリック:特定の論理テーブルをスコープとし、そのテーブル内でデータを集約
派生メトリック:複数のテーブルのメトリックを組み合わせるビューレベルのメトリック
メトリックのプロパティ¶
expr: 集計関数を使用する SQL 式access_modifier:private_accessに設定してクエリで非表示にする(中程度の計算に便利)synonyms:メトリックの代替条件
メトリックのオプションプロパティ¶
:ref:`メトリックに対して非加算ディメンションを指定する<label-semantic_views_metrics_semi_additive>`場合は、次のフィールドを使用します。
non_additive_dimensionsメトリックにおいて、集計を行うべきではないディメンションを指定します。
tableディメンションを含む論理テーブルの名前。
dimensionディメンションの名前。
sort_direction非加算ディメンションのソート順。次の値のいずれかを指定できます。
ascending:ディメンション値を昇順に並べ替えます。descending:ディメンション値を降順に並べ替えます。
デフォルト:
ascendingnull_orderNULLsを、非NULL値<label-semantic_views_metrics_semi_additive_order>`の:ref:`前にソートするか、後にソートするかを指定します。次の値のいずれかを指定できます。
first:NULLsは非NULL値の前にソートされます。last:NULLsは非NULL値の後にソートされます。
デフォルト:
sort_direction`フィールド(:code:`ascending`または:code:`descending)の値に依存します。:ref:`ORDER BYドキュメント<label-order_by_nulls>にある使用上の注意`を参照してください。
注釈
行は非加算ディメンションでソートされるため、ディメンションを指定する順序が重要です。これは、:doc:`/sql-reference/constructs/order-by`句で列を指定する順序と似ています。
次の例では、``m_account_balance``メトリックが``year_dim``および``month_dim``ディメンションで集計できないことを示しています。
セマンティックビューの2つの特定の論理テーブル間に複数の関係パスがある場合は、次のフィールドを使用して:ref:
使用する関係パスを指定します<label-semantic_views_create_logical_tables_relations>。using_relationships-
メトリックを計算するときに論理テーブルを結合するために使用する関係の名前を指定します。
派生メトリック¶
派生メトリックは、特定のテーブルに関連付けられていないビューレベルのメトリックです。複数のテーブルのメトリックを組み合わせたり、ビュー全体で計算を実行したりできます。
派生メトリックの例:
リレーションシップ¶
関係は、論理テーブルがどのように結合するかを定義します。各関係は以下の対象を指定します。
left_table:外部キーを含むテーブルright_table:参照されているテーブルrelationship_columns:left_columnおよびright_columnとして結合する列のペア
関係型(1対1、多対1)は、データとプライマリキーの定義から自動的に推測されます。
注釈
従来のセマンティックモデルとは異なり、セマンティックビューは明示的な join_type または relationship_type の仕様を必要としません。これらは自動的に決定されます。
Filters¶
フィルターは、名前で参照できる一般的に使用されるフィルタリング条件を定義します。これにより、クエリ全体で一貫したフィルタリングロジックを確保できます。
例:
検証済みクエリ¶
確認済みクエリは、対応する SQL クエリがある質問例です。Cortex Analyst が、類似した質問に回答し、ユーザーのドキュメントとして提供する方法を理解できるようにします。
プロパティ:
question:自然言語の質問sql: 質問に回答する SQL クエリverified_by:クエリが正しいことを確認したオプションの人物verified_at:確認時のオプションのタイムスタンプuse_as_onboarding_question:ユーザーへの提案としてこれを表示するオプションのフラグ
アクセス修飾子¶
セマンティックビューは、ファクトとメトリックのアクセス修飾子をサポートしており、可視性を制御できます。
``public_access``(デフォルト):ユーザーにより表示およびクエリ可能
private_access:クエリで非表示、中間計算にのみ使用
例:
Cortex Analystのカスタム手順¶
SQL コマンドを使用して、セマンティックビュー定義でカスタム指示を提示することができます。これらの手順は、クエリがどのように生成されるか、また質問がどのように分類されるかをガイドします。これらの手順は YAML 仕様の一部ではありませんが、CREATE SEMANTIC VIEW コマンドを使用して設定されます。
詳細については、 Cortex Analyst のカスタム指示の提供 をご参照ください。
セマンティックビュー YAML の例¶
セマンティックビューの YAML 仕様の詳細な例を次に示します。
YAML でのセマンティックビューの作成¶
YAML 仕様のセマンティックビューを作成するには、SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML ストアドプロシージャを使用します。
詳細については、 YAML仕様からセマンティックビューを作成する をご参照ください。
セマンティックビューからの YAML の取得¶
セマンティックビューを YAML 形式にエクスポートするには、SYSTEM$READ_YAML_FROM_SEMANTIC_VIEW 関数を使用します。
詳細については、 セマンティックビューのYAML仕様を取得する をご参照ください。
従来のセマンティックモデルとの相違¶
従来のセマンティックモデルの YAML ファイルからセマンティックビューに移行する場合は、これらの重要な相違点に注意してください。
機能 |
従来のセマンティックモデル |
セマンティックビュー |
|---|---|---|
ストレージ |
ステージ上の YAML ファイル |
データベースのスキーマレベルのオブジェクト |
権限 |
ステージベースのアクセス制御 |
Snowflake全体の RBAC 統合 |
共有 |
手動ファイル共有 |
Snowflakeのネイティブ共有 |
結合タイプ |
|
自動推論 |
派生メトリック |
サポート対象外 |
包括的にサポート |
アクセス修飾子 |
サポート対象外 |
|
カスタムの手順 |
YAML ファイル内 |
SQL コマンドで設定 |
従来のセマンティックモデルからセマンティックビューに変換する場合:
join_typeおよびrelationship_typeを関係からを削除ビューレベルの計算に派生メトリックの使用を検討
プライベートに設定するファクト/メトリックに
access_modifierを追加カスタム手順を SQLCREATESEMANTICVIEW コマンドに移行
