derived_table

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:

In bestimmten Grenzfällen ist die Verwendung des Parameters sql nicht zulässig. In diesen Fällen unterstützt Looker die folgenden Parameter zum Definieren einer SQL-Abfrage für PDTs:

  • create_process
  • sql_create
  • Mit dem Parameter sql, create_process oder sql_create definieren 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