タイムゾーンの設定の使用

Looker では、時間ベースのデータを異なるタイムゾーンに変換して、より理解しやすくすることができます。ユーザーは、ローカル タイムゾーンに変換された時間ベースのデータでクエリ結果を確認し、フィルタを作成できます。たとえば、ニューヨークのユーザーがカリフォルニア州で作成されたデータを閲覧している場合、クエリのフィルタリングや解釈を行うために手作業で 3 時間差し引く必要はありません。

Look、Explore、ダッシュボードのクエリ中に SQL を生成する際に、Looker が時間ベースのデータを変換します。基礎となるデータは影響を受けません。クエリ結果は Looker のタイムゾーン設定を使用して変換されます。これは、SQL Runner を使用して実行されるクエリは、時間ベースのデータは変換しないということでもあります。

Looker 内のいくつかの設定では、時間ベースのデータを変換する方法を指定します。

システム タイムゾーン

システム タイムゾーンは、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 のExploreLook にプルダウン メニューが表示されます。

このプルダウンのオプションは次のとおりです。

  • 各タイルのタイムゾーン(ダッシュボードのみ): すべてのクエリは、それらが保存されたタイムゾーンで実行されます。
  • ビューアのタイムゾーン: クエリはすべて、ユーザーの現在のタイムゾーンの設定で実行されます。
  • 個々のタイムゾーンのリスト。ユーザーは必要に応じて手作業で選択できます。

すべてのクエリは、デフォルトでクエリが作成されたタイムゾーンになります。言い換えると、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 の最新リリースでタイムゾーンの変換がサポートされている言語を示します。