dimension_group

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

Besondere Regeln
  • type kann time, duration oder custom_calendar sein.
  • Wird in der Regel mit dem Parameter timeframes oder intervals verwendet.
  • Verwenden Sie den Parameter datatype, wenn die Dimensionsgruppe nicht auf einem Datums-/Zeitfeld basiert.
  • Verwenden Sie für Dimensionsgruppen von type: time den Parameter convert_tz, wenn Sie die automatische Zeitzonenumwandlung verhindern möchten.

Definition

Mit dem Parameter dimension_group lassen sich mehrere zeitbasierte oder dauerbasierte Dimensionen gleichzeitig erstellen. Sie definieren die Dimensionsgruppe. Daraus wird dann eine Reihe von Einzeldimensionen für verschiedene Intervalle oder Zeiträume erstellt. Sie können beispielsweise eine Dimensionsgruppe vom Typ type: time basierend auf 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:

Dauertyp-Dimensionsgruppen

type: duration wird in Verbindung mit einem dimension_group verwendet, um eine Reihe von intervallbasierten Zeitdimensions zu berechnen.

Eine Dimensionsgruppe von 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_start und sql_end enthalten 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.

  • Der Parameter intervals gibt eine oder mehrere Intervalleinheiten an, die zur Messung 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 datatype ist optional. Wenn Ihre Dimensionsgruppe nicht auf einem Datums- und Zeitstempel basiert, können Sie stattdessen ein Epochen-, Zeitstempel-, Datums- oder JJJJMMTT-Format angeben. Bei Dimensionsgruppen von 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 wird auf dieser Seite im Abschnitt Datenbank datatype angeben 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 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

Der Parameter intervals teilt der Dimensionsgruppe mit, welche Intervalleinheiten sie verwenden soll, um die Zeitdifferenz zwischen der sql_start-Zeit 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.

Folgende Optionen sind für den Parameter intervals verfügbar:

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. 2 quarters
second Berechnet die Zeitdifferenz in Sekunden. 606770 seconds
week Berechnet die 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 von type: 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 einen Zeitstempel enthält.
  • Ein SQL-Ausdruck, mit dem eine Zeit aus Ihrer Datenbank abgerufen wird. Dabei wird der entsprechende Ausdruck für Ihren Dialekt verwendet.
  • 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 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 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. Die auf der Dokumentationsseite Incorporating SQL and reference to LookML objects beschriebene view_name.field_name::type Syntax ermöglicht es Ihnen, eine ::date oder ::datetime Version eines Feldes zu erstellen, ohne die Verweise auf diese Dimensionen in Zeichenketten umzuwandeln.

Angenommen, Sie haben eine created-Dimensionsgruppe von type: time mit den Zeiträumen 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 die Dimensionsgruppe 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 Dauer 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.

Nehmen wir beispielsweise an, ein Benutzer wählt im Feldauswahldialog die Dimensionen Erstellungsdatum und Tage seit dem ersten des Monats 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 auf Grundlage einer einzelnen Zeitstempelspalte erstellen.

Eine Dimensionsgruppe von 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 von type: time:

  • Der Parameter timeframes ist optional, wird aber selten ausgelassen. Damit werden ein oder mehrere Zeiträume angegeben, die von der Dimensionsgruppe generiert werden sollen. Wenn timeframes nicht enthalten ist, wird jede Zeitrahmenoption der Dimensionsgruppe hinzugefügt. Die möglichen Optionen sind auf dieser Seite im Abschnitt Zeitrahmenoptionen aufgeführt.

  • Der Parameter sql für type: time-Dimensionsgruppen kann einen beliebigen gültigen SQL-Ausdruck mit Daten im Format „Zeitstempel“, „Datum/Uhrzeit“, „Datum“, „Epoche“ oder „yyyymmdd“ enthalten.

  • Der Parameter datatype ist optional. Wenn Ihre Dimensionsgruppe nicht auf einem Datum/einer Uhrzeit basiert, können Sie stattdessen ein Unix-Zeitstempel-, Zeitstempel-, Datums- oder JJJJMMTT-Format angeben. Sie wird auf dieser Seite im Abschnitt Datenbank datatype angeben ausführlicher beschrieben.

  • Der Parameter convert_tz ist optional und kann verwendet werden, um die automatische Zeitzonenumwandlung zu verhindern. Sie wird auf dieser Seite im Abschnitt Zeitzonenkonvertierungen und convert_tz 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 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.

