Cortex Analyst-Spezifikation des semantischen Modells¶
Warum sollten Sie semantische Modelle verwenden?¶
Cortex Analyst ermöglicht Benutzern die Abfrage von Snowflake-Daten in natürlicher Sprache. Geschäftsanwender verwenden jedoch oft eine Sprache, die mit dem Schema nicht kompatibel ist. Während Benutzer in ihren Fragen domänenspezifische Geschäftsbegriffe angeben, werden die zugrunde liegenden Daten oft in technischen Abkürzungen gespeichert. Zum Beispiel wird „CUST“ oft für Kunden verwendet. Diese Diskrepanz in Verbindung mit dem fehlenden semantischen Kontext des Schemas macht es für Cortex Analyst schwierig, genaue Antworten zu geben.
Semantische Modelle dienen der Zuordnung von Geschäftsterminologie zu Datenbankschemata und fügen kontextbezogene Bedeutung hinzu. Wenn ein Benutzer beispielsweise nach dem „Gesamtumsatz im letzten Monat“ fragt, kann das semantische Modell „Umsatz“ als Nettoumsatz und „letzter Monat“ als den vorhergehenden Kalendermonat definieren. Diese Zuordnung hilft Cortex Analyst, die Absicht des Benutzers zu verstehen und genaue Antworten zu geben.
Bemerkung
Semantische Modelle werden als Metadaten betrachtet.
Die wichtigsten Konzepte¶
Bemerkung
In diesem Thema werden Datenbankartefakte als „physische“ Objekte bezeichnet, während semantische Modellartefakte als „logische“ Objekte bezeichnet werden.
Die Struktur und die Konzepte des semantischen Modells ähneln denen von Datenbank-Schemas, semantische Modelle ermöglichen es Ihnen, mehr semantische Informationen über Ihre Daten bereitzustellen.
Konzepte der semantischen Ebene¶
Die Struktur und die Konzepte, die die logische semantische Schicht definieren, sind denen ähnlich, die die physische Datenbankschicht definieren. Im Folgenden finden Sie die Konzepttypen für eine semantische Ebene:
Logische Tabellenebene
Modell-Ebene
Zusätzlicher Kontext
Logische Konzepte auf Tabellenebene¶
Eine logische Tabelle ist ein grundlegendes Konzept des semantischen Modells von Snowflake. Hierbei handelt es sich entweder um eine physische Datenbanktabelle oder um eine Ansicht. Sie entspricht in der Regel Geschäftsentitäten (wie Kunden, Aufträge oder Lieferanten) oder Dimensionen (wie Standort oder Zeit). Jede Zeile in einer logischen Tabelle repräsentiert normalerweise eine eindeutige Instanz der Entität, z. B. eine Kunden-ID.
Logische Tabellen enthalten die folgenden Arten von Spalten:
Fakten (quantitative Daten über Geschäftsereignisse)
Dimensionen (wer, was, wo und wie)
Uhrzeit (wann das Ereignis eingetreten ist)
Filter, die mit der logischen Tabelle verknüpft sind, damit die Abfrageergebnisse auf bestimmte Datenuntergruppen beschränkt werden können.
Sie können Metriken definieren, indem Sie Aggregationen oder Kombinationen anderer logischer Objekte verwenden.
Die folgenden Beispiele verwenden das TPC-H-Schema, das die Faktentabelle LINEITEM enthält. Eine vollständige YAML-Implementierung finden Sie in der Datei snow_tpch.
Alle folgenden Beispiele auf der Ebene der logischen Tabelle gehören zu der logischen Tabelle order_lineitems.
tables:
- name: order_lineitems
description: >
The order line items table contains detailed information about each item within an
order, including quantities, pricing, and dates.
base_table:
database: SNOWFLAKE_SAMPLE_DATA
schema: TPCH_SF1
table: LINEITEM
primary_key:
columns:
- order_key
- order_lineitem_number
Die Dimension stellt kategorische Daten dar, die den Fakten einen Kontext geben, wie z. B. Produkt-, Kunden- oder Standortinformationen. Dimensionen enthalten in der Regel beschreibende Textwerte, wie z. B. Produktnamen oder Kundenadressen. Sie werden verwendet, um Fakten in Analysen und Berichten zu filtern, zu gruppieren und zu kennzeichnen.
Eine Zeitdimension bietet zeitlichen Kontext für die Analyse von Fakten über verschiedene Zeiträume hinweg. Sie ermöglicht die Nachverfolgung von Kennzahlen über bestimmte Zeitintervalle (Daten, Monate, Jahre) und unterstützt Analysen wie die Identifizierung von Trends und den Vergleich zwischen verschiedenen Zeiträumen.
time_dimensions:
- name: shipment_duration
synonyms:
- "shipping time"
- "shipment time"
description: The time it takes for items to be shipped.
expr: DATEDIFF(day, lineitem.L_SHIPDATE, lineitem.L_RECEIPTDATE)
data_type: NUMBER
unique: false
Fakten sind messbare, quantitative Daten, die den Kontext für Analysen liefern. Fakten stellen numerische Werte dar, die sich auf Geschäftsprozesse beziehen, z. B. Umsatz, Kosten oder Menge. Ein Fakt ist ein unaggregiertes Konzept auf Zeilenebene.
# Fact columns in the logical table.
facts:
- name: net_revenue
synonyms:
- "revenue after discount"
- "net sales"
description: Net revenue after applying discounts.
expr: lineitem.L_EXTENDEDPRICE * (1 - lineitem.L_DISCOUNT)
data_type: NUMBER
For semantic views, facts can be made private (accessible in the semantic view, but
not by end users) by setting the access_modifier field to private_access. By default, facts are public (accessible by
users).
Ein Filter ist eine Bedingung, die die Abfrageergebnisse auf bestimmte Datenuntergruppen einschränkt, die auf Kriterien wie Zeitraum, Ort oder Kategorie basieren.
- name: north_america
synonyms:
- "NA"
- "North America region"
description: >
Filter to restrict data to orders from North America.
comments: Used for analysis focusing on North American customers.
expr: nation.N_NAME IN ('Canada', 'Mexico', 'United States')
Eine Kennzahl ist ein quantifizierbares Maß für die Geschäftsleistung, ausgedrückt als SQL-Formel. Sie können Kennzahlen als wichtige Leistungsindikatoren (KPIs) in Berichten und Dashboards verwenden. Sie können zwei Arten von Kennzahlen berechnen:
Reguläre Kennzahlen aggregieren Werte (mit Funktionen wie SUM oder AVG) für eine Faktenspalte.
Derived metrics are calculated from existing metrics, using arithmetic operations such as addition or division. Derived metrics are supported only in semantic views.
Definieren Sie Kennzahlen auf ihrer detaillierteste Ebene für die Aggregation auf höheren Ebenen. Definieren Sie beispielsweise total_revenue auf Einzelpostenebene, um eine Aggregation nach Kunden, Lieferanten oder Regionen zu ermöglichen.
Das folgende Beispiel zeigt zwei reguläre metrische Berechnungen: eine einfache und eine komplexere Berechnung. Diese sind innerhalb einer table-Definition definiert, sodass sie auf diese logische Tabelle beschränkt sind.
metrics:
# Simple metric referencing objects from the same logical table
- name: total_revenue
expr: SUM(lineitem.l_extendedprice * (1 - lineitem.l_discount))
# Complex metric referencing objects from multiple logical tables.
# The relationships between tables have been defined below.
- name: total_profit_margin
description: >
The profit margin from orders. This metric is not additive
and should always be calculated directly from the base tables.
expr: (SUM(order_lineitems.net_revenue) -
SUM(part_suppliers.part_supplier_cost * order_lineitems.lineitem_quantity))
/ SUM(order_lineitems.net_revenue)
Tipp
For semantic views, metrics can be made private (accessible in the semantic view, but not by end users) by setting the
access_modifier field to private_access. By default, metrics are public (accessible by users).
Erlaubte Referenzen¶
Ausdrücke für Dimensionen, Fakten, Filter oder reguläre Metriken im Tabellenbereich können auf Folgendes verweisen:
Physische Spalten aus ihrer eigenen Basistabelle
Logische Spalten innerhalb der gleichen logischen Tabelle
Logische Spalten aus anderen logischen Tabellen im semantischen Modell
For semantic views, derived metrics can reference metrics defined in any logical table in the semantic view or other derived metrics.
Bemerkung
Ausdrücke können keine physischen Spalten aus anderen physischen Tabellen referenzieren.
Konzepte auf Modellebene¶
Beziehungen verbinden logische Tabellen durch Verknüpfungen auf gemeinsamen Schlüsseln. Es könnte zum Beispiel eine Beziehung zwischen den Tabellen Kunden und Bestellungen durch eine Verknüpfung über die Spalte Kunden_id bestehen. Sie können Verknüpfungen verwenden, um Auftragsdaten mit Kundenattributen zu analysieren.
relationships:
# Relationship between orders and lineitems
- name: order_lineitems_to_orders
left_table: order_lineitems
right_table: orders
relationship_columns:
- left_column: order_key
right_column: order_key
# For semantic views, do not specify
# join_type or relationship_type.
join_type: left_outer
relationship_type: many_to_one
# Relationship between lineitems and partsuppliers
- name: order_lineitems_to_part_suppliers
left_table: order_lineitems
right_table: part_suppliers
# The relationship requires equality of multiple columns from each table
relationship_columns:
- left_column: part_key
right_column: part_key
- left_column: supplier_key
right_column: supplier_key
# For semantic views, do not specify
# join_type or relationship_type.
join_type: left_outer
relationship_type: many_to_one
Ein verifiziertes Abfrage-Repository (VQR) ist eine Sammlung von Fragen und entsprechenden SQL-Abfragen, die als korrekt verifiziert wurden. Sie können die Abfragen verwenden, um die Genauigkeit der Ergebnisse von Cortex Analyst zu verbessern.
Sie können Benutzerdefinierte Anweisungen in Cortex Analyst verwenden, um eine bessere Kontrolle über die SQL-Abfrage von Cortex Analyst zu haben. In den benutzerdefinierten Anweisungen stellen Sie dem LLM den einzigartigen Kontext Ihres Unternehmens zur Verfügung.
Semantischen Modelle von Cortex Analyst sind in YAML spezifiziert. Das Modell liefert die notwendigen semantischen Informationen, um natürlichsprachliche Fragen mit hoher Präzision zu beantworten.
YAML-Format¶
YAML ist ausgewogen zwischen menschlicher Lesbarkeit und Präzision. Geschäftsanwender können es verstehen, während Dateningenieure und Analysten technische Konzepte klar definieren können.
Die allgemeine Syntax eines semantischen Modells in Cortex Analyst lautet:
# Name and description of the semantic model.
name: <name>
description: <string>
comments: <string>
# Logical table-level concepts
# A semantic model can contain one or more logical tables.
tables:
# A logical table on top of a base table.
- name: <name>
description: <string>
# The fully qualified name of the base table.
base_table:
database: <database>
schema: <schema>
table: <base table name>
# Dimension columns in the logical table.
dimensions:
- name: <name>
synonyms: <array of strings>
description: <string>
expr: <SQL expression>
data_type: <data type>
unique: <boolean>
cortex_search_service:
service: <string>
literal_column: <string>
database: <string>
schema: <string>
is_enum: <boolean>
# Time dimension columns in the logical table.
time_dimensions:
- name: <name>
synonyms: <array of strings>
description: <string>
expr: <SQL expression>
data_type: <data type>
unique: <boolean>
# Fact columns in the logical table.
facts:
- name: <name>
synonyms: <array of strings>
description: <string>
access_modifier: < public_access | private_access > # Supported only for semantic views.
# Default is public_access.
expr: <SQL expression>
data_type: <data type>
# Regular metrics scoped to the logical table.
metrics:
- name: <name>
synonyms: <array of strings>
description: <string>
access_modifier: < public_access | private_access > # Supported only for semantic views.
# Default is public_access.
expr: <SQL expression>
# Commonly used filters over the logical table.
filters:
- name: <name>
synonyms: <array of strings>
description: <string>
expr: <SQL expression>
# Model-level concepts
# Relationships between logical tables
relationships:
- name: <string>
left_table: <table>
right_table: <table>
relationship_columns:
- left_column: <column>
right_column: <column>
- left_column: <column>
right_column: <column>
# For semantic views, do not specify
# join_type or relationship_type.
join_type: <left_outer | inner>
relationship_type: < one_to_one | many_to_one >
# Derived metrics scoped to the semantic view.
# Derived metrics are supported only for semantic views.
metrics:
- name: <name>
synonyms: <array of strings>
description: <string>
access_modifier: < public_access | private_access > # Default is public_access
expr: <SQL expression>
# Additional context concepts
# Verified queries with example questions and queries that answer them
verified_queries:
- name: # A descriptive name of the query.
question: # The natural language question that this query answers.
verified_at: # Optional: Time (in seconds since the UNIX epoch, January 1, 1970) when the query was verified.
verified_by: # Optional: Name of the person who verified the query.
use_as_onboarding_question: # Optional: Marks this question as an onboarding question for the end user.
sql: # The SQL query for answering the question
Eine Beispielspezifikation finden Sie in der Datei snow_tpch.yaml.
Create a semantic view using the AI-assisted model generator¶
Use the AI-assisted generator to create a semantic model that combines semantic information from multiple sources. For more information about the AI-assisted generator, see Using the AI-assisted generator to create a semantic view.
To create the model, complete the following steps:
Sign in to Snowsight.
In the navigation menu, select AI & ML » Cortex Analyst.
In the title bar, select Create new » Create new Semantic Model.
Select a location to store the semantic model after creation.
- Enter a name for the semantic model.
This name automatically populates the File name field.
For Description, specify information about the semantic model.
Optional: Enter a different file name.
Select Next.
Optional: To provide context, for SQL Queries, provide example questions and their respective SQL queries that you want to use as part of the model.
Bemerkung
The AI-assisted generator runs EXPLAIN on these queries, so these queries should return actual data. If they do not, Snowflake doesn’t guarantee proper performance.
For Select tables, provide the data source that you’re using to create the semantic model. You must provide at least one table or view. There’s no limit on the tables or views that you can specify, but we recommend not using more than 10 for the semantic model.
Select Next.
For Select columns, select the columns that you’re using to create the semantic model. You can select all the columns or specific columns. For performance reasons, we recommend not using more than 50 columns.
Select whether you want to add sample values from each column to the semantic model.
Sample values help improve the accuracy of Cortex Analyst’s results.
Select whether you want to add AI-generated descriptions for tables and columns to the semantic model.
The AI-generated descriptions are based on the column names and sample values.
Select Create and save.
You can view the progress of the model generation, including details about the steps that the model generator is taking, on the semantic model page. The process can take a few minutes.
To make further modifications, edit the model by either using Snowsight or editing the YAML file directly.
Cortex Analyst automatically generates suggestions to improve the semantic model after creation. Cortex Analyst uses the query history accessible by the role used to create the semantic model to generate both relationships and verified query suggestions. It might take some time for the suggestions to appear. After the suggestions appear, you can review them and apply them to the model as needed.
Öffnen Sie ein vorhandenes semantisches Modell¶
Nachdem Sie ein semantisches Modell erstellt haben, können Sie es in Snowsight öffnen. Um ein semantisches Modell zu öffnen, gehen Sie wie folgt vor:
Sign in to Snowsight.
In the navigation menu, select AI & ML » Cortex Analyst.
On the Semantic models tab, select the database, schema, and stage where the semantic model was saved.
From the list of semantic models, select the semantic model that you want to open.
Wählen Sie Open aus.
Bemerkung
Wenn Sie Ihr semantisches Modell in Ihrem Stagingbereich nicht sehen, versuchen Sie, die Liste der Modelle zu aktualisieren, nicht die Seite.
Tipps für die Erstellung eines semantischen Modells¶
Organisieren Sie Ihre YAML-Datei nach Geschäftsbereichen oder Themen
Strukturieren Sie Ihre YAML-Dateien so, dass sie sich an bestimmten Geschäftsbereichen oder Themen orientieren und der Bereich fokussiert bleibt. Erstellen Sie zum Beispiel separate semantische Modelle für die Vertriebsanalyse und die Marketinganalyse.
Passen Sie Ihre Anwendungsfälle an das Zielpublikum, die erwarteten Fragen oder KPIs und die benötigten Daten an. Gut definierte Anwendungsfälle führen zu umfangreicheren semantischen Modellen und einem effektiveren Datenabruf.
Denken Sie aus der Perspektive des Endbenutzers
Identifizieren Sie die wichtigsten Fragen, die Benutzer wahrscheinlich zu diesem Thema stellen werden, und nehmen Sie nur die Tabellen und Spalten auf, die zur Beantwortung dieser Fragen erforderlich sind.
Verwenden Sie Namen und Synonyme, die dem von Ihren Benutzern verwendeten Vokabular ähnlich sind.
Fügen Sie wichtige Details in die Beschreibungsfelder ein, die für jemanden, der zum ersten Mal Abfragen zu diesem Datenset schreibt, hilfreich wären, wie z. B. die Zeitzone einer DATETIME Spalte.
Komplexe Berechnungen erfassen
Fügen Sie schwierigere oder geschäftsspezifische Abfragen in Ausdrücke ein.
Breite Tabellen anstelle von langen Tabellen verwenden
Wenn Sie eine Tabelle mit Spalten wie „Kennzahl“ und „Wert“ haben, vereinfachen Sie die Tabelle so, dass jede Kennzahl eine Spalte ist. Dieser Ansatz versorgt das Modell mit mehr semantischen Informationen zu jeder Metrik.
Automatisch generierte Beschreibungen überprüfen
Wenn Sie den semantic model generator verwenden, versucht dieser, automatisch Beschreibungen für Ihre Tabellen und Spalten zu erstellen. Überprüfen Sie diese Beschreibungen immer, um sicherzustellen, dass sie angemessen und relevant sind; nehmen Sie bei Bedarf Änderungen vor.
Beginnen Sie einfach und erweitern Sie schrittweise
Eine gut durchdachte semantische Datei gewährleistet eine höhere Präzision und Genauigkeit der Ergebnisse. Beginnen Sie mit einer kleinen Anzahl von Tabellen und Spalten und erweitern Sie das semantische Modell YAML schrittweise, um mehr Arten von Fragen abzudecken. Denken Sie daran, dass der YAML-Aufbau ein kontinuierlicher Prozess ist.
Verifizierte Abfragen einbeziehen
Ein von Geprüftes Abfrage-Repository (VQR), das eine Sammlung Fragen in einfacher Sprache und Abfragen zu deren Beantwortung darstellt, kann dazu beitragen, die Genauigkeit und Vertrauenswürdigkeit der Ergebnisse zu verbessern.
Bekannte Einschränkungen¶
Cortex Analyst imposes a 2 MB size limit on the semantic model or semantic view to restrict the size of API inputs.
Spezifikation¶
Dieser Abschnitt enthält detaillierte Spezifikationen zu den in den vorangegangenen Abschnitten beschriebenen Schlüsselkonzepten.
Semantisches Modell¶
Ein semantisches Modell stellt eine Sammlung von Tabellen dar. Das Modell enthält Beschreibungen von Tabellen, die jeweils Beschreibungen spezifischer Aspekte der Tabelle enthalten. Jede im Modell beschriebene Tabelle wird einer physischen Basistabelle in Snowflake zugeordnet.
Es hat die folgenden Felder:
Erforderlich
nameEin beschreibender Name für dieses semantische Modell
Muss eindeutig sein und den Anforderungen von Bezeichner ohne Anführungszeichen entsprechen. Es darf auch nicht mit den reservierten Schlüsselwörtern von Snowflake in Konflikt stehen.
Optional
Diese Felder sind nicht obligatorisch, sollten aber nach Möglichkeit ausgefüllt werden.
descriptionEine Beschreibung dieses semantischen Modells, einschließlich Details über die Art der Analyse, für die es nützlich ist.
tablesEine Liste der logischen Tabellen in diesem semantischen Modell
relationshipsEine Liste von Verknüpfungen zwischen logischen Tabellen.
Logische Tabelle¶
Sie können sich eine logische Tabelle als eine Ansicht über eine physische Datenbanktabelle oder Ansicht vorstellen. Es hat die folgenden Felder:
Erforderlich
nameEin beschreibender Name für diese Tabelle
Muss eindeutig sein und den Anforderungen von Bezeichner ohne Anführungszeichen entsprechen. Es darf auch nicht mit den reservierten Schlüsselwörtern von Snowflake in Konflikt stehen.
base_tableEin vollständig qualifizierter Name der zugrunde liegenden Basistabelle in der Datenbank.
Optional
Diese Felder sind nicht obligatorisch, sollten aber nach Möglichkeit ausgefüllt werden.
synonymsEine Liste anderer Begriffe/Phrasen, die sich auf diese Tabelle beziehen. Sie muss für alle Synonyme innerhalb der logischen Tabelle eindeutig sein.
descriptionEine Beschreibung dieser Tabelle.
primary_keyDie Primärschlüsselspalten für diese Tabelle. Erforderlich, wenn Sie Beziehungen definieren.
dimensionsEine Liste der Dimensionsspalten in dieser Tabelle.
time_dimensionsEine Liste der Zeitdimensionsspalten in dieser Tabelle
factsEine Liste der Faktspalten in dieser Tabelle.
metricsEine Liste der Metriken in dieser Tabelle.
filtersVordefinierte Filter für diese Tabelle, falls vorhanden.
Dimension¶
Eine Dimension beschreibt kategoriale Werte wie Status, user_type, Plattform usw. Es hat die folgenden Felder:
Erforderlich
nameEin beschreibender Name für diese Dimension
Muss eindeutig sein und den Anforderungen von Bezeichner ohne Anführungszeichen entsprechen. Es darf auch nicht mit den reservierten Schlüsselwörtern von Snowflake in Konflikt stehen.
exprDer SQL-Ausdruck für diese Dimension. Dies kann ein Verweis auf eine physische Spalte oder ein SQL-Ausdruck mit einer oder mehreren Spalten aus der zugrunde liegenden Basistabelle sein.
data_typeDer Datentyp dieser Dimension. Eine Übersicht zu allen Datentypen in Snowflake finden Sie unter Referenz der SQL-Datentypen. Beachten Sie, dass
VARIANT,OBJECT,GEOGRAPHYundARRAYderzeit nicht unterstützt werden.
Optional
Diese Felder sind nicht obligatorisch, sollten aber nach Möglichkeit ausgefüllt werden.
synonymsEine Liste anderer Begriffe/Phrasen, die sich auf diese Dimension beziehen. Muss für alle Synonyme in diesem semantischen Modell eindeutig sein.
descriptionEine kurze Beschreibung dieser Dimension, einschließlich der Daten, die sie enthält.
uniqueEin boolescher Wert, der angibt, dass diese Dimension eindeutige Werte hat.
sample_valuesBeispielwerte für diese Spalte, falls vorhanden. Fügen Sie alle Werte hinzu, auf die in den Fragen der Benutzer wahrscheinlich Bezug genommen wird.
is_enumEin boolescher Wert. Wenn Sie
Truewählen, werden die Werte im Feldsample_valuesals die vollständige Liste der möglichen Werte betrachtet und das Modell wählt nur aus diesen Werten, wenn es nach dieser Spalte filtert.cortex_search_serviceGibt den Cortex Search Service an, der für diese Dimension verwendet werden soll. Es hat die folgenden Felder:
service: Der Name des Cortex Search Service.literal_column: (optional) Die Spalte im Cortex Search Service, die die literalen Werte enthält.database: (optional) Die Datenbank, in der sich der Cortex Search Service befindet. Standardmäßig wird die Datenbank vonbase_tableverwendet.schema: (optional) Das Schema, in dem sich der Cortex Search Service befindet. Standardmäßig wird das Schema vonbase_tableverwendet.
cortex_search_serviceersetzt das Feldcortex_search_service_name, in dem nur der Name angegeben werden konnte.cortex_search_service_nameist veraltet.
Zeitliche Dimension¶
Eine Zeitdimension beschreibt Zeitwerte, wie sale_date, created_at und year. Es hat die folgenden Felder:
Erforderlich
nameEin beschreibender Name für diese Zeitdimension
Muss eindeutig sein und den Anforderungen von Bezeichner ohne Anführungszeichen entsprechen. Es darf auch nicht mit den reservierten Schlüsselwörtern von Snowflake in Konflikt stehen.
exprDer SQL-Ausdruck für diese Spalte. Dies kann ein Verweis auf eine physische Spalte oder ein SQL-Ausdruck mit einer oder mehreren Spalten aus der zugrunde liegenden Basistabelle sein.
data_typeDer Datentyp dieser Zeitdimension Eine Übersicht zu allen Datentypen in Snowflake finden Sie unter Referenz der SQL-Datentypen. Beachten Sie, dass
VARIANT,OBJECT,GEOGRAPHYundARRAYderzeit nicht unterstützt werden.
Optional
Diese Felder sind nicht obligatorisch, sollten aber nach Möglichkeit ausgefüllt werden.
synonymsEine Liste anderer Begriffe/Phrasen, die sich auf diese Zeitdimension beziehen. Muss für alle Synonyme in diesem semantischen Modell eindeutig sein.
descriptionEine kurze Beschreibung dieser Dimension, einschließlich der Daten, die sie enthält. Stellen Sie Informationen bereit, die jemandem helfen, der Abfragen mit dieser Tabelle schreibt. Geben Sie zum Beispiel für DATETIME-Spalten die Zeitzone der Daten an.
unique:Ein boolescher Wert, der angibt, dass diese Spalte eindeutige Werte hat.
sample_values:Beispielwerte für diese Spalte, falls vorhanden. Fügen Sie alle Werte hinzu, auf die in den Fragen der Benutzer wahrscheinlich Bezug genommen wird. Dieses Feld ist optional.
Fakt¶
Eine Kennzahl beschreibt numerische Werte, wie z. B. Umsatz, Impressions und Gehalt. Fakten in früheren Releases von Cortex Analyst wurden als Measures bezeichnet. Fakten sind mit Measures rückwärtskompatibel. Fakten haben die folgenden Felder:
Erforderlich
nameEin beschreibender Name für diesen Fakt.
Muss eindeutig sein und den Anforderungen von Bezeichner ohne Anführungszeichen entsprechen. Es darf auch nicht mit den reservierten Schlüsselwörtern von Snowflake in Konflikt stehen.
exprDieser SQL-Ausdruck kann sich entweder auf eine physische Spalte in der physischen Basistabelle der gleichen logischen Tabelle oder auf eine logische Spalte (Fakt, Dimension oder Zeitdimension) innerhalb dieser logischen Tabelle beziehen.
data_typeDer Datentyp dieses Fakts. Eine Übersicht zu allen Datentypen in Snowflake finden Sie unter Referenz der SQL-Datentypen. Beachten Sie, dass
VARIANT,OBJECT,GEOGRAPHYundARRAYderzeit nicht unterstützt werden.
Optional
Die folgenden Felder sind nicht erforderlich, sollten aber nach Möglichkeit enthalten sein.
synonymsEine Liste anderer Begriffe/Phrasen, die sich auf diese Maßnahme beziehen. Muss für alle Synonyme in diesem semantischen Modell eindeutig sein.
descriptionEine kurze Beschreibung dieser Maßnahme, einschließlich der Daten, die diese Spalte enthält.
uniqueEin boolescher Wert, der angibt, dass diese Spalte eindeutige Werte hat.
sample_valuesBeispielwerte für diese Spalte, falls vorhanden. Fügen Sie alle Werte hinzu, auf die in den Fragen der Benutzer wahrscheinlich Bezug genommen wird.
Das folgende Feld ist optional. Wenn es nicht enthalten ist, wird standardmäßig public_access verwendet.
access_modifierSupported only for semantic views. The possible values are
public_accessandprivate_access. If this is set toprivate_access, the fact is accessible in the semantic view, but not by end users.
Filter¶
Ein Filter stellt einen SQL-Ausdruck dar, der zum Filtern verwendet wird. Es hat die folgenden Felder:
Erforderlich
nameEin beschreibender Name für diesen Filter
exprDer SQL-Ausdruck dieses Filters, der sich auf logische Spalten bezieht
Optional
Diese Felder sind nicht obligatorisch, sollten aber nach Möglichkeit ausgefüllt werden.
synonymsEine Liste anderer Begriffe/Phrasen, die sich auf diesen Filter beziehen. Muss für alle Synonyme in diesem semantischen Modell eindeutig sein.
descriptionEine kurze Beschreibung dieses Filters, einschließlich Details darüber, wofür dieser Filter normalerweise verwendet wird.
Kennzahl¶
Eine Kennzahl beschreibt quantifizierbare Kennzahlen der Geschäftsleistung, wie z. B. Gesamtumsatz, durchschnittlicher Auftragswert oder Anzahl der Kunden. Kennzahlen können reguläre Kennzahlen oder abgeleitete Kennzahlen sein.
Reguläre Kennzahlen sind auf eine logische Tabelle beschränkt und können auf logische Spalten (Fakten, Dimensionen oder Zeitdimensionen) innerhalb derselben logischen Tabelle oder auf logische Spalten aus anderen logischen Tabellen im semantischen Modell verweisen. Im semantischen Modell befindet sich das
metric-Element innerhalb einestable-Elements. Reguläre Kennzahlen verwenden Aggregat- und Fensterfunktionen, um die Gesamtwerte für die Tabelle zu berechnen.Derived metrics (which are supported only for semantic views) are scoped to the semantic view and provide a way of combining other metrics. In the semantic model, the
metricelement is inside thesemantic_modelelement. You can refer only to other metrics (including other derived metrics) in the metric’s expression.
Kennzahlen haben die folgenden Felder:
Erforderlich
nameEin beschreibender Name für diese Kennzahl. Dieser Name bestimmt, ob es sich um eine reguläre Kennzahl handelt.
Muss eindeutig sein und den Anforderungen von Bezeichner ohne Anführungszeichen entsprechen. Es darf auch nicht mit den reservierten Schlüsselwörtern von Snowflake in Konflikt stehen.
exprDer SQL-Ausdruck für diese Spalte. Das Format des Ausdrucks hängt davon ab, ob es sich bei der Kennzahl um eine reguläre Kennzahl oder eine abgeleitete Kennzahl handelt.
Reguläre Kennzahlen, die auf eine Tabelle beschränkt sind, verweisen auf eine logische Spalte (Fakt, Dimension oder Zeitdimension) in derselben logischen Tabelle oder auf eine logische Spalte aus einer anderen logischen Tabelle im semantischen Modell und verwenden Aggregat- oder Fensterfunktionen, um Gesamtwerte zu berechnen.
Abgeleitete Metriken sind skalare Ausdrücke, die auf reguläre Kennzahlen oder andere abgeleitete Kennzahlen verweisen können.
Optional
Die folgenden Felder sind nicht erforderlich, sollten aber nach Möglichkeit enthalten sein.
synonymsEine Liste anderer Begriffe/Phrasen, die sich auf diese Kennzahl beziehen. Jedes Synonym muss unter allen Synonymen im semantischen Modell eindeutig sein.
descriptionEine kurze Beschreibung dieser Metrik, einschließlich der Daten, die diese Spalte enthält.
sample_valuesBeispielwerte für diese Spalte, falls vorhanden. Fügen Sie alle Werte hinzu, auf die in den Fragen der Benutzer wahrscheinlich Bezug genommen wird.
Das folgende Feld ist optional. Wenn es nicht enthalten ist, wird standardmäßig public_access verwendet.
access_modifierSupported only for semantic views. The possible values are
public_accessorprivate_access. If this is set toprivate_access, the metric is accessible in the semantic view, but not by end users.
Basistabelle¶
Eine Basistabelle wird verwendet, um vollständig qualifizierte Tabellennamen darzustellen. Dies ist die physische Tabelle, der eine logische Tabelle zugeordnet ist. Es hat die folgenden Felder:
Erforderlich
databaseName der Datenbank.
schemaName des Schemas.
tableName der Tabelle.
Primärschlüssel¶
Ein Primärschlüssel stellt die Spalten dar, die jede Zeile der Tabelle eindeutig repräsentieren. Der Primärschlüssel ist erforderlich, wenn die Tabelle in einer Beziehung verwendet wird. Es hat die folgenden Felder:
Erforderlich
columnsEine Liste von Dimensionsspalten, die die Tabelle eindeutig repräsentieren.
Beziehungen¶
Definiert Verknüpfungsbeziehungen zwischen logischen Tabellen. Um eine ordnungsgemäße Verknüpfungsfunktionalität zu gewährleisten, müssen Primärschlüssel für die an den Beziehungen beteiligten Tabellen definiert werden. Es hat die folgenden Felder:
Erforderlich
nameEin eindeutiger Bezeichner für die Beziehung.
left_tableLogischer Tabellenname, wie zuvor in Ihrer YAML-Datei definiert. Bei Viele-zu-eins-Beziehungen sollte die linke Tabelle die Viele-Seite der Beziehung sein, um eine optimale Leistung zu erzielen.
right_tableLogischer Tabellenname, wie zuvor in Ihrer YAML-Datei definiert. Bei Viele-zu-Eins-Beziehungen muss für eine optimale Leistung die rechte Tabelle die Eins-Seite der Beziehung sein.
relationship_columnsEine Liste gleicher Spalten aus der linken Tabelle und der rechten Tabelle, die den Verknüpfungspfad darstellen.
join_typeEntweder
left_outeroderinner.Do not specify this for semantic views.
relationship_typeEntweder
many_to_oneoderone_to_one.Do not specify this for semantic views. Instead, use unique or primary keys in the logical tables to indicate that the relationship should be many-to-one or one-to-one.
Geprüfte Abfragen¶
Unter Cortex Analyst Geprüftes Abfrage-Repository finden Sie Informationen über den Zweck und die Struktur dieses Abschnitts der YAML-Datei.
Kundenspezifische Anweisungen¶
Informationen zu kundenspezifischen Anweisungen finden Sie unter Benutzerdefinierte Anweisungen in Cortex Analyst.