Nutzung
view: view_name {
dimension_group: field_name { ... }
}
|
Hierarchie
dimension_group |
Akzeptiert
Eine Looker-Kennung, die als erster Teil des Namens für jede Dimension dient, die von der Dimensionsgruppe erstellt wird.
Sonderregeln
|
Definition
Mit dem Parameter dimension_group können Sie eine Reihe von zeitbasierten oder dauerbasierten Dimensionen auf einmal erstellen. Sie definieren die Dimensionsgruppe und die Dimensionsgruppe erstellt eine Reihe einzelner Dimensionen für verschiedene Intervalle oder Zeiträume. Sie können beispielsweise eine Dimensionsgruppe vom Typ type: time auf Grundlage einer Zeitstempelspalte angeben. In diesem Fall werden entsprechende Dimensionen erstellt, um die Daten nach Zeit, Datum, Woche, Stunde, Quartal und Jahr darzustellen.
Form und Funktion der Dimensionsgruppe hängen vom type-Wert der Dimensionsgruppe ab:
Dimensionsgruppen vom Typ „Zeitraum“
type: duration wird in Verbindung mit einem dimension_group verwendet, um eine Reihe von intervallbasierten Dauerdimensionen zu berechnen.
Eine Dimensionsgruppe vom Typ type: duration hat folgendes Format:
dimension_group: dimension_group_name {
type: duration
sql_start: SQL expression ;; # often this is a single database column
sql_end: SQL expression ;; # often this is a single database column
intervals: [interval, interval, …] # see following explanation for valid intervals
}
Für Dimensionsgruppen von type: duration:
Die Parameter
sql_startundsql_endenthalten SQL-Ausdrücke, die die Start- und Endzeit für den Zeitraum definieren. Weitere Informationen finden Sie im Abschnitt Beginn und Ende einer Dauer definieren auf dieser Seite.Mit dem Parameter
intervalswerden eine oder mehrere Intervalleinheiten angegeben, die zum Messen der Zeitdifferenz verwendet werden sollen. Die möglichen Optionen sind im Abschnitt Intervalloptionen auf dieser Seite aufgeführt.Die Dauerwerte werden auf die nächste Ganzzahl abgerundet.
Der Parameter
datatypeist optional. Wenn Ihre Dimensionsgruppe nicht auf einem Datum/Uhrzeit-Wert basiert, können Sie stattdessen ein Epochen-, Zeitstempel-, Datums- oder JJJJMMTT-Format angeben. Bei Dimensionsgruppen vom Typtype: durationgilt der Parameterdatatypesowohl für den Parametersql_startals auch für den Parametersql_end. Achten Sie daher darauf, dass sowohlsql_startals auchsql_endden angegebenen Datentyp haben. Der Parameterdatatypewird im Abschnitt Datenbankdatatypeangeben auf dieser Seite ausführlicher beschrieben.
Viele der Parameter auf Feldebene können auch mit Dimensionsgruppen verwendet werden, obwohl sie hier nicht aufgeführt sind.
Wenn Sie beispielsweise Spalten für enrollment_date und graduation_date haben, können Sie eine Dimensionsgruppe für die Dauer erstellen, um zu sehen, wie viel Zeit die Schüler in der Schule verbracht haben, berechnet in Wochen- und Jahresintervallen:
dimension_group: enrolled {
type: duration
intervals: [week, year]
sql_start: ${TABLE}.enrollment_date ;;
sql_end: ${TABLE}.graduation_date ;;
}
In der Explore-Benutzeroberfläche wird dadurch eine Dimensionsgruppe namens Duration Enrolled mit den einzelnen Dimensionen Weeks Enrolled und Years Enrolled generiert.
Intervalloptionen
Der Parameter intervals gibt der Dimensionsgruppe an, welche Intervalleinheiten sie verwenden soll, um die Zeitdifferenz zwischen der sql_start- und der sql_end-Zeit zu messen. Der Parameter intervals wird nur für Dimensionsgruppen von type: duration unterstützt.
Wenn intervals nicht enthalten ist, umfasst die Dimensionsgruppe alle möglichen Intervalle.
Die Optionen für den Parameter intervals sind:
| Intervall | Beschreibung | Beispielausgabe |
|---|---|---|
day |
Berechnet eine Zeitdifferenz in Tagen. | 9 days |
hour |
Berechnet eine Zeitdifferenz in Stunden. | 171 hours |
minute |
Berechnet eine Zeitdifferenz in Minuten. | 10305 minutes |
month |
Berechnet eine Zeitdifferenz in Monaten. | 3 months |
quarter |
Berechnet eine Zeitdifferenz in Quartalen des Jahres. | 2 quarters |
second |
Berechnet eine Zeitdifferenz in Sekunden. | 606770 seconds |
week |
Berechnet eine Zeitdifferenz in Wochen. | 6 weeks |
year |
Berechnet eine Zeitdifferenz in Jahren. | 2 years |
Start und Ende einer Dauer definieren
Bei Dimensionsgruppen vom Typ type: duration liefern die Parameter sql_start und sql_end die Start- und Endinformationen, die zum Berechnen einer Zeitdifferenz verwendet werden. Diese Felder können einen beliebigen gültigen SQL-Ausdruck enthalten, der Daten im Format „Zeitstempel“, „Datum/Uhrzeit“, „Datum“, „Epoche“ oder „JJJJMMTT“ enthält. Die Felder sql_start und sql_end können einen der folgenden Werte haben:
- Ein Verweis auf einen
raw-Zeitraum aus einer vorhandenen Dimensionsgruppe vontype: time - Verweis auf eine Dimension von
type: date_raw - Ein SQL-Ausdruck, der ein Zeitstempel ist, z. B. ein Verweis auf eine SQL-Spalte, die ein Zeitstempel ist
- Ein SQL-Ausdruck, mit dem eine Zeit aus Ihrer Datenbank abgerufen wird. Dabei wird der entsprechende Ausdruck für Ihren Dialekt verwendet.
- Eine LookML-Feldreferenz mit der Feldtypreferenz
::datetimeoder::date
Angenommen, Sie haben eine Dimension mit dem Namen faa_event_date_raw, die Datums- und Uhrzeitinformationen enthält:
dimension: faa_event_date_raw {
type: date_raw
sql: ${TABLE}.event_date ;;
}
Sie können eine Dimensionsgruppe vom Typ type: duration erstellen, in der die Zeit berechnet wird, die seit dem FAA-Ereignisdatum vergangen ist. Dazu können Sie die Dimension faa_event_date_raw als Startzeit für die Berechnung und den SQL-Ausdruck Ihres Dialekts für die aktuelle Zeit als Endzeit für die Berechnung verwenden. Dieses Beispiel gilt für eine MySQL-Datenbank:
dimension_group: since_event {
type: duration
intervals: [hour, day]
sql_start: ${faa_event_date_raw} ;;
sql_end: CURRENT_TIMESTAMP();;
}
In der Explore-Benutzeroberfläche wird dadurch eine Dimensionsgruppe mit dem Namen Zeit seit Ereignis mit den einzelnen Dimensionen Stunden seit Ereignis und Tage seit Ereignis erstellt.
Auf Intervalle aus einem anderen LookML-Feld verweisen
Wenn Sie auf einen interval-Wert in einem dimension_group von type: duration verweisen möchten, verwenden Sie die Syntax ${interval_fieldname} mit der Pluralversion des interval-Werts. Im folgenden LookML-Beispiel wird im Measure average_days_since_event mit ${days_since_event} auf das Intervall day in der Dimensionsgruppe since_event verwiesen:
dimension_group: since_event {
type: duration
intervals: [hour, day, week, month, quarter, year]
sql_start: ${faa_event_date_raw} ;;
sql_end: CURRENT_TIMESTAMP();;
}
measure: average_days_since_event {
type: average
sql: ${days_since_event} ;;
}
LookML-Feldtypreferenzen mit Duration-Feldern verwenden
Wenn Sie ein benutzerdefiniertes Dauerfeld erstellen möchten, können Sie einen Referenztyp ::date oder ::datetime für die Dimensionen angeben, auf die in den Parametern sql_start und sql_end einer Dimensionsgruppe von type: duration verwiesen wird. Mit der view_name.field_name::type-Syntax, die auf der Dokumentationsseite SQL einbinden und auf LookML-Objekte verweisen beschrieben wird, können Sie eine ::date- oder ::datetime-Version eines Felds erstellen, ohne die Verweise auf diese Dimensionen in Strings umzuwandeln.
Angenommen, Sie haben eine created-Dimensionsgruppe von type: time mit Zeiträumen von time, date, week, month und raw, die so definiert sind:
dimension_group: created {
type: time
timeframes: [time, date, week, month, raw]
sql: ${TABLE}.created_at ;;
}
Mit den Dimensionen created_month und created_time können Sie eine Dimensionsgruppe type: duration erstellen, die die Zeit zwischen einem Datum aus dem Feld created_date und dem ersten Tag des Monats, in dem dieses Datum liegt, in Wochen, Tagen und Stunden berechnet:
dimension_group: since_first_of_month {
type: duration
intervals: [week, day, hour]
sql_start: ${created_month::datetime} ;;
sql_end: ${created_time::datetime} ;;
}
In der Explore-Benutzeroberfläche wird dadurch eine Dimensionsgruppe namens Duration Since First of Month mit den einzelnen Dimensionen Weeks Since First of Month, Days Since First of Month und Hours Since First of Month erstellt. Wenn Sie den Referenztyp ::datetime für die Felder angeben, auf die in den Parametern sql_start und sql_end verwiesen wird, können die Dimensionen created_month und created_time im generierten SQL als Zeitstempel behandelt werden.
Angenommen, ein Nutzer wählt in der Feldauswahl die Dimensionen Erstellungsdatum und Tage seit Monatsbeginn aus. Wenn einer der für Erstellungsdatum zurückgegebenen Werte 2019-03-10 ist, wird für Tage seit Monatsbeginn der Wert 9 Tage zurückgegeben.
Dimensionsgruppen vom Typ „Zeit“
type: time wird in Verbindung mit einem dimension_group und dem Parameter timeframes verwendet, um eine Reihe von zeitbasierten Dimensionen zu erstellen. Sie können beispielsweise eine Datums-, Wochen- und Monatsdimension basierend auf einer einzelnen Zeitstempelspalte erstellen.
Eine Dimensionsgruppe vom Typ type: time hat folgendes Format:
dimension_group: dimension_group_name {
type: time
timeframes: [timeframe, timeframe, …] # see following explanation for valid timeframes
sql: SQL expression ;; # often this is a single database column
datatype: epoch| timestamp | datetime | date | yyyymmdd # defaults to datetime
convert_tz: yes | no # defaults to yes
}
Für Dimensionsgruppen vom Typ type: time:
Der Parameter
timeframesist optional, wird aber selten ausgelassen. Damit werden ein oder mehrere Zeiträume angegeben, die von der Dimensionsgruppe generiert werden sollen. Wenntimeframesnicht enthalten ist, wird jede Zeitrahmenoption der Dimensionsgruppe hinzugefügt. Die möglichen Optionen sind auf dieser Seite im Abschnitt Zeitrahmenoptionen aufgeführt.Der Parameter
sqlfürtype: time-Dimensionsgruppen kann einen beliebigen gültigen SQL-Ausdruck mit Daten im Format „Zeitstempel“, „Datum/Uhrzeit“, „Datum“, „Epoche“ oder „yyyymmdd“ enthalten.Der Parameter
datatypeist optional. Wenn Ihre Dimensionsgruppe nicht auf einem Datum/Uhrzeit-Wert basiert, können Sie stattdessen ein Epochen-, Zeitstempel-, Datums- oder JJJJMMTT-Format angeben. Sie wird im Abschnitt Datenbankdatatypeangeben auf dieser Seite genauer beschrieben.Der Parameter
convert_tzist optional und ermöglicht es Ihnen, die automatische Zeitzonenumwandlung zu verhindern. Sie wird im Abschnitt Zeitzonenumrechnungen undconvert_tzauf dieser Seite ausführlicher beschrieben.
Viele der Parameter auf Feldebene können auch mit Dimensionsgruppen verwendet werden, obwohl sie hier nicht aufgeführt sind.
Angenommen, Sie haben eine Spalte mit dem Namen created_at, die Datums- und Uhrzeitinformationen enthält. Sie möchten auf Grundlage dieses Datums und dieser Uhrzeit eine Dimension für Datum, Woche und Monat erstellen. Dazu können Sie folgende Komponenten verwenden:
dimension_group: created {
type: time
timeframes: [date, week, month]
sql: ${TABLE}.created_at ;;
}
In der Explore-Benutzeroberfläche werden dadurch drei Dimensionen mit den Namen Created Date, Created Week und Created Month generiert. Beachten Sie, wie der Name dimension_group mit den Zeiträumen kombiniert wird, um die Dimensionsnamen zu generieren.
Zeitraumoptionen
Der Parameter timeframes wird nur für Dimensionsgruppen vom Typ type: time unterstützt. Verwenden Sie für Dimensionsgruppen von type: duration stattdessen den Parameter intervals.
Der Parameter timeframes gibt an, welche Dimensionen die Dimensionsgruppe erzeugen soll. Er umfasst die folgenden Optionen:
- Spezielle Zeiträume
- Zeiträume
- Zeiträume
- Wöchentliche Zeiträume
- Monatszeiträume
- Quartalszeiträume
- Zeiträume für das Jahr
hourX-ZeiträumeminuteXZeiträumemillisecondXZeiträume
Wenn Sie den Parameter timeframes für eine Dimensionsgruppe vom Typ type: time nicht verwenden oder den Parameter timeframes leer lassen (timeframes: []), enthält das Explore die Standardzeiträume für die Dimensionsgruppe:
dateday_of_monthday_of_weekday_of_week_indexday_of_yearhourhour_of_dayminutemonthmonth_namemonth_numquarterquarter_of_yeartimetime_of_dayweekweek_of_yearyear
Spezielle Zeiträume
Zeiträume
| Zeitraum | Beschreibung | Beispielausgabe |
|---|---|---|
time |
Datum und Uhrzeit des zugrunde liegenden Felds (einige SQL-Dialekte zeigen so viele Details an, wie in Ihrer Datenbank enthalten sind, während andere nur bis zur Sekunde anzeigen) | 2014-09-03 17:15:00 |
time_of_day |
Tageszeit | 17:15 |
hour |
Datum/Uhrzeit auf die nächste Stunde gekürzt | 2014-09-03 17 |
hour_of_day |
Ganzzahlige Stunde des Tages des zugrunde liegenden Felds | 17 |
hourX |
Teilt jeden Tag in Intervalle mit der angegebenen Anzahl von Stunden auf. | Weitere Informationen finden Sie unter hourX verwenden. |
minute |
Datum/Uhrzeit auf die nächste Minute gekürzt | 2014-09-03 17:15 |
minuteX |
Teilt jede Stunde in Intervalle mit der angegebenen Anzahl von Minuten auf. | Weitere Informationen finden Sie unter minuteX verwenden. |
second |
Datum/Uhrzeit auf die nächste Sekunde gekürzt | 2014-09-03 17:15:00 |
millisecond |
Datum/Uhrzeit auf die nächste Millisekunde gerundet (Informationen zur Dialektunterstützung finden Sie im Abschnitt Dialektunterstützung für Millisekunden und Mikrosekunden auf dieser Seite). | 2014-09-03 17:15:00.000 |
millisecondX |
Teilt jede Sekunde in Intervalle mit der angegebenen Anzahl von Millisekunden auf. Informationen zur Dialektunterstützung finden Sie im Abschnitt Dialektunterstützung für Millisekunden und Mikrosekunden auf dieser Seite. | Weitere Informationen finden Sie unter millisecondX verwenden. |
microsecond |
Datum/Uhrzeit, auf die nächste Mikrosekunde gekürzt (Informationen zur Unterstützung von Dialekten finden Sie auf dieser Seite im Abschnitt Dialektunterstützung für Millisekunden und Mikrosekunden). | 2014-09-03 17:15:00.000000 |
Datumszeiträume
| Zeitraum | Beschreibung | Beispielausgabe |
|---|---|---|
date |
Datum des zugrunde liegenden Felds | 2017-09-03 |
Wöchentliche Zeiträume
Monatszeiträume
Wenn Sie die Zeiträume für fiscal_month_num verwenden möchten, muss der Parameter fiscal_month_offset im Modell festgelegt sein.
Vierteljährliche Zeiträume
Wenn Sie die Zeiträume fiscal_quarter und fiscal_quarter_of_year verwenden möchten, muss der Parameter fiscal_month_offset im Modell festgelegt werden.
Jahreszeiträume
Wenn Sie den Zeitraum fiscal_year verwenden möchten, muss der Parameter fiscal_month_offset im Modell festgelegt sein.
hourX verwenden
In hourX wird X durch 2, 3, 4, 6, 8 oder 12 ersetzt.
Dadurch wird jeder Tag in Intervalle mit der angegebenen Anzahl von Stunden aufgeteilt. Bei hour6 wird beispielsweise jeder Tag in 6-Stunden-Segmente aufgeteilt, die so angezeigt werden:
2014-09-01 00:00:002014-09-01 06:00:002014-09-01 12:00:002014-09-01 18:00:00
Beispiel: Eine Zeile mit dem time 2014-09-01 08:03:17 hat den hour6 2014-09-01 06:00:00.
minuteX verwenden
In minuteX wird X durch 2, 3, 4, 5, 6, 10, 12, 15, 20 oder 30 ersetzt.
Dadurch wird jede Stunde in Intervalle mit der angegebenen Anzahl von Minuten aufgeteilt. Bei minute15 wird jede Stunde beispielsweise in 15‑Minuten-Segmente unterteilt, die so aussehen:
2014-09-01 01:00:002014-09-01 01:15:002014-09-01 01:30:002014-09-01 01:45:00
Beispiel: Eine Zeile mit einem time von 2014-09-01 01:17:35 hat einen minute15 von 2014-09-01 01:15:00.
millisecondX verwenden
In millisecondX wird X durch 2, 4, 5, 8, 10, 20, 25, 40, 50, 100, 125, 200, 250 oder 500 ersetzt.
Dadurch wird jede Sekunde in Intervalle mit der angegebenen Anzahl von Millisekunden aufgeteilt. Bei millisecond250 wird beispielsweise jede Sekunde in Segmente von 250 Millisekunden aufgeteilt, die so aussehen:
2014-09-01 01:00:00.0002014-09-01 01:00:00.2502014-09-01 01:00:00.5002014-09-01 01:00:00.750
Beispiel: Eine Zeile mit einem time von 2014-09-01 01:00:00.333 hat einen millisecond250 von 2014-09-01 01:00:00.250.
Zeitzonenumrechnungen und convert_tz
Im Allgemeinen funktionieren Zeitberechnungen (Differenzen, Zeiträume usw.) nur dann richtig, wenn Sie mit Zeitwerten arbeiten, die alle in dieselbe Zeitzone umgerechnet wurden. Daher ist es wichtig, Zeitzonen beim Schreiben von LookML zu berücksichtigen.
Looker bietet verschiedene Zeitzoneneinstellungen, mit denen zeitbasierte Daten zwischen verschiedenen Zeitzonen konvertiert werden können. Looker führt standardmäßig eine Zeitzonenumwandlung durch. Der Parameter convert_tz wird für Dimensionsgruppen vom Typ type: time unterstützt. Wenn Sie nicht möchten, dass Looker eine Zeitzonenkonvertierung für eine bestimmte Dimension oder Dimensionsgruppe durchführt, können Sie den Parameter convert_tz verwenden, der auf der Dokumentationsseite zum Parameter convert_tz beschrieben wird.
Dialektunterstützung für Millisekunden und Mikrosekunden
Looker unterstützt die Genauigkeit von Zeiträumen bis auf Mikrosekunden. Einige Datenbanken unterstützen die Genauigkeit jedoch nur bis auf Sekunden. Wenn eine Datenbank einen Zeitraum erkennt, der genauer ist, als sie unterstützen kann, wird auf Sekunden aufgerundet.
In der neuesten Version von Looker unterstützen die folgenden Dialekte Millisekunden:
| 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 |
In der aktuellen Version von Looker unterstützen die folgenden Dialekte Mikrosekunden:
| 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 |
Datenbank datatype angeben
Mit dem Parameter datatype können Sie den Typ der Zeitdaten in Ihrer Datenbanktabelle angeben, die Sie der Dimensionsgruppe zur Verfügung stellen. Dadurch kann die Abfrageleistung verbessert werden.
Bei Dimensionsgruppen vom Typ type: time gilt der Parameter datatype für den Parameter sql der Dimensionsgruppe.
Bei Dimensionsgruppen vom Typ type: duration gilt der Parameter datatype sowohl für die Parameter sql_start als auch sql_end. Achten Sie also darauf, dass sql_start und sql_end beide den angegebenen Datentyp haben.
Der Parameter datatype akzeptiert die folgenden Werte:
epoch: Ein SQL-Epochenfeld (d.h. eine Ganzzahl, die die Anzahl der Sekunden seit der Unix-Epoche darstellt).date: Ein SQL-Datumsfeld (d.h. ein Feld, das keine Informationen zur Uhrzeit enthält).datetime: Ein SQL-Feld vom Typ „datetime“.timestamp: Ein SQL-Zeitstempelfeld.yyyymmdd: Ein SQL-Feld, das eine Ganzzahl enthält, die ein Datum im Format YYYYMMDD darstellt.
Der Standardwert für datatype ist timestamp.
Dimensionsgruppen für benutzerdefinierte Kalendertypen
Wenn Sie in Ihrem LookML-Projekt benutzerdefinierte Kalender implementiert haben, können Sie type: custom_calendar in Verbindung mit dem Parameter dimension_group verwenden, um eine Reihe zeitbasierter Dimensionen basierend auf einer benutzerdefinierten Kalendertabelle zu erstellen, die Sie in Ihrer Datenbank definieren. Informationen zum Einrichten benutzerdefinierter Kalender in Ihrem LookML-Projekt finden Sie auf der Dokumentationsseite Benutzerdefinierte Kalender in Looker verwenden.
Eine Dimensionsgruppe vom Typ type: custom_calendar hat folgendes Format:
dimension_group: dimension_group_name {
type: custom_calendar
custom_timeframes: [custom_timeframe, custom_timeframe, …] # see the following section for valid custom timeframes
sql: SQL expression ;; # often this refers to a single database column
based_on_calendar: custom_calendar_view
}
Für Dimensionsgruppen von type: custom_calendar:
Der Parameter
custom_timeframesist optional. Damit werden ein oder mehrere benutzerdefinierte Zeiträume angegeben, die von der Dimensionsgruppe generiert werden sollen. Wenncustom_timeframesnicht angegeben ist, werden alle benutzerdefinierten Zeiträume von der Dimensionsgruppe erstellt. Die möglichen benutzerdefinierten Zeiträume sind im Abschnittcustom_timeframesauf dieser Seite aufgeführt.Der Parameter
sqlfürtype: custom_calendar-Dimensionsgruppen kann einen beliebigen gültigen SQL-Ausdruck mit Daten im Format „Zeitstempel“, „Datum/Uhrzeit“, „Datum“, „Epoche“ oder „yyyymmdd“ enthalten.Mit dem Parameter
based_on_calendarwird der Name der Ansicht des benutzerdefinierten Kalenders angegeben, den Sie in LookML modelliert haben.Der Parameter
convert_tzist optional und ermöglicht es Ihnen, die automatische Zeitzonenumwandlung zu verhindern. Sie wird auf dieser Seite im Abschnitt Zeitzonenkonvertierungen undconvert_tzausführlicher beschrieben.Der Parameter
datatypeist optional. Wenn Ihre Dimensionsgruppe nicht auf einem Datums-/Uhrzeitwert basiert, können Sie stattdessen ein Epochen-, Zeitstempel-, Datums- oder „yyyymmdd“-Format angeben. Er wird im Abschnitt Datenbank-Datentyp angeben auf dieser Seite ausführlicher beschrieben.
Viele der Parameter auf Feldebene können auch mit Dimensionsgruppen verwendet werden, obwohl sie hier nicht aufgeführt sind.
Hier ist ein Beispiel für eine benutzerdefinierte Kalender-Dimensionsgruppe in einer orders.view-LookML-Datei:
view: orders
include: "/views/retail_custom_calendar.view"
dimension_group: created {
type: custom_calendar
sql: ${TABLE}.created_at ;;
custom_timeframes: [custom_year, custom_quarter]
based_on_calendar: retail_custom_calendar
}
Beachten Sie die folgenden Elemente in dieser benutzerdefinierten Kalenderdimensionsgruppe:
type: custom_calendar: Die Dimensionsgruppe ist als benutzerdefinierter Kalendertyp definiert.sql: ${TABLE}.created_at ;;: Die Dimensionsgruppe verwendet Datums- und Uhrzeitinformationen aus der Spalteorders.created_atder Datenbank.custom_timeframes: [custom_year, custom_quarter]: Die Dimensionsgruppe wird mit Benutzerdefinierter Kalender erstellt bezeichnet und enthält Zeiträume mit den Labels Geschäftsjahr und Geschäftsquartal. Weitere Informationen finden Sie unter Labels für benutzerdefinierte Kalenderdimensionsgruppen.based_on_calendar: retail_custom_calendar: Die Dimensionsgruppe verknüpft die Daten aus dem benutzerdefinierten Kalender, der in der Ansichtretail_custom_calendardes LookML-Projekts definiert ist, mit den Daten in der Spalteorders.created_atdieser Datenbank, um Abfrageergebnisse mit dem benutzerdefinierten Kalender bereitzustellen. Informationen zum Definieren eines benutzerdefinierten Kalenders finden Sie auf der Dokumentationsseite Benutzerdefinierte Kalender in Looker verwenden.
custom_timeframes
Wenn Sie bei Dimensionsgruppen, die als type: custom_calendar definiert sind, nicht alle möglichen benutzerdefinierten Zeiträume in die Dimensionsgruppe aufnehmen möchten, können Sie mit dem Parameter custom_timeframes angeben, welche Zeiträume in der Dimensionsgruppe enthalten sein sollen. Die folgenden benutzerdefinierten Zeiträume werden unterstützt:
| Zeitraum | Beschreibung | Annahmen (für _num-Typen) |
|---|---|---|
|
Das spezifische Datum aus der Kalenderansicht. | |
|
Der numerische Tag aus der Kalenderansicht. | Bis zu 371 Tage |
|
Ein allgemeiner Zeitraum im Kalender (z. B. bei 4-4-5-Kalendern). | |
|
Der numerische Wert des benutzerdefinierten Zeitraums. | Es wird von 12 Zeiträumen pro Jahr ausgegangen. |
|
Das Quartal aus der Kalenderansicht. | |
|
Das numerische Quartal des Jahres. | Es wird von vier Quartalen pro Jahr ausgegangen. |
|
Ein benutzerdefinierter saisonaler Zeitraum. | |
|
Der numerische Wert der benutzerdefinierten Staffel. | Es wird von 2 Saisons pro Jahr ausgegangen. |
|
Die Woche aus der Kalenderansicht. | |
|
Die numerische Woche des Jahres. | Es wird von bis zu 53 Wochen pro Jahr ausgegangen. |
|
Das Jahr aus der Kalenderansicht. | |
|
Der numerische Wert des benutzerdefinierten Jahres. |
based_on_calendar
Bei Dimensionsgruppen, die als type: custom_calendar definiert sind, gibt der Parameter based_on_calendar den Ansichtsnamen des benutzerdefinierten Kalenders an, den Sie in LookML modelliert haben.
Labels für benutzerdefinierte Kalenderdimensionsgruppen
Looker generiert Labels für Dimensionsfelder und Gruppenlabels in der Feldauswahl für Explores, je nachdem, ob die Parameter label oder group_label in der Dimensionsgruppe type: custom_calendar verwendet werden:
- Standard (weder
labelnochgroup_labelist angegeben):- In Looker werden die Zeiträume der Dimensionsgruppe unter dem Standardlabel für die Dimensionsgruppe zusammengefasst. Dieses Label besteht aus dem Namen der Dimensionsgruppe, an den Benutzerdefinierter Kalender angehängt wird (z. B. Erstellter benutzerdefinierter Kalender).
- Looker stellt jedem Zeitraumnamen Fiscal voran (z. B. Fiscal Date, Fiscal Week, Fiscal Year).
- Nur
group_label:- Looker gruppiert die Zeiträume der Dimensionsgruppe unter dem angegebenen Wert
group_label. - Looker stellt dem Namen jedes Zeitraums den Namen der Dimensionsgruppe und Fiscal voran (z. B. Created Fiscal Date, Created Fiscal Week, Created Fiscal Year).
- Looker gruppiert die Zeiträume der Dimensionsgruppe unter dem angegebenen Wert
- Nur
label:- Looker gruppiert die Zeiträume der Dimensionsgruppe unter dem Wert
label, gefolgt von Benutzerdefinierter Kalender. Bei einer Dimensionsgruppe, die mitlabel: "My Label"definiert ist, werden die Zeiträume beispielsweise unter Mein Label – Benutzerdefinierter Kalender gruppiert. - Looker stellt jedem Zeitraumnamen Fiscal voran (z. B. Fiscal Date, Fiscal Week, Fiscal Year).
- Looker gruppiert die Zeiträume der Dimensionsgruppe unter dem Wert
- Sowohl
group_labelals auchlabelsind angegeben:- Looker gruppiert die Zeiträume der Dimensionsgruppe unter dem angegebenen Wert
group_label. - Looker stellt den
label-Wert jedem Zeitraum voran. Für eine mitlabel: "My Label"definierte Dimensionsgruppe werden die Zeiträume beispielsweise Mein Label-Datum, Mein Label-Woche und Mein Label-Jahr genannt.
- Looker gruppiert die Zeiträume der Dimensionsgruppe unter dem angegebenen Wert
Dimensionsgruppen lokalisieren
Mit der Modelllokalisierung können Sie die Namen von Zeiträumen, Intervallen oder benutzerdefinierten Zeiträumen, die von einer Dimensionsgruppe generiert werden, anpassen und übersetzen. Weitere Informationen finden Sie unter Dimensionsgruppen lokalisieren.
Wichtige Punkte
Auf Dimensionsgruppen muss über ihre einzelnen Dimensionen verwiesen werden
Da eine Dimensionsgruppe eine Gruppe von Dimensionen und nicht nur eine Dimension darstellt, können Sie in LookML nicht direkt darauf verweisen. Stattdessen müssen Sie sich auf die Dimensionen beziehen, die dadurch erstellt werden.
Sehen Sie sich beispielsweise diese Dimensionsgruppe an:
dimension_group: created {
type: time
timeframes: [date, week, month]
sql: ${TABLE}.created_at ;;
}
Wenn Sie in einem anderen LookML-Feld auf eine dieser Dimensionen verweisen möchten, verwenden Sie den Verweis ${created_date}, ${created_week} oder ${created_month}. Wenn Sie nur ${created} verwenden, weiß Looker nicht, auf welchen Zeitraum Sie sich beziehen, und es wird ein Fehler ausgegeben.
Aus demselben Grund sollten Sie den Parameter primary_key nicht für eine Dimensionsgruppe verwenden, wenn Sie mehr als einen timeframe angeben.
Tipp des Chat-Teams: Wir werden häufig nach dem Validierungsfehler gefragt, der auftreten kann, wenn Sie
primary_keyfür einedimension_groupmit mehr als einertimeframeverwenden. Weitere Informationen finden Sie im Community-Beitrag Zeiträume und Dimensionsgruppen in Looker .
Zeitstempeldaten, die Zeitzoneninformationen enthalten
Einige Datenbankdialekte haben Zeitstempeloptionen, die Zeitzoneninformationen enthalten. So können Sie Zeitstempeldaten in einem einzelnen Feld speichern, das mehrere Zeitzonen enthalten kann. Eine Datenzeile wird möglicherweise in UTC gespeichert, eine andere in Eastern Time. Informationen zu den Zeitstempeloptionen des Snowflake-Dialekts finden Sie beispielsweise in der Snowflake-Dokumentation zum Zeitstempel TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ.
In diesem Fall können Fehler auftreten, wenn Looker Zeitzonenkonvertierungen durchführt. Um dies zu vermeiden, sollten Sie im Parameter sql der Dimension die Zeitstempeldaten explizit in einen Zeitstempeltyp umwandeln, der keine Zeitzonenumwandlung vornimmt. Im Snowflake-Dialekt können Sie beispielsweise die Funktion TO_TIMESTAMP verwenden, um die Zeitstempeldaten umzuwandeln.
Es ist möglich, einzelne Zeit- oder Zeitspannen-Dimensionen zu erstellen.
Sie können für jeden einzelnen Zeitraum oder jede Dauer, die Sie einbeziehen möchten, eine Dimension erstellen, anstatt alle in einer einzigen dimension_group zu generieren. In der Regel können Sie das Erstellen einzelner Dimensionen vermeiden, es sei denn, Sie möchten die Looker-Namenskonvention für Zeiträume ändern oder Sie haben bereits vorab berechnete Zeitspalten in Ihrer Datenbank. Weitere Informationen finden Sie auf der Dokumentationsseite Dimensionen, Filter und Parametertypen.
Sie können den ersten Tag der Woche ändern.
Standardmäßig beginnen Wochen in Looker am Montag. Sie können dies mit dem Parameter week_start_day auf Modellebene ändern.
Beachten Sie, dass week_start_day nicht mit dem Zeitraum week_of_year funktioniert, da dieser Zeitraum auf dem ISO-Standard basiert, der Wochen ab Montag verwendet.
Benutzerdefinierte Filter und benutzerdefinierte Felder unterstützen nicht alle Zeiträume
Die Zeiträume day_of_week, fiscal_quarter_of_year, millisecond, millisecondX, microsecond, month_name, quarter_of_year und time_of_day werden in benutzerdefinierten Filtern oder benutzerdefinierten Feldern nicht unterstützt.
Bei Monats-, Quartals- und Jahresintervallen werden nur vollständige Zeiträume gezählt.
Beim month-Intervall in einer duration-Dimensionsgruppe wird ein Monat nur dann als verstrichen betrachtet, wenn der Endtag größer oder gleich dem Starttag ist.
Beispiel:
- Der Unterschied in Monaten zwischen dem 26. September und dem 25. Oktober desselben Jahres ist 0.
- Der Unterschied in Monaten zwischen dem 26. September und dem 26. Oktober desselben Jahres beträgt 1.
Für die Intervalle quarter und year gilt dieselbe Logik.