Nutzung
view: my_view {
derived_table: { ... }
}
|
Hierarchie
derived_table |
Standardwert
Keine
|
Definition
Eine abgeleitete Tabelle kann wie eine normale Tabelle in Ihrer Datenbank behandelt werden. Sie können einen der folgenden Typen von abgeleiteten Tabellen erstellen:
- Eine native abgeleitete Tabelle, die mit dem Parameter
explore_sourcedefiniert wird - Eine SQL-basierte abgeleitete Tabelle mit einer Roh-SQL-Abfrage, die Sie mit dem Parameter
sqldefinieren
In bestimmten Grenzfällen ist die Verwendung des Parameters
sqlnicht zulässig. In diesen Fällen unterstützt Looker die folgenden Parameter zum Definieren einer SQL-Abfrage für PDTs:create_processsql_createMit dem Parameter
sql,create_processodersql_createdefinieren Sie die abgeleitete Tabelle mit einer SQL-Abfrage. Daher werden diese alle als SQL-basierte abgeleitete Tabellen betrachtet.
Der Parameter derived_table beginnt einen LookML-Abschnitt, in dem Sie definieren, wie eine abgeleitete Tabelle berechnet werden soll, welche Indexe oder Schlüssel sie verwenden soll und wann sie neu generiert werden soll.
Abgeleitete Tabellen können temporäre abgeleitete Tabellen sein, die ad hoc berechnet werden, wenn Nutzer Daten daraus anfordern. Sie können aber auch persistente abgeleitete Tabellen (PDTs) sein, die mithilfe einer Persistenzstrategie in Ihrer Datenbank gespeichert werden.
Wenn Ihr Dialekt inkrementelle PDTs unterstützt, können Sie sie in Ihrem Projekt verwenden. Eine inkrementelle PDT ist eine PDT, die inkrementell erstellt wird, indem neue Daten an die Tabelle angehängt werden, anstatt die gesamte Tabelle neu zu erstellen. Weitere Informationen zu inkrementellen PDTs finden Sie auf der Dokumentationsseite Inkrementelle PDTs.
Weitere Informationen zu abgeleiteten Tabellen finden Sie auf der Dokumentationsseite Abgeleitete Tabellen in Looker.
Unterparameter für abgeleitete Tabellen
In diesem Abschnitt sind die Unterparameter für abgeleitete Tabellen aufgeführt.
| Parameter | Beschreibung |
|---|---|
cluster_keys: ["column_name", "column_name", ...] |
Gibt an, dass eine PDT nach einem oder mehreren Feldern in BigQuery und Snowflake gruppiert wird. |
create_process: { sql_step:SQL query ;; } |
Gibt eine geordnete Abfolge von Schritten an, um eine PDT in einem Datenbankdialekt zu erstellen, der benutzerdefinierte DDL-Befehle erfordert. |
datagroup_trigger: datagroup_name |
Gibt die Datengruppe an, die für die Richtlinie zur Neuerstellung von PDTs verwendet werden soll. |
distribution: "column_name" |
Legt den Verteilungsschlüssel einer PDT fest, die in Redshift oder Aster erstellt wird. |
distribution_style: all | even |
Legt den Verteilungsstil einer PDT fest, die in Redshift erstellt wird. |
explore_source: explore_name { # Desired subparameters (described on explore_source page) } |
Gibt eine native abgeleitete Tabelle basierend auf einem Explore an. |
increment_key: "column_name" |
Gibt das Zeitinkrement an, in dem neue Daten abgefragt und an eine inkrementelle PDT angehängt werden sollen. |
increment_offset: N |
Gibt die Anzahl vorheriger Zeiträume an (in der Granularität des Inkrementschlüssels), die neu erstellt werden, um spät eintreffende Daten für eine inkrementelle PDT zu berücksichtigen. |
indexes: ["column_name", "column_name", ...] |
Legt die Indizes einer PDT fest, die in einer herkömmlichen Datenbank erstellt wurde (z. B. MySQL, Postgres), bzw. eines überlappenden Sortierschlüssels in Redshift. |
interval_trigger: "N (seconds | minutes | hours)" |
Gibt einen Zeitplan für die Neuerstellung einer PDT an. |
materialized_view: yes | no |
Erstellt eine materialisierte Ansicht in Ihrer Datenbank für eine abgeleitete Tabelle. |
partition_keys: ["column_name", "column_name", ...] |
Gibt an, dass eine PDT durch ein oder mehrere Felder in Presto oder durch ein einzelnes Datums-/Zeitfeld in BigQuery partitioniert wird. |
persist_for: "N (seconds | minutes | hours)" |
Legt das maximale Alter einer PDT fest, bevor diese regeneriert wird. |
publish_as_db_view: yes | no |
Erstellt eine stabile Datenbankansicht für die PDT, damit die Tabelle außerhalb von Looker abgefragt werden kann. |
sortkeys: ["column_name", "column_name", ...] |
Legt die Sortierschlüssel für eine PDT fest, die in Redshift erstellt wird. |
sql: SQL query ;; |
Deklariert die SQL-Abfrage für eine abgeleitete Tabelle. |
sql_create: { SQL query ;; } |
Definiert eine SQL CREATE-Anweisung, um eine PDT in einem Datenbankdialekt zu erstellen, der benutzerdefinierte DDL-Befehle erfordert. |
sql_trigger_value: SQL query ;; |
Gibt die Bedingung an, die dazu führt, dass eine PDT neu erstellt wird |
table_compression: GZIP | SNAPPY |
Gibt die Tabellenkomprimierung für eine PDT in Amazon Athena an. |
table_format: PARQUET | ORC | AVRO | JSON | TEXTFILE |
Gibt das Tabellenformat für eine PDT in Amazon Athena an. |
Beispiele
Erstellen Sie eine native abgeleitete customer_order_facts-Tabelle mit dem Parameter explore_source:
view: customer_order_facts {
derived_table: {
explore_source: order {
column: customer_id { field: order.customer_id }
column: lifetime_orders { field: order.count }
column: lifetime_spend { field: order.total_spend }
}
}
}
Erstellen Sie eine abgeleitete customer_order_facts-Tabelle mit dem Parameter sql:
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT(*) AS lifetime_orders,
SUM(total) AS lifetime_spend
FROM
order
GROUP BY
customer_id ;;
}
}
Wichtige Punkte
Vermeiden Sie die übermäßige Verwendung abgeleiteter Tabellen, um reine SQL-Lösungen zu erstellen.
Nutzer, die sich besonders gut mit SQL auskennen, verwenden häufig abgeleitete Tabellen, um Probleme mit komplexen SQL-Abfragen zu lösen. Die Ergebnisse können dann für Nutzer freigegeben werden. Manchmal ist dies zwar notwendig, aber es kann auch dazu führen, dass die modulare, wiederverwendbare Natur von LookML nicht genutzt wird und Nutzer in starren Methoden zur Untersuchung ihrer Daten gefangen sind.
Wir empfehlen Ihnen, sich den zugrunde liegenden Zweck Ihrer SQL-Abfrage zu überlegen und diese Logik dann in LookML zu konvertieren, anstatt vorhandene Abfragen in eine abgeleitete Tabelle zu kopieren und einzufügen. Wenn Sie Unterstützung beim Erstellen von Analysen benötigen, die nicht auf abgeleiteten Tabellen basieren, helfen Ihnen die Supportanalysten von Looker gerne mit Best Practices weiter.
Unterstützte Datenbankdialekte für abgeleitete Tabellen
Unterstützte Datenbankdialekte für temporäre abgeleitete Tabellen
Damit Looker abgeleitete Tabellen in Ihrem Looker-Projekt unterstützen kann, müssen diese auch von Ihrem Datenbankdialekt unterstützt werden. In der folgenden Tabelle ist zu sehen, welche Dialekte abgeleitete Tabellen in der aktuellen Looker-Version unterstützen:
| Dialekt | Unterstützt? |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13.x - 0.17.x | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| ClickHouse 26+ | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Dremio 26+ with Arrow Flight SQL | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud AlloyDB for PostgreSQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MongoSQL | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |
Unterstützte Datenbankdialekte für PDTs
Damit Looker PDTs in Ihrem Looker-Projekt unterstützen kann, müssen diese auch von Ihrem Datenbankdialekt unterstützt werden.
Um PDTs (sowohl LookML-basiert als auch SQL-basiert) zu unterstützen, muss der Dialekt unter anderem Schreibvorgänge in die Datenbank unterstützen. Es gibt einige schreibgeschützte Datenbankkonfigurationen, die Persistenz verhindern (vor allem Postgres Hot-Swap-Replikationsdatenbanken). In diesen Fällen können Sie alternativ temporäre abgeleitete Tabellen verwenden.
In der folgenden Tabelle sind die Dialekte aufgeführt, die persistente SQL-basierte abgeleitete Tabellen in der neuesten Version von Looker unterstützen:
| Dialekt | Unterstützt? |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13.x - 0.17.x | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| ClickHouse 26+ | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Dremio 26+ with Arrow Flight SQL | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud AlloyDB for PostgreSQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MongoSQL | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |
Um persistente native abgeleitete Tabellen (mit LookML-basierten Abfragen) zu unterstützen, muss der Dialekt auch eine CREATE TABLE-DDL-Funktion unterstützen. Hier finden Sie eine Liste der Dialekte, die in der neuesten Version von Looker persistente native (LookML-basierte) abgeleitete Tabellen unterstützen:
| Dialekt | Unterstützt? |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13.x - 0.17.x | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| ClickHouse 26+ | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Dremio 26+ with Arrow Flight SQL | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud AlloyDB for PostgreSQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MongoSQL | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |
PDTs werden für Snowflake-Verbindungen, die OAuth verwenden, nicht unterstützt.
Unterstützte Datenbankdialekte für inkrementelle PDTs
Damit Looker inkrementelle PDTs in Ihrem Looker-Projekt unterstützen kann, muss Ihr Datenbankdialekt Datendefinitionssprache (DDL)-Befehle unterstützen, mit denen Zeilen gelöscht und eingefügt werden können.
In der folgenden Tabelle ist zu sehen, welche Dialekte inkrementelle PDTs in der aktuellen Looker-Version unterstützen:
| Dialekt | Unterstützt? |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13.x - 0.17.x | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| ClickHouse 26+ | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Dremio 26+ with Arrow Flight SQL | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud AlloyDB for PostgreSQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MongoSQL | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |