Cortex Analyst-Spezifikation des semantischen Modells¶
Warum sollten Sie semantische Modelle verwenden?¶
Cortex Analyst ermöglicht es Benutzern, Fragen zu Snowflake-Daten in natürlicher Sprache zu stellen. In der Regel besteht eine Diskrepanz zwischen dem Vokabular, das von Benutzern bei Datenfragen verwendet wird, und dem Vokabular, das im Datenbankschema verwendet wird. Diese Benutzer verwenden in der Regel geschäfts- oder domänenspezifische Begriffe, während das Datenbankschema möglicherweise Abkürzungen oder Begriffe verwendet, die häufig in ETL-Pipelines verwendet werden. Datenbankschemas enthalten oft auch keine semantischen Details, die jemandem, der mit einem Datensatz nicht vertraut ist, helfen, die Daten zu verstehen. Dieser Unterschied im Vokabular macht es für Cortex Analyst schwierig, Datenfragen mit hoher Präzision zu beantworten.
Ein semantisches Modell ist ein einfacher Mechanismus, der diese Probleme löst, indem er die Angabe zusätzlicher semantischer Details zu einem Datenset ermöglicht. Diese zusätzlichen semantischen Details, wie aussagekräftigere Namen oder Synonyme, ermöglichen es Cortex Analyst, Datenfragen viel zuverlässiger zu beantworten.
Bemerkung
Semantische Modelle werden als Metadaten betrachtet.
Die wichtigsten Konzepte¶
Bemerkung
In diesem Thema werden die Artefakte der Basisdatenbank als „physische“ Artefakte und die Artefakte des semantischen Modells als „logische“ Artefakte bezeichnet.
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.
Ein Kernkonzept der semantischen Modelle von Snowflake ist die logische Tabelle. Eine logische Tabelle kann man sich als eine einfache Ansicht einer physischen Datenbanktabelle oder Ansicht vorstellen. Jede logische Tabelle ist eine Sammlung von logischen Spalten, die in dimensions
, time_dimensions
und measures
unterteilt sind.
Eine logische Spalte kann entweder eine Referenz auf eine zugrunde liegende physische Spalte sein oder ein Ausdruck, der eine oder mehrere physische Spalten zusammenfasst. Der Ausdruck kann einfach sein, wie eine Zeichenfolge oder eine mathematische Operation, oder er kann Aggregationsausdrücke enthalten. Sie können zum Beispiel einen Ausdruck wie SUM(click)/SUM(spend)
verwenden, um die Kosten pro Klick zu berechnen (CPC).
Das semantische Modell kann auch ein Geprüftes Abfrage-Repository (VQR) enthalten, das dazu beitragen kann, die Präzision und Vertrauenswürdigkeit der Ergebnisse zu verbessern, indem es eine Sammlung von Fragen und entsprechenden SQL-Abfragen zu deren Beantwortung bereitstellt.
Das semantische Modell für die Cortex Analyst-Spezifikation finden Sie unter YAML. Es liefert die notwendigen semantischen Informationen, um Fragen in natürlicher Sprache mit hoher Präzision zu beantworten.
Die allgemeine Syntax ist wie folgt:
# Name and description of the semantic model.
name: <name>
description: <string>
# 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>
# Measure columns in the logical table.
measures:
- name: <name>
synonyms: <array of strings>
description: <string>
expr: <SQL expression>
data_type: <data type>
default_aggregation: <aggregate function>
# Commonly used filters over the logical table.
filters:
- name: <name>
synonyms: <array of strings>
description: <string>
expr: <SQL expression>
# Example questions and queries that answer them
verified_queries:
# Verified Query (1 of n)
- 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.
Erstellen Sie ein semantisches Modell mit dem Modellgenerator¶
Verwenden Sie den semantischen Modellgenerator, um ein semantisches Modell aus Ihren Tabellen zu erstellen. Anstatt ein semantisches Modell manuell mit Ihrer eigenen YAML-Spezifikation zu erstellen, können Sie den Modellgenerator in Snowsight verwenden, um Zeit zu sparen. Der Prozess der Erstellung eines semantischen Modells umfasst folgende Schritte:
Bereitstellung einer Beschreibung mit grundlegenden Informationen über das Modell.
Bereitstellung der Datenquelle, die Sie zur Erstellung des Modells verwenden. Sie müssen mindestens eine Tabelle oder Ansicht bereitstellen.
Auswählen der Spalten, die Sie zum Erstellen des Modells verwenden.
Um mit der Erstellung des Modells zu beginnen, navigieren Sie zur Seite Let’s Create a Semantic Model:
Wählen Sie in Snowsight die Option AI & ML aus.
Wählen Sie neben Cortex Analyst die Option Try.
Wählen Sie Create new aus.
Sie haben die Beschreibungsseite des semantischen Modellgenerators geöffnet. Um ein semantisches Modell zu erstellen, gehen Sie wie folgt vor:
Für Description geben Sie Informationen über das semantische Modell an. Sie müssen den Dateinamen, den Dateispeicherort und den Modellnamen angeben. Sie können auch eine Beschreibung mit Kontext zu den Daten angeben.
(Optional) Geben Sie für User Questions die Arten von Fragen an, die Benutzer zu den Daten stellen können. Der Modellgenerator verwendet die Informationen, die Sie in das Feld eingeben, um Tabellen, Ansichten und Spalten vorzuschlagen, die Sie zur Erstellung des Modells verwenden können.
Geben Sie unter Select Data (Table/View) die Datenquelle an, die Sie zur Erstellung des semantischen Modells verwenden. Sie müssen mindestens eine Tabelle oder Ansicht bereitstellen. Es gibt keine Begrenzung für die Tabellen oder Ansichten, die Sie angeben können, aber wir empfehlen, nicht mehr als 10 für das semantische Modell zu verwenden.
Wählen Sie unter Select Columns die Spalten aus, die Sie zur Erstellung des semantischen Modells verwenden. Sie können alle Spalten oder bestimmte Spalten auswählen. Aus Leistungsgründen empfehlen wir, nicht mehr als 50 Spalten zu verwenden.
Nachdem Sie das Modell erstellt haben, speichern Sie es in einem Stagingbereich. Um zu speichern, wählen Sie Save in der oberen rechten Ecke des Bildschirms. Wenn Sie weitere Änderungen vornehmen müssen, können Sie das Modell entweder mit Snowsight oder direkt in der YAML-Datei bearbeiten.
Ö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:
Wählen Sie Open semantic model aus.
Wählen Sie Open aus.
Wählen Sie Select from stage aus.
Wählen Sie die Datenbank und das Schema aus.
Klicken Sie außerhalb des Dialogfelds.
Wählen Sie den Stagingbereich, in dem Sie die Datei gespeichert haben.
Wählen Sie
Öffnen
.
Bemerkung
Wenn Sie Ihr semantisches Modell in Ihrem Stagingbereich nicht sehen, versuchen Sie, die Liste der Modelle zu aktualisieren, nicht die Seite.
Definieren von Verknüpfungen¶
Cortex Analyst unterstützt SQL-Verknüpfungen, die eine erweiterte Datenanalyse über mehrere Tabellen hinweg ermöglichen. Mit diesem Feature können Sie ganz einfach Daten aus Faktentabellen und zugehörigen Dimensionstabellen abfragen.
Definieren von Verknüpfungen im semantischen Kontext der YAML-Datei¶
Um Verknüpfungen in Cortex Analyst zu verwenden, aktualisieren Sie den semantischen YAML-Kontext mit den Beziehungsdefinitionen. Geben Sie die Definitionen nach der Liste der Tabellen an:
relationships:
- name: <string>
left_table: <string>
right_table: <string>
relationship_columns:
- left_column: <string>
right_column: <string>
- left_column: <string>
right_column: <string>
join_type: <join_type>
relationship_type: <relationship_type>
Wobei:
name
: Ein eindeutiger Bezeichner für die Beziehung.left_table
undright_table
: Logische Tabellennamen, wie zuvor in Ihrer YAML-Datei definiert.relationship_columns
: Gibt nur Verknüpfungen an, die auf Gleichheit basieren. Verknüpfungen an, die nicht auf Gleichheit basieren, werden derzeit nicht unterstützt. Sie müssen logische Spaltennamen verwenden (keine Ausdrücke erlaubt).join_type
: Unterstützt entwederleft_outer
oderinner joins
.relationship_type
: Unterstütztmany_to_one
- oderone_to_one
-Beziehungen.
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. Weitere Beispiele finden Sie unter:
tables:
- name: orders
primary_key:
columns:
- order_id
- location_id
Beispiel¶
Für eine Verknüpfung, die ein einfaches Sternschema verwendet, siehe jaffle_shop_star_schema.yaml
.
Tipps für die Erstellung eines semantischen Modells¶
Organisieren Sie Ihre Datei YAML 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 legt eine Größenbeschränkung für die semantische Modelldatei ( 1MB ) fest, um die Größe API-Eingaben zu begrenzen.
Cortex Analyst führt den Abruf von Beispielwerten und verifizierten Abfragen im Speicher durch, die dem semantischen YAML hinzugefügt wurden. Nach dem Entfernen aller Beispiele und verifizierten Abfragen kann das semantische Modell 32-K-Token nicht überschreiten (etwa 4 × 32 K Zeichen oder ungefähr 128 KB). Sie können den Befehl zur Validierung des semantischen Modells verwenden, um sicherzustellen, dass Ihre Datei innerhalb dieser Beschränkungen bleibt. Die Beschränkungen können sich erhöhen, wenn die Unterstützung für Modelle mit größeren Kontextfenstern hinzugefügt wird.
Spezifikation¶
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
name
Ein 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 (empfohlen)
description
Eine Beschreibung dieses semantischen Modells, einschließlich Details über die Art der Analyse, für die es nützlich ist.
tables
Eine Liste der logischen Tabellen in diesem semantischen Modell
Tabelle¶
Eine logische Tabelle kann man sich als eine Ansicht einer physischen Datenbanktabelle oder Ansicht vorstellen. Es hat die folgenden Felder:
Erforderlich
name
Ein 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_table
Ein vollständig qualifizierter Name der zugrunde liegenden Basistabelle in der Datenbank.
Optional (empfohlen)
synonyms
Eine Liste anderer Begriffe/Phrasen, die sich auf diese Tabelle beziehen. Muss für alle Synonyme innerhalb der logischen Tabelle eindeutig sein.
description
Eine Beschreibung dieser Tabelle.
dimensions
Eine Liste der Dimensionsspalten in dieser Tabelle.
time_dimensions
Eine Liste der Zeitdimensionsspalten in dieser Tabelle
measures
Eine Liste der Maßnahmen in dieser Tabelle
filters
Vordefinierte 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
name
Ein 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.
expr
Der 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_type
Der Datentyp dieser Dimension. Eine Übersicht zu allen Datentypen in Snowflake finden Sie unter Referenz der SQL-Datentypen. Beachten Sie, dass
VARIANT
,OBJECT
,GEOGRAPHY
undARRAY
derzeit nicht unterstützt werden.
Optional
synonyms
Eine Liste anderer Begriffe/Phrasen, die sich auf diese Dimension beziehen. Muss für alle Synonyme in diesem semantischen Modell eindeutig sein.
description
Eine kurze Beschreibung dieser Dimension, einschließlich der Daten, die sie enthält.
unique
Ein boolescher Wert, der angibt, dass diese Dimension 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.
cortex_search_service
Gibt 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_table
verwendet.schema
: (optional) Das Schema, in dem sich der Cortex Search Service befindet. Standardmäßig wird das Schema vonbase_table
verwendet.
Dieses Feld ersetzt das Feld
cortex_search_service_name
, in dem nur der Name angegeben werden konnte.cortex_search_service_name
ist veraltet.is_enum
Ein boolescher Wert. Wenn Sie
True
wählen, werden die Werte im Feldsample_values
als die vollständige Liste der möglichen Werte betrachtet und das Modell wählt nur aus diesen Werten, wenn es nach dieser Spalte filtert.
Zeitliche Dimension¶
Eine Zeitdimension beschreibt Zeitwerte, wie sale_date, created_at und year. Es hat die folgenden Felder:
Erforderlich
name
Ein 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.
expr
Der 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_type
Der Datentyp dieser Zeitdimension Eine Übersicht zu allen Datentypen in Snowflake finden Sie unter Referenz der SQL-Datentypen. Beachten Sie, dass
VARIANT
,OBJECT
,GEOGRAPHY
undARRAY
derzeit nicht unterstützt werden.
Optional (empfohlen)
synonyms
Eine Liste anderer Begriffe/Phrasen, die sich auf diese Zeitdimension beziehen. Muss für alle Synonyme in diesem semantischen Modell eindeutig sein.
description
Eine 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.
Maßnahme¶
Eine Kennzahl beschreibt numerische Werte, wie z. B. Umsatz, Impressionen und Gehalt. Es hat die folgenden Felder:
Erforderlich
name
Ein beschreibender Name für diese Maßnahme
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.
expr
Der 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_type
Der Datentyp dieser Maßnahme. Eine Übersicht zu allen Datentypen in Snowflake finden Sie unter Referenz der SQL-Datentypen. Beachten Sie, dass
VARIANT
,OBJECT
,GEOGRAPHY
undARRAY
derzeit nicht unterstützt werden.
Optional (empfohlen)
synonyms
Eine Liste anderer Begriffe/Phrasen, die sich auf diese Maßnahme beziehen. Muss für alle Synonyme in diesem semantischen Modell eindeutig sein.
description
Eine kurze Beschreibung dieser Maßnahme, einschließlich der Daten, die diese Spalte enthält.
unique
Ein boolescher Wert, der angibt, dass diese Spalte eindeutige Werte hat.
default_aggregation
Die Standardaggregation, die auf diese Spalte im Kontext einer Gruppierung angewendet wird. Einige Beispielwerte sind sum, avg, min, max, median, count, count_distinct usw.
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.
Filter¶
Ein Filter stellt einen SQL-Ausdruck dar, der zum Filtern verwendet wird. Es hat die folgenden Felder:
Erforderlich
name
Ein beschreibender Name für diesen Filter
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.
expr
Der SQL-Ausdruck dieses Filters, der sich auf logische Spalten bezieht
Optional (empfohlen)
synonyms
Eine Liste anderer Begriffe/Phrasen, die sich auf diesen Filter beziehen. Muss für alle Synonyme in diesem semantischen Modell eindeutig sein.
description
Eine kurze Beschreibung dieses Filters, einschließlich Details darüber, wofür dieser Filter normalerweise verwendet wird.
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
database
Name der Datenbank.
schema
Name des Schemas.
table
Name der Tabelle.
Geprüfte Abfragen¶
Unter Cortex Analyst Geprüftes Abfrage-Repository finden Sie Informationen über den Zweck und die Struktur dieses Abschnitts der YAML-Datei.
Beispiel YAML¶
Dieser Abschnitt zeigt ein Beispiel für ein semantisches YAML-Modell.
In diesem Beispiel wird davon ausgegangen, dass Sie die folgende Tabelle in Ihrem Schema haben:
CREATE TABLE sales.public.sd_data (
id INT PRIMARY KEY,
dt DATETIME,
cat VARCHAR(255),
loc VARCHAR(255),
cntry VARCHAR(255),
chn VARCHAR(50),
amt DECIMAL(10, 2),
unts INT,
cst DECIMAL(10, 2)
);
Diese Tabelle hat kryptische Spaltennamen und nicht viele semantische Informationen über die Spalten. Im Folgenden finden Sie ein semantisches YAML-Modell, das weitere semantische Informationen über diese Tabelle enthält:
# Name and description of the semantic model.
name: Sales Data
description: This semantic model can be used for asking questions over the sales data.
# A semantic model can contain one or more tables.
tables:
# A logical table on top of the 'sd_data' base table.
- name: sales_data
description: A logical table capturing daily sales information across different store locations and product categories.
# The fully qualified name of the base table.
base_table:
database: sales
schema: public
table: sd_data
# Dimension columns in the logical table.
dimensions:
- name: product_category
synonyms:
- "item_category"
- "product_type"
description: The category of the product sold.
expr: cat
data_type: NUMBER
unique: false
sample_values:
- "501"
- "544"
- name: store_country
description: The country where the sale took place.
expr: cntry
data_type: TEXT
unique: false
sample_values:
- "USA"
- "GBR"
- name: sales_channel
synonyms:
- "channel"
- "distribution_channel"
description: The channel through which the sale was made.
expr: chn
data_type: TEXT
unique: false
sample_values:
- "FB"
- "GOOGLE"
# Time dimension columns in the logical table.
time_dimensions:
- name: sale_timestamp
synonyms:
- "time_of_sale"
- "transaction_time"
description: The time when the sale occurred. In UTC.
expr: dt
data_type: TIMESTAMP
unique: false
# Measure columns in the logical table.
measures:
- name: sales_amount
synonyms:
- "revenue"
- "total_sales"
description: The total amount of money generated from the sale.
expr: amt
data_type: NUMBER
default_aggregation: sum
- name: sales_tax
description: The sales tax paid for this sale.
expr: amt * 0.0975
data_type: NUMBER
default_aggregation: sum
- name: units_sold
synonyms:
- "quantity_sold"
- "number_of_units"
description: The number of units sold in the transaction.
expr: unts
data_type: NUMBER
default_aggregation: sum
- name: cost
description: The cost of the product sold.
expr: cst
data_type: NUMBER
default_aggregation: sum
- name: profit
synonyms:
- "earnings"
- "net income"
description: The profit generated from a sale.
expr: amt - cst
data_type: NUMBER
default_aggregation: sum
# A table can define commonly used filters over it. These filters can then be referenced in user questions directly.
filters:
- name: north_america
synonyms:
- "North America"
- "N.A."
- "NA"
description: "A filter to restrict only to north american countries"
expr: cntry IN ('canada', 'mexico', 'usa')