Diese Seite bezieht sich auf den Parameter
sql
, der Teil einer abgeleiteten Tabelle ist.Sie können
sql
auch als Teil eines Felds verwenden, wie auf der Seite mit der Parameterdokumentation fürsql
(für Felder) beschrieben.
Nutzung
derived_table: {
sql:
SELECT *
FROM Events
WHERE type NOT IN ('test', 'staff') ;;
...
Hierarchie
sql |
Standardwert
KeineAkzeptiert
Ein SQL-Block
|
Definition
Mit sql
können Sie den SQL-Code angeben, der zum Generieren einer abgeleiteten Tabelle verwendet werden soll. Sie können jede beliebige SQL-Abfrage im Parameter sql
verwenden, solange die SQL-Abfrage im Roh-SQL-Format geschrieben ist und nicht auf Looker-Felder verweist. Weitere Informationen zu abgeleiteten Tabellen finden Sie auf der Dokumentationsseite Abgeleitete Tabellen in Looker.
Neben normalen Datenbanktabellen können Sie auch auf LookML-Ansichten oder abgeleitete Tabellen in sql
verweisen. Gehen Sie dazu so vor:
${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name
Die SQL_TABLE_NAME
in dieser Referenz ist ein literaler String. Sie müssen sie nicht ersetzen. Wenn Sie beispielsweise in der abgeleiteten Tabelle key_customer_order_facts
auf eine abgeleitete Tabelle namens 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
;;
}
}
Flüssigkeitsvariablen mit sql
Sie können auch Liquid-Variablen mit dem Parameter sql
verwenden. Mit Flüssigkeitsvariablen 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, die Daten nach Datum in mehrere Tabellen partitionieren, z. B. BigQuery. Ausführliche Informationen finden Sie in diesem Hilfeartikel.
Insbesondere die Liquid-Variablen _in_query
, _is_selected
und _is_filtered
können den abgeleiteten Tabellen einige interessante Funktionen hinzufügen. Sie geben „wahr“ oder „falsch“ zurück, je nachdem, ob ein Feld oder ein Filter in einer Abfrage enthalten ist. Es gibt einige Besonderheiten, die bei der korrekten Verwendung dieser Wahr/Falsch-Werte zu berücksichtigen sind. Weitere Informationen finden Sie auf der Seite für Flüssigkeitsvariablen.
Diese abgeleitete Tabelle ändert beispielsweise die Datenbanktabelle, die sie basierend auf den vom Nutzer ausgewählten Feldern abfragt:
view: dynamic_order_counts {
derived_table: {
sql:
SELECT
period, number_of_orders
FROM
{% dynamic if dates.reporting_date._in_query %}
daily_orders
{% elsif dates.reporting_week._in_query %}
weekly_orders
{% dynamic else %}
monthly_orders
{% dynamic endif %}
GROUP BY 1
;;
}
}
Beispiele
Erstellen Sie eine abgeleitete customer_order_facts
-Tabelle:
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
GROUP BY 1
;;
}
}
Wichtige Punkte
Tabellen, auf die sql
verweist, müssen von der aktuellen Verbindung aus zugänglich sein
views
, die eine abgeleitete Tabelle enthalten, werden von einem explore
- oder join
-Parameter referenziert, der wiederum von einem Modell referenziert wird. Das Modell bestimmt, welche Datenbankverbindung verwendet wird (siehe connection
-Parameterdokumentation). Datenbankverbindungen selbst werden im Abschnitt Admin von Looker definiert. Wenn Sie im Parameter sql
auf eine Tabelle verweisen, muss innerhalb der zugehörigen Verbindung auf die Tabelle zugegriffen werden können.
Unverarbeiteten SQL-Code mit sql
und nicht mit Looker-Feldverweisen verwenden
Der SQL-Code, den Sie in den abgeleiteten sql
-Parameter der Tabelle schreiben, sollte unbearbeitet sein und auf die zugrunde liegenden Spalten und Tabellen der Datenbank verweisen. Sie sollte 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 die Ausgabe in einfache Anführungszeichen setzen. Fügen Sie dazu den Liquid-Filter sql_quote
hinzu.
Andernfalls erhalten Sie die folgende LookML-Warnung, 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 in der Dokumentation zur Referenz für Flüssigkeitsvariablen.