Der Parameter timeframes teilt der Dimensionsgruppe mit, welche Dimensionen sie erzeugen soll, und umfasst die folgenden Optionen:

Wenn Sie den Parameter timeframes für eine Dimensionsgruppe vom Typ type: time nicht verwenden oder den Parameter timeframes leer lassen (timeframes: []), enthält der Explore die Standardzeiträume für die Dimensionsgruppe:

Sonderzeiträume

Zeitraum Beschreibung Beispielausgabe
raw Der Rohwert aus Ihrer Datenbank, ohne Typumwandlung oder Zeitzonenkonvertierung. raw ist nur in LookML verfügbar und wird nicht auf der Seite „Explorieren“ angezeigt. Der Zeitraum raw gibt einen Zeitstempel zurück, im Gegensatz zu den meisten anderen Zeiträumen, die einen formatierten String zurückgeben. Sie wird hauptsächlich verwendet, um Datumsoperationen für ein Feld auszuführen. 2014-09-03 17:15:00 +0000
yesno Eine yesno-Dimension, die „Yes“ zurückgibt, wenn für das Datum/die Uhrzeit ein Wert vorhanden ist, andernfalls „No“. Im Gegensatz zu anderen Zeiträumen müssen Sie den Zeitraum nicht in den Verweis einbeziehen, wenn Sie von einem anderen Feld aus auf eine yesno-Zeitraumdimension verweisen. Wenn Sie beispielsweise im dimension_group: created auf einen yesno-Zeitraum verweisen möchten, verwenden Sie die Syntax ${created} und nicht ${created_yesno}. Yes

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 Unterstützung von Dialekten 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 Millisekunden und Mikrosekunden in 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

Zeitraum Beschreibung Beispielausgabe
week Datum der Woche, die an einem Montag beginnt, des zugrunde liegenden Datums/der zugrunde liegenden Uhrzeit 2017-09-01
day_of_week Nur Wochentag Wednesday
day_of_week_index Index für Wochentag (0 = Montag, 6 = Sonntag) 2

Monatszeiträume

Zeitraum Beschreibung Beispielausgabe
month Jahr und Monat des zugrunde liegenden Datums/der zugrunde liegenden Uhrzeit 2014-09
month_num Ganzzahl des Monats des zugrunde liegenden Datums/der zugrunde liegenden Uhrzeit 9
fiscal_month_num Ganzzahlige Nummer des Geschäftsmonats des zugrunde liegenden Datums/der zugrunde liegenden Uhrzeit 6
month_name Name des Monats September
day_of_month Tag des Monats 3

Um die fiscal_month_num Zeitrahmen zu verwenden, muss der Parameter fiscal_month_offset im Modell festgelegt werden.

Vierteljährliche Zeiträume

Zeitraum Beschreibung Beispielausgabe
quarter Jahr und Quartal des zugrunde liegenden Datums/der zugrunde liegenden Uhrzeit 2017-Q3
fiscal_quarter Geschäftsjahr und ‑quartal des zugrunde liegenden Datums-/Uhrzeitwerts 2017-Q3
quarter_of_year Quartal des Jahres, dem ein „Q“ vorangestellt ist Q3
fiscal_quarter_of_year Geschäftsjahr, gefolgt von einem „Q“ und dem Quartal Q3

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

Zeitraum Beschreibung Beispielausgabe
year Ganzzahliges Jahr des zugrunde liegenden Datums/der zugrunde liegenden Uhrzeit 2017
fiscal_year Ganzzahliges Geschäftsjahr des zugrunde liegenden Datums/der zugrunde liegenden Uhrzeit FY2017
day_of_year Tag des Jahres 143
week_of_year Woche des Jahres als Zahl 17

Um den Zeitrahmen fiscal_year zu verwenden, muss der Parameter fiscal_month_offset im Modell festgelegt werden.

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:00
  • 2014-09-01 06:00:00
  • 2014-09-01 12:00:00
  • 2014-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. Beispielsweise teilt minute15 jede Stunde in 15-Minuten-Segmente auf, die wie folgt aussehen:

  • 2014-09-01 01:00:00
  • 2014-09-01 01:15:00
  • 2014-09-01 01:30:00
  • 2014-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. Beispielsweise teilt millisecond250 jede Sekunde in 250 Millisekunden lange Segmente auf, die wie folgt aussehen:

  • 2014-09-01 01:00:00.000
  • 2014-09-01 01:00:00.250
  • 2014-09-01 01:00:00.500
  • 2014-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

