Looker では、時間ベースのデータを異なるタイムゾーンに変換して、より理解しやすくすることができます。ユーザーは、ローカル タイムゾーンに変換された時間ベースのデータでクエリ結果を確認し、フィルタを作成できます。たとえば、ニューヨークのユーザーがカリフォルニア州で作成されたデータを閲覧している場合、クエリのフィルタリングや解釈を行うために手作業で 3 時間差し引く必要はありません。
Look、Explore、ダッシュボードのクエリ中に SQL を生成する際に、Looker が時間ベースのデータを変換します。基礎となるデータは影響を受けません。クエリ結果は Looker のタイムゾーン設定を使用して変換されます。これは、SQL Runner を使用して実行されるクエリは、時間ベースのデータは変換しないということでもあります。
Looker 内のいくつかの設定では、時間ベースのデータを変換する方法を指定します。
- システム タイムゾーン
- データベースのタイムゾーン
- ユーザー固有のタイムゾーン
- アプリケーションのタイムゾーン
- クエリのタイムゾーン
convert_tz
LookML パラメータsql
LookML パラメータ
システム タイムゾーン
システム タイムゾーンは、Looker を実行するサーバーが構成されているタイムゾーンです。i__looker
および System Activity Explore で利用可能な情報を格納する Looker の内部データベースは、システム タイムゾーンで時間ベースのデータを格納します。
システムのタイムゾーンは Looker アプリケーションからは構成できません。Looker がホストするインスタンスの場合、システム タイムゾーンは常に UTC に設定されます。セルフホスト型インスタンスは、別のシステム タイムゾーンに存在する可能性があります。システム タイムゾーンの変更は簡単ではなく、おすすめしません。i__looker
または System Activity Explore でタイムスタンプを調整する必要がある場合は、表計算を使用して時間調整列を作成することをおすすめします。たとえば、UTC から EST に変換するには、表計算の add_hours(-5, ${time})
という列を作成します。
データベースのタイムゾーン
データベースに接続を追加するときに、[接続設定] で [データベースのタイムゾーン] の値を設定します。
この設定は、データベースが存在しているタイムゾーンを表します。通常は協定世界時(UTC)です。この値を、データベースが存在しているタイムゾーン以外に設定すると、予期しない結果が生じる可能性があります。
ユーザー固有のタイムゾーン
時間ベースのデータ変換で最も重要な設定は、ユーザー固有のタイムゾーンオプションで、Looker の [全般設定] ページの [管理] セクションにあります。
[ユーザー固有のタイムゾーン] を有効または無効にすることができます。
- 有効にすると、各 Looker ユーザーはタイムゾーンに割り当てられ、そのタイムゾーンによってクエリ結果の表示方法が指定されます。
- 無効にすると、ユーザーのアカウントには個別のタイムゾーンが割り当てられません。代わりに、すべてのクエリが [クエリのタイムゾーン] 値を使用して実行されます。
[ユーザー固有のタイムゾーン] を有効にすると、ユーザーが [アカウント] ページでタイムゾーンを設定することも、Looker 管理者が [ユーザー] ページでユーザーにタイムゾーンを割り当てることもできます。ユーザーのタイムゾーンが設定されていない場合、ユーザーのアカウントは Looker の [アプリケーションのタイムゾーン] 設定のデフォルトになります。
ユーザーがクエリを作成すると、そのクエリはユーザーのタイムゾーンで作成されます。その結果、クエリによって時間ベースのデータが返されると、Looker はデータを [データベースのタイムゾーン] からユーザーのタイムゾーンに変換します。ユーザーがクエリで時間関連のフィルタ値を使用すると、Looker はフィルタ値を [データベースのタイムゾーン] に変換します。
さらに、このオプションを有効にすると、Looker の [Explore] と [Look] に [タイムゾーン] プルダウン メニューが表示されます。
このプルダウンには、次のオプションがあります。
- 各タイルのタイムゾーン(ダッシュボードのみ): すべてのクエリは、それらが保存されたタイムゾーンで実行されます。
- ビューアのタイムゾーン: クエリはすべて、ユーザーの現在のタイムゾーンの設定で実行されます。
- 個々のタイムゾーンのリスト。ユーザーは必要に応じて手作業で選択できます。
すべてのクエリは、デフォルトでクエリが作成されたタイムゾーンになります。言い換えると、Alice がタイムゾーン「アメリカ / ロサンゼルス」でクエリを作成し、Bob にクエリを送信する場合、Bob のタイムゾーンが「アメリカ / ニューヨーク」に設定されている場合でも、Bob にはタイムゾーン「アメリカ / ロサンゼルス」でクエリが表示されます。同様に、ドリルダウンではデフォルトで常にクエリが作成されたタイムゾーンになります。
ユーザーはクエリを表示するたびに、プルダウンを使用してタイムゾーンをオーバーライドできます。その際、[ビューアのタイムゾーン] またはそのクエリまたはそのダッシュボードのクエリのセットを選択できます。
ユーザー固有のタイムゾーンに関する考慮事項
ユーザー固有のタイムゾーンを有効にすると、異なるタイムゾーンでユーザーに表示されるデータが異なります。
たとえば、期間 last month
を構成する正確な時刻はタイムゾーンによって異なるため、ユーザーが異なるタイムゾーンに存在している場合、両者ともに last month
でフィルタリングしていても、異なるデータ値が表示されることがあります。
アプリケーションのタイムゾーン
[アプリケーションのタイムゾーン] 設定は、Looker の [全般設定] ページの [管理] セクションで構成できます。
[アプリケーションのタイムゾーン] は、コンテンツ配信のデフォルトのタイムゾーンです。コンテンツ配信に使用されるタイムゾーンは、クエリによって返される時間ベースのデータには影響しません。影響されるのはデータ配信の送信時間のみです。
[ユーザー固有のタイムゾーン] オプションを有効にすると、アカウントにタイムゾーン値を設定していないユーザーのデフォルトのタイムゾーンは [アプリケーションのタイムゾーン] になります。
クエリのタイムゾーン
[クエリのタイムゾーン] オプションは、[ユーザー固有のタイムゾーン] を無効にしている場合にのみ表示されます。その場合は、[接続設定] ページでデータベースへの接続を追加するときに [クエリのタイムゾーン] の値を設定します。
[ユーザー固有のタイムゾーン] を無効にした場合、時間ベースのデータのクエリはすべて、[クエリのタイムゾーン] を使用し、Looker は時間ベースのすべてのデータを [データベースのタイムゾーン] から [クエリのタイムゾーン] に変更します。
convert_tz
LookML パラメータ
Lookerでは、デフォルトでタイムゾーン変換が行われます。個々のフィールドのタイムゾーン変換を無効にするには、convert_tz
LookML パラメータを使用します。例:
dimension_group: created {
type: time
timeframes: [time, date]
convert_tz: no
}
詳細については、convert_tz
パラメータのドキュメント ページをご覧ください。
sql
LookML パラメータ
LookML ディメンションの sql
パラメータ内で、データベース言語の関数を使用してタイムゾーン変換を手動で定義することもできます。たとえば、MySQL でタイムゾーン変換を手作業で定義するには、次の LookML を使用します。
dimension_group: created {
type: time
timeframes: [time, date]
sql: CONVERT_TZ(${TABLE}.created_at,'UTC','PST') ;;
}
MySQL 言語に関する注意事項
MySQL では、タイムゾーン変換関数が動作するには、タイムゾーン テーブルが必要です。これは管理者が実行できます。詳しくは、MySQL のドキュメントをご覧ください。
Postgres 言語に関する注意事項
Looker はドライバの設定を使用して、ターゲット タイムゾーンを選択します。Looker では選択したタイムゾーンの現在の日時が使用されるため、これは pgAdmin と比較した SQL Runner でのクエリの処理方法に影響する可能性があります。
タイムゾーン変換に対するデータベース言語のサポート
Looker で Looker プロジェクトのタイムゾーンを変換するには、データベース言語がタイムゾーンの変換をサポートしている必要があります。次の表に、Looker の最新リリースでタイムゾーンの変換がサポートされている言語を示します。
方言 | サポート対象 |
---|---|
Actian Avalanche | × |
Amazon Athena | ○ |
Amazon Aurora MySQL | ○ |
Amazon Redshift | ○ |
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+ | ○ |
ネイティブ ドライバを使用した Cloudera Impala | ○ |
DataVirtuality | × |
Databricks | ○ |
Denodo 7 | × |
Denodo 8 | × |
Dremio | ○ |
Dremio 11+ | ○ |
Exasol | × |
Firebolt | × |
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 9.5 より前 | ○ |
PrestoDB | ○ |
PrestoSQL | ○ |
SAP HANA 2+ | × |
SingleStore | ○ |
SingleStore 7+ | ○ |
Snowflake | ○ |
Teradata | × |
Trino | ○ |
Vector | × |
Vertica | ○ |