sql (für abgeleitete Tabellen)

Auf dieser Seite wird auf den Parameter sql verwiesen, der Teil einer abgeleiteten Tabelle ist.

Sie können sql auch als Teil eines Felds verwenden, wie auf der Dokumentationsseite zum Parameter sql (für Felder) beschrieben.

Nutzung

view: my_derived_table {
  derived_table: {
    sql: 
      SELECT *
      FROM events
      WHERE type NOT IN ('test', 'staff')
 ;;
    ...
  }
}
Hierarchie
sql
Standardwert
Keine

Akzeptiert
Ein SQL-Block

Definition

Mit sql können Sie den SQL-Code angeben, der zum Generieren einer abgeleiteten Tabelle verwendet wird. Sie können jede gültige SQL-Abfrage im Parameter sql verwenden, sofern die SQL-Abfrage in Raw-SQL geschrieben ist und keine Looker-Felder referenziert. Weitere Informationen zu abgeleiteten Tabellen finden Sie auf der Dokumentationsseite Abgeleitete Tabellen in Looker.

Neben normalen Datenbanktabellen können Sie in sql auch auf LookML-Ansichten oder abgeleitete Tabellen verweisen. Dazu verwenden Sie:

${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name

Die SQL_TABLE_NAME in diesem Verweis ist eine literale Zeichenfolge. Sie muss nicht ersetzt werden. Wenn Sie beispielsweise in Ihrer abgeleiteten Tabelle key_customer_order_facts auf eine abgeleitete Tabelle mit dem Namen key_customer verweisen möchten, könnte das so aussehen:

view: key_customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT( * ) AS lifetime_orders
      FROM
        order
      INNER JOIN
        ${key_customer.SQL_TABLE_NAME} AS key_customer
      ON
        order.customer_id = key_customer.id
      GROUP BY 1
      ;;
  }
}

Liquid-Variablen mit sql

Sie können auch Liquid-Variablen mit dem Parameter sql verwenden. Mit Liquid-Variablen können Sie auf Daten wie die Werte in einem Feld, Daten zum Feld und auf das Feld angewendete Filter zugreifen.

Die Liquid-Variablen date_start und date_end sind sehr nützlich für Datenbankdialekte, bei denen Daten nach Datum in mehrere Tabellen partitioniert werden, z. B. BigQuery. Eine ausführliche Erklärung finden Sie auf der Seite Best Practices für die Verwendung von date_start und date_end mit Datumsfiltern.

Insbesondere die Liquid-Variablen _in_query, _is_selected und _is_filtered können abgeleiteten Tabellen einige interessante Funktionen hinzufügen. Sie geben „true“ oder „false“ zurück, je nachdem, ob ein Feld oder Filter in eine Abfrage aufgenommen wurde. Bei der Verwendung dieser „Wahr/Falsch“-Werte sind einige Besonderheiten zu beachten. Weitere Informationen finden Sie auf der Seite zu Liquid-Variablen.

In dieser abgeleiteten Tabelle wird beispielsweise die Datenbanktabelle, aus der Daten abgefragt werden, je nach den vom Nutzer ausgewählten Feldern geändert:

view: dynamic_order_counts {
  derived_table: {
    sql:
      SELECT
        period, number_of_orders
      FROM
        {% if dates.reporting_date._in_query %}
          daily_orders
        {% elsif dates.reporting_week._in_query %}
          weekly_orders
        {% else %}
          monthly_orders
        {% endif %}
      GROUP BY 1
      ;;
  }
}

Beispiele

So erstellen Sie eine abgeleitete Tabelle vom Typ customer_order_facts:

view: customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT( * ) AS lifetime_orders
      FROM
        order
      GROUP BY 1
      ;;
  }
}

Wichtige Punkte

Auf Tabellen, auf die von sql verwiesen wird, muss über die aktuelle Verbindung zugegriffen werden können.

views, die eine abgeleitete Tabelle enthalten, werden durch einen Parameter explore oder join referenziert, der wiederum durch ein Modell referenziert wird. Das Modell bestimmt, welche Datenbankverbindung verwendet wird (siehe die Dokumentationsseite zum Parameter connection). Datenbankverbindungen werden im Bereich Admin von Looker definiert. Wenn Sie im Parameter sql auf eine Tabelle verweisen, muss die Tabelle über die zugehörige Verbindung zugänglich sein.

Roh-SQL mit sql verwenden, nicht Looker-Feldbezüge

Der SQL-Code, den Sie in den Parameter sql einer abgeleiteten Tabelle schreiben, sollte Roh-SQL sein, der auf die zugrunde liegenden Spalten und Tabellen aus Ihrer Datenbank verweist. Es darf nicht auf Looker-Feldnamen oder ‑Ansichtsnamen verweisen.

Für die Verwendung von _filters['view_name.field_name'] in einer abgeleiteten Tabelle ist sql_quote erforderlich.

Wenn Sie eine SQL-basierte abgeleitete Tabelle definieren und die Liquid-Variable _filters['view_name.field_name'] verwenden, bei der der Wert in SQL gerendert wird und der Filter einen Stringwert zurückgibt, müssen Sie einfache Anführungszeichen um die Ausgabe setzen. Dazu müssen Sie den sql_quote-Liquid-Filter einfügen.

Andernfalls wird die folgende LookML-Warnung angezeigt, wenn Sie die Liquid-Variable nicht mit | sql_quote anhängen:

Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.

Weitere Informationen finden Sie auf der Dokumentationsseite Referenz für Liquid-Variable.