Generell funktionieren Zeitberechnungen (Differenzen, Dauern usw.) nur dann korrekt, wenn die Zeitwerte alle in dieselbe Zeitzone umgerechnet wurden. Daher ist es wichtig, beim Schreiben von LookML die Zeitzonen zu berücksichtigen.

In Looker gibt es verschiedene Zeitzoneneinstellungen, mit denen zeitbasierte Daten zwischen verschiedenen Zeitzonen konvertiert werden können. Looker führt standardmäßig eine Zeitzonenkonvertierung 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.

Unterstützung von Millisekunden und Mikrosekunden in SQL-Dialekten

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.x - 0.17.x
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 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
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 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, was die Abfrageleistung erhöhen kann.

Für Dimensionsgruppen von type: time gilt der Parameter datatype für den Parameter sql der Dimensionsgruppe.

Bei Dimensionsgruppen von type: duration gilt der Parameter datatype sowohl für die Parameter sql_start als auch sql_end. Stellen Sie daher sicher, dass sowohl sql_start als auch sql_end 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.

Dimensionsgruppen für benutzerdefinierte Kalendertypen

Wenn Sie benutzerdefinierte Kalender in Ihrem LookML-Projekt implementiert haben, können Sie type: custom_calendar in Verbindung mit dem Parameter dimension_group verwenden, um eine Reihe von zeitbasierten Dimensionen auf Grundlage 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 von 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_timeframes ist optional. Sie gibt einen oder mehrere benutzerdefinierte Zeiträume an, die von der Dimensionsgruppe generiert werden sollen. Wenn custom_timeframes nicht angegeben ist, werden alle benutzerdefinierten Zeiträume von der Dimensionsgruppe erstellt. Die möglichen benutzerdefinierten Zeiträume sind auf dieser Seite im Abschnitt custom_timeframes aufgeführt.

  • Der Parameter sql für type: 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_calendar wird der Name der Ansicht des benutzerdefinierten Kalenders angegeben, den Sie in LookML modelliert haben.

  • Der Parameter convert_tz ist optional und kann verwendet werden, um die automatische Zeitzonenumwandlung zu verhindern. Sie wird auf dieser Seite im Abschnitt Zeitzonenkonvertierungen und convert_tz ausführlicher beschrieben.

  • Der Parameter datatype ist optional. Wenn Ihre Dimensionsgruppe nicht auf einem Datums- und Uhrzeitformat basiert, können Sie stattdessen ein Epochen-, Zeitstempel-, Datums- oder „yyyymmdd“-Format angeben. Sie wird auf dieser Seite im Abschnitt Datenbankdatentyp angeben ausführlicher beschrieben.

Viele der Parameter auf Feldebene können auch mit Dimensionsgruppen verwendet werden, obwohl sie hier nicht aufgeführt sind.

Hier sehen Sie 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 Zeitinformationen aus der Spalte orders.created_at der Datenbank.
  • custom_timeframes: [custom_year, custom_quarter]: Die Dimensionsgruppe wird mit Benutzerdefinierten 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 retail_custom_calendar-Ansicht des LookML-Projekts definiert ist, mit den Daten in der orders.created_at-Spalte dieser Datenbank, um Abfrageergebnisse unter Verwendung des benutzerdefinierten Kalenders bereitzustellen. Informationen zum Definieren eines benutzerdefinierten Kalenders finden Sie auf der Dokumentationsseite Using custom calendars in Looker.

custom_timeframes

Bei Dimensionsgruppen, die als type: custom_calendar definiert sind, können Sie, wenn Sie nicht alle möglichen benutzerdefinierten Zeiträume in die Dimensionsgruppe aufnehmen möchten, den Parameter custom_timeframes verwenden, um anzugeben, welche Zeiträume in der Dimensionsgruppe enthalten sein sollen. Die folgenden benutzerdefinierten Zeiträume werden unterstützt:

Zeitraum Beschreibung Annahmen (für _num Typen)

custom_date

Das genaue Datum aus der Kalenderansicht.

custom_day_num

Der numerische Tag aus der Kalenderansicht. Bis zu 371 Tage

custom_period

Ein allgemeiner Zeitraum innerhalb des Kalenders (wie zum Beispiel bei 4-4-5-Kalendern).

custom_period_num

Der numerische Wert des benutzerdefinierten Zeitraums. Es wird von 12 Zeiträumen pro Jahr ausgegangen.

custom_quarter

Das Quartal aus der Kalenderansicht.

custom_quarter_num

Das numerische Quartal des Jahres. Es wird von vier Quartalen pro Jahr ausgegangen.

custom_season

Ein benutzerdefinierter saisonaler Zeitraum.

custom_season_num

Der numerische Wert der benutzerdefinierten Saison. Es wird von zwei Staffeln pro Jahr ausgegangen.

custom_week

Die Woche aus der Kalenderansicht.

custom_week_of_year

Die numerische Woche des Jahres. Es wird von bis zu 53 Wochen pro Jahr ausgegangen.

custom_year

Das Jahr aus der Kalenderansicht.

custom_year_num

Der numerische Wert des benutzerdefinierten Jahres.

based_on_calendar

Für als type: custom_calendar definierte Dimensionsgruppen gibt der Parameter based_on_calendar den Ansichtsnamen des benutzerdefinierten Kalenders an, den Sie in LookML modelliert haben.

Labels für benutzerdefinierte Dimensionengruppen für den Kalender

Looker generiert Dimensionsfeldlabels und Gruppenlabels in der Explore-Feldauswahl basierend darauf, ob die Parameter label oder group_label in der Dimensionsgruppe type: custom_calendar verwendet werden:

  • Standard (weder label noch group_label angegeben):
    • Looker gruppiert die Zeiträume der Dimensionsgruppen unter der Standardbezeichnung der Dimensionsgruppe. Diese Bezeichnung setzt sich aus dem Namen der Dimensionsgruppe und dem Präfix Custom Calendar zusammen (z. B. Created Custom Calendar).
    • Looker stellt jedem Zeitraumnamen Geschäftsjahr voran, z. B. Geschäftsjahresdatum, Geschäftsjahrwoche, Geschäftsjahr.
  • Nur group_label:
    • Looker gruppiert die Zeiträume der Dimensionsgruppe unter dem angegebenen group_label-Wert.
    • Looker stellt jedem Zeitraumname den Namen der Dimensionsgruppe und Fiscal voran, z. B. Created Fiscal Date (Erstellungsdatum (Geschäftsjahr)), Created Fiscal Week (Erstellungswoche (Geschäftsjahr)) und Created Fiscal Year (Erstellungsjahr (Geschäftsjahr)).
  • Nur label:
    • In Looker werden die Zeiträume der Dimensionsgruppe unter dem label-Wert gruppiert, an den Benutzerdefinierter Kalender angehängt wird. Wenn eine Dimensionsgruppe beispielsweise mit label: "My Label" definiert ist, werden die Zeiträume unter Mein Label Benutzerdefinierter Kalender gruppiert.
    • Looker stellt jedem Zeitraumnamen Geschäftsjahr voran, z. B. Geschäftsjahresdatum, Geschäftsjahrwoche, Geschäftsjahr.
  • Sowohl group_label als auch label sind angegeben:
    • Looker gruppiert die Zeiträume der Dimensionsgruppe unter dem angegebenen group_label-Wert.
    • Looker stellt jedem Zeitraum den Wert label voran. Wenn beispielsweise eine Dimensionsgruppe mit label: "My Label" definiert ist, werden die Zeiträume Mein Label – Datum, Mein Label – Woche und Mein Label – Jahr genannt.

Dimensionsgruppen lokalisieren

Mit der Modelllokalisierung können Sie die Namen von Zeiträumen, Intervallen oder benutzerdefinierten Zeiträumen anpassen und übersetzen, die von einer Dimensionsgruppe generiert werden. Weitere Informationen finden Sie unter Lokalisieren von Dimensionsgruppen.

Wichtige Punkte

Auf Dimensionsgruppen muss über ihre einzelnen Dimensionen verwiesen werden.

Da eine Dimensionsgruppe eine Gruppe von Dimensionen und nicht nur eine einzelne Dimension darstellt, kann man in LookML nicht direkt darauf verweisen. Stattdessen müssen Sie sich auf die Dimensionen beziehen, die 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 ein timeframe angeben.

Tipp vom Chatteam: Wir werden häufig nach dem Validierungsfehler gefragt, der auftreten kann, wenn Sie primary_key auf einem dimension_group mit mehreren timeframe verwenden. Weitere Informationen finden Sie im Community-Beitrag Timeframes and Dimension Groups 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 haben kann. Eine Zeile mit Daten 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 kann es zu Fehlern kommen, 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 Zeitspannen-Dimensionen 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 Dimension, 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, bei dem die Wochen am Montag beginnen.

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.