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 の最新リリースでタイムゾーンの変換がサポートされている言語を示します。