Nutzung
view: view_name {
dimension_group: field_name { ... }
}
|
Hierarchie
dimension_group |
Akzeptiert
Looker-Kennung (als erster Teil des Namens für jede Dimension, die von der Dimensionsgruppe erstellt wird)
Besondere Regeln
|
Definition
Mit dem Parameter dimension_group können Sie eine Reihe von zeitbasierten oder dauerbasierten Dimensionen auf einmal erstellen. Sie definieren die Dimensionsgruppe. Daraus wird dann eine Reihe von einzelnen Dimensionen für verschiedene Intervalle oder Zeiträume erstellt. Sie können beispielsweise eine Dimensionsgruppe vom Typ type: time basierend auf einer Zeitstempelspalte angeben. Für die Dimensionsgruppe werden dann 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 Zeitdimensions zu berechnen.
Die Form einer Dimensionsgruppe von type: duration ist:
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 Start und Ende eines Zeitraums 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 auf dieser Seite im Abschnitt Intervalloptionen aufgeführt.Die Dauerwerte werden auf die nächste Ganzzahl abgerundet.
Der Parameter
datatypeist optional. Wenn Ihre Dimensionsgruppe nicht auf einem Datums-/Uhrzeitwert basiert, können Sie stattdessen ein Epochen-, Zeitstempel-, Datums- oder JJJJMMTT-Format angeben. Bei Dimensionsgruppen vontype: durationgilt der Parameterdatatypesowohl für die Parametersql_startals auch fürsql_end. Achten Sie also darauf, dasssql_startundsql_endbeide den angegebenen Datentyp haben. Der Parameterdatatypewird auf dieser Seite im Abschnitt Datenbankdatatypeangeben 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 den Zeitraum erstellen, um zu sehen, wie viel Zeit 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 mit dem Namen Dauer der Registrierung mit den einzelnen Dimensionen Wochen der Registrierung und Jahre der Registrierung erstellt.
Intervalloptionen
Mit dem Parameter intervals wird der Dimensionsgruppe mitgeteilt, welche Intervalleinheiten zur Messung der Zeitdifferenz zwischen der sql_start-Zeit und der sql_end-Zeit verwendet werden sollen. 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 eines Zeitraums definieren
Für Dimensionsgruppen von type: duration liefern die Parameter sql_start und sql_end die Start- und Endinformationen, die zur Berechnung einer Zeitdifferenz verwendet werden. Diese Felder können einen beliebigen gültigen SQL-Ausdruck enthalten, der Daten in einem Zeitstempel-, Datums-/Uhrzeit-, Datums-, Epoch- oder „yyyymmdd“-Format enthält. Die Felder sql_start und sql_end können Folgendes sein:
- Eine Referenz auf einen
raw-Zeitraum aus einer vorhandenen Dimensionsgruppe vontype: time - Ein 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 muss der Ausdruck für Ihren Dialekt geeignet sein.
- Ein LookML-Feldbezug mit dem
::datetime- oder::date-Feldtypreferenz
Angenommen, Sie haben eine Dimension namens 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, mit 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 verwenden. Für die Endzeit der Berechnung können Sie dann den SQL-Ausdruck Ihres Dialekts für die aktuelle Zeit verwenden. Dieses Beispiel bezieht sich auf 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 in einem dimension_group vom Typ type: duration auf einen interval-Wert verweisen möchten, verwenden Sie die Syntax ${interval_fieldname} und die 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 Zeitdauerfeldern verwenden
Wenn Sie ein benutzerdefiniertes Feld für die Dauer erstellen möchten, können Sie für die Dimensionen, auf die in den Parametern sql_start und sql_end einer Dimensionsgruppe vom Typ type: duration verwiesen wird, den Referenztyp ::date oder ::datetime angeben. 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 vom Typ type: time mit den folgenden Zeiträumen: time, date, week, month und raw.
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 vom Typ type: duration erstellen, mit der 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 wird:
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 mit dem Namen Zeit seit Monatsbeginn erstellt, die die einzelnen Dimensionen Wochen seit Monatsbeginn, Tage seit Monatsbeginn und Stunden seit Monatsbeginn enthält. 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 Created Date und Days Since First of Month 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. So können Sie beispielsweise ganz einfach eine Dimension für Datum, Woche und Monat auf Grundlage einer einzelnen Zeitstempelspalte erstellen.
Die Form einer Dimensionsgruppe von type: time ist:
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 von 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 enthalten, der Daten in einem Zeitstempel-, Datums-/Uhrzeit-, Datums-, Epoch- oder „yyyymmdd“-Format enthält.Der Parameter
datatypeist optional. Wenn Ihre Dimensionsgruppe nicht auf einem Datums- und Zeitstempel basiert, können Sie stattdessen ein Epochen-, Zeitstempel-, Datums- oder „yyyymmdd“-Format angeben. Sie wird auf dieser Seite im Abschnitt Datenbankdatatypeangeben ausführlicher beschrieben.Der Parameter
convert_tzist optional und kann verwendet werden, um die automatische Zeitzonenumwandlung zu verhindern. Sie wird auf dieser Seite im Abschnitt Zeitzonenkonvertierungen undconvert_tzausfü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 würden dadurch drei Dimensionen mit den Namen Erstellungsdatum, Erstellungswoche und Erstellungsmonat 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 von type: time unterstützt. Verwenden Sie für Dimensionsgruppen von type: duration stattdessen den Parameter intervals.
Mit dem Parameter timeframes wird der Dimensionsgruppe mitgeteilt, welche Dimensionen sie erstellen soll. Er umfasst die folgenden Optionen:
- Spezielle Zeiträume
- Zeiträume
- Zeiträume
- Wochenzeiträume
- Monatszeiträume
- Quartalszeiträume
- Zeiträume für das Jahr
hourXZeiträumeminuteXZeiträumemillisecondXZeiträume
Sonderzeiträume
Zeiträume
| Zeitraum | Beschreibung | Beispielausgabe |
|---|---|---|
time |
Datum/Uhrzeit des zugrunde liegenden Felds (in einigen SQL-Dialekten wird die Genauigkeit der Datenbank angezeigt, in anderen nur die Sekunde) | 2014-09-03 17:15:00 |
time_of_day |
Tageszeit | 17:15 |
hour |
Datum/Uhrzeit auf die nächste volle Stunde gekürzt | 2014-09-03 17 |
hour_of_day |
Ganzzahlige Tageszeit 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 gekürzt (Informationen zur Unterstützung von Dialekten 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 Unterstützung von Dialekten finden Sie im Abschnitt Dialektunterstützung für Millisekunden und Mikrosekunden auf dieser Seite. | Weitere Informationen finden Sie unter millisecondX verwenden. |
microsecond |
„Datetime“ wird auf die nächste Mikrosekunde gekürzt. Informationen zur Unterstützung von Dialekten finden Sie im Abschnitt Dialektunterstützung für Millisekunden und Mikrosekunden auf dieser Seite. | 2014-09-03 17:15:00.000000 |
Zeiträume (Datum)
| Zeitraum | Beschreibung | Beispielausgabe |
|---|---|---|
date |
Datum des zugrunde liegenden Felds | 2017-09-03 |
Wochenzeiträume
Monatszeiträume
Wenn Sie die Zeiträume fiscal_month_num verwenden möchten, muss der Parameter fiscal_month_offset im Modell festgelegt sein.
Vierteljahreszeiträ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 sein.
Zeiträume für das Jahr
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 unterteilt. Mit hour6 wird jeder Tag beispielsweise in 6-Stunden-Segmente unterteilt, die so aussehen:
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 einem time von 2014-09-01 08:03:17 hat einen hour6 von 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 unterteilt. Mit minute15 wird beispielsweise jede Stunde 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 unterteilt. Mit millisecond250 wird jede Sekunde beispielsweise in Segmente von 250 Millisekunden unterteilt, 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.
Zeitzonenkonvertierungen 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. In Looker erfolgt die Zeitzonenumwandlung standardmäßig. 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 eine Zeitrahmen-Genauigkeit bis auf Mikrosekunden. Einige Datenbanken unterstützen jedoch nur eine Genauigkeit bis auf die Sekunde. Wenn eine Datenbank einen Zeitraum mit einer höheren Genauigkeit als möglich empfängt, wird auf Sekunden aufgerundet.
In der aktuellen 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+ | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| 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+ | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| 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 | |
| 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+ | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| 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+ | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| 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 | |
| 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 für die Dimensionsgruppe bereitstellen. Dadurch kann die Abfrageleistung gesteigert 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 für 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. eines, 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 JJJJMMTT darstellt.
Der Standardwert für datatype ist timestamp.
Beispiele
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 würden dadurch drei Dimensionen mit den Namen Erstellungsdatum, Erstellungswoche und Erstellungsmonat generiert. Beachten Sie, wie der Name dimension_group mit den Zeiträumen kombiniert wird, um die Dimensionsnamen zu generieren.
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 nicht direkt in LookML darauf verweisen. Stattdessen müssen Sie sich auf die Dimensionen beziehen, die erstellt werden.
Stellen Sie sich beispielsweise diese Dimensionsgruppe vor:
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 ein timeframe angeben.
Tipp vom Chat-Team: Wir werden häufig nach dem Validierungsfehler gefragt, der auftreten kann, wenn Sie
primary_keyauf einemdimension_groupmit mehrerentimeframeverwenden. Weitere Informationen finden Sie im Community-Beitrag Timeframes and Dimension Groups in Looker .
Zeitstempeldaten mit Zeitzoneninformationen
Einige Datenbankdialekte haben Zeitstempeloptionen, die Zeitzoneninformationen enthalten. So können Sie Zeitstempeldaten in einem einzelnen Feld speichern, das mehrere Zeitzonen haben kann. Eine Datenzeile wird möglicherweise in UTC gespeichert, eine andere in Eastern Time. Ein Beispiel für die Zeitstempeloptionen des Snowflake-Dialekts finden Sie in der Snowflake-Dokumentation zu TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ-Zeitstempeln.
In diesem Fall können Fehler auftreten, wenn Looker Zeitzonen umwandelt. Um dies zu vermeiden, sollten Sie die Zeitstempeldaten im Parameter sql der Dimension explizit in einen Zeitstempeltyp umwandeln, bei dem keine Zeitzonenkonvertierung erfolgt. Im Snowflake-Dialekt können Sie beispielsweise die Funktion TO_TIMESTAMP verwenden, um die Zeitstempeldaten umzuwandeln.
Es ist möglich, einzelne Zeit- oder Zeitrahmendimensionen zu erstellen.
Sie können für jeden einzelnen Zeitraum oder jede einzelne Dauer, die Sie einbeziehen möchten, eine Dimension erstellen, anstatt alle in einem einzigen dimension_group zu generieren. Im Allgemeinen müssen Sie keine einzelnen Dimensionen erstellen, es sei denn, Sie möchten die Zeitrahmen-Namenskonvention von Looker ändern oder Sie haben bereits vorkalkulierte 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.
week_start_day funktioniert nicht mit dem Zeitraum week_of_year, da dieser Zeitraum auf dem ISO-Standard basiert, der Wochen mit 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 berücksichtigt.
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 beträgt 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.