Snowflake

Looker を Snowflake に接続する手順は次のとおりです。

  1. Snowflake で Looker ユーザーを作成し、アクセスをプロビジョニングします。
  2. Looker でデータベース接続を設定します。

ネットワークトラフィックの暗号化

Looker アプリケーションとデータベース間のネットワーク トラフィックを暗号化することをおすすめします。セキュアなデータベースアクセスを可能にするドキュメント ページに記載されているオプションのいずれかを検討してください。

Snowflake で Looker ユーザーを作成する

Looker ユーザーの作成には、次のコマンドを使用することをおすすめします。各行を個別に実行するか、Snowflake 接続パネルで [すべてのクエリ] オプションを選択して、すべての行が実行されるようにします(デフォルトでは、Snowflake は選択された行のみを実行します)。

[すべてのクエリ] チェックボックスがオンになっている Snowflake コンソール。

新しく作成されたオブジェクトが同じ権限を持つように、GRANT ステートメントごとに ON FUTURE キーワードを追加することをおすすめします。

-- change role to ACCOUNTADMIN
use role ACCOUNTADMIN;

-- create role for looker
create role if not exists looker_role;
grant role looker_role to role SYSADMIN;
    -- Note that we are not making the looker_role a SYSADMIN,
    -- but rather granting users with the SYSADMIN role to modify the looker_role

-- create a user for looker
create user if not exists looker_user
password = <enter password here>;
grant role looker_role to user looker_user;
alter user looker_user
set default_role = looker_role
default_warehouse = looker_wh;

-- change role
use role SYSADMIN;

-- create a warehouse for looker (optional)
create warehouse if not exists looker_wh

-- set the size based on your dataset
warehouse_size = medium
warehouse_type = standard
auto_suspend = 1800
auto_resume = true
initially_suspended = true;
grant all privileges
on warehouse looker_wh
to role looker_role;

-- grant read only database access (repeat for all database/schemas)
grant usage on database <database> to role looker_role;
grant usage on schema <database>.<schema> to role looker_role;

-- rerun the following any time a table is added to the schema
grant select on all tables in schema <database>.<schema> to role looker_role;
-- or
grant select on future tables in schema <database>.<schema> to role looker_role;

-- create schema for looker to write back to
use database <database>;
create schema if not exists looker_scratch;
use role ACCOUNTADMIN;
grant ownership on schema looker_scratch to role SYSADMIN revoke current grants;
grant all on schema looker_scratch to role looker_role;

データベースへの Looker 接続の作成

Looker の [管理者] セクションで [接続] を選択し、[新しい接続] をクリックします。

接続の詳細を入力します。設定の大部分は、ほとんどのデータベース言語に共通するものです。詳細については、Looker をデータベースに接続するのドキュメント ページをご覧ください。次の設定の説明には、Snowflake に固有の注意事項が含まれています。

[Database Settings - Host]: Snowflake のホスト名を入力します。<account_name>.snowflakecomputing.com のようになります。リージョン別の Snowflake アカウント名の例で、デプロイに適切な値を使用していることを確認します。

[Database Settings - Authentication Method]: 次のいずれかの認証方法を選択します。

  • データベース アカウントは、Snowflake の 2025 年 11 月の期限までに多要素認証方式に移行する時間が必要な既存のユーザーのみが使用する必要があります。Looker への接続に使用する Snowflake ユーザー アカウントのユーザー名パスワードを指定します。

  • 鍵ペアは、Snowflake の鍵ペア認証を実装してデータベースに接続するお客様が使用する必要があります。[ユーザー名] フィールドで、Snowflake への接続に使用するユーザー アカウントを指定します。暗号化されていない p8 形式の鍵ファイルを [鍵ペアファイル] フィールドにアップロードします。暗号化された鍵ファイルはサポートされていません。Snowflake のドキュメントには、秘密鍵ファイルの作成方法が記載されています

  • OAuth は、永続的な派生テーブル(PDT)を必要とせず、接続用に OAuth を構成するお客様が使用する必要があります。

省略可能な設定 - PDT を有効にする: OAuth 認証を使用する Snowflake 接続では、PDT はサポートされていません。PDT が必要な場合は、代わりに [Key Pair] 認証オプションを使用します。

省略可能な設定 - その他の JDBC パラメータ: Snowflake JDBC ドライバから JDBC パラメータを追加します。

  • warehouse=<YOUR WAREHOUSE NAME> 個追加します。
  • さらに、デフォルトでは、Looker ではセッションごとに次の Snowflake パラメータが設定されます。

    • TIMESTAMP_TYPE_MAPPING=TIMESTAMP_LTZ
    • JDBC_TREAT_DECIMAL_AS_INT=FALSE
    • TIMESTAMP_INPUT_FORMAT=AUTO
    • AUTOCOMMIT=TRUE

      これらのパラメータをオーバーライドするには、[その他の JDBC パラメータ] フィールドに別の値を設定します(例: &AUTOCOMMIT=FALSE)。

接続が成功したことを確認するには、[テスト] をクリックします。トラブルシューティング情報については、データベース接続のテストのドキュメント ページをご覧ください。

これらの設定を保存するには、[接続] をクリックします。

Snowflake ウェアハウスをグループ単位またはユーザー単位で指定する

Looker のユーザー属性を使用して、個々の Looker ユーザーまたはグループに個別の Snowflake ウェアハウスを割り当てることができます。これは、異なるレベルのコンピューティング能力を必要とするユーザーが存在する場合などに活用できます。大きなコンピューティング リソースを備えたウェアハウスを必要とするユーザーにのみ割り当てる一方で、それほど必要としないユーザーに対してはリソースが少ないウェアハウスを割り当てることができます。

グループ単位またはユーザー単位でウェアハウスを指定するには、次の操作を行います。

  1. Looker でグループまたはユーザーを追加します。
  2. Snowflake ウェアハウス名を保存する Looker のユーザー属性を定義します。この属性には任意の名前を付けることができます(例: snowflake_wh)。

    Snowflake ウェアハウスのユーザー属性が表示されている Looker の [ユーザー属性] ページ。

  3. 先ほど定義したユーザー属性で、異なるウェアハウス アクセスが必要になる グループまたはユーザーにウェアハウス名の値を割り当てます。

    グループに割り当てられた値を持つ Snowflake ウェアハウスのユーザー属性が表示されいる Looker の [ユーザー属性] ページ。

  4. [接続設定] ページの [その他の JDBC パラメータ] フィールドに以下の内容を追加します。snowflake_warehouse は、定義したユーザー属性の名前に置き換えます。

      warehouse={{ _user_attributes['snowflake_warehouse'] }}
    
  5. 個々の接続の設定をテストするには、ウェアハウス名の値を割り当てたユーザーとして sudo を実行します。

Snowflake の自動一時停止機能の管理

Snowflake ウェアハウスは、自動一時停止機能を備えており、この機能はデフォルトで有効になっています。指定した期間が経過すると、ウェアハウスは自動的に一時停止します。ウェアハウスが一時停止されている場合は、すべてのクエリでエラーが発生します。このエラーはダッシュボードには表示されません(通常、これらのエラーによりデータが表示されません)が、Explore ページでクエリを実行するユーザーには表示されます。

通常、この管理には次の 2 つの方法が使用されます。

  1. Snowflake には、クエリが実行されたときにウェアハウスを再開する自動再開機能があります。しかし、ウェアハウスの再開には最大で 5 分を要し、結果が返される前にクエリが 5 分間停止する場合があります。自動再開は Looker で構成できません。この機能は、Snowflake UI の [ウェアハウス] タブで有効にします。

    [自動一時停止] チェックボックスと [自動再開] チェックボックスが表示されている Snowflake UI の [ウェアハウス] タブ。

  2. 永続的な派生テーブル(PDT)が有効になっている場合、Looker のデフォルト設定では、5 分ごとに派生テーブルの再生成を確認します。このチェックにより、Snowflake ウェアハウスはアクティブな状態が維持されます。ただし、費用を削減するために、営業時間外に Snowflake でウェアハウスを一時停止することが望ましい場合があります。これは、メンテナンス スケジュールのドキュメントで説明されているように、PDT 再生成スケジュールを変更することで実現できます。

PDT のサポート

PDT は、OAuth を使用する Snowflake 接続ではサポートされていません。

永続的な派生テーブルをサポートするには、データベースおよび Looker が PDT の作成に使用する一時スキーマへの書き込みアクセス権がある PDT 用の Snowflake ユーザー アカウントを作成します。Looker の [接続設定] ページの [永続的な派生テーブル(PDT)の設定] セクションの [オプション設定] タブで、[PDT を有効にする] 切り替えボタンをオンにします。次に、[一時データベース] フィールドに、Looker で PDT の作成に使用される一時スキーマの名前を入力します。

PDT オーバーライドは、鍵ペア認証を使用する Snowflake 接続では使用できません。

Snowflake 接続の場合、Looker は Snowflake の AUTOCOMMIT パラメータの値を TRUE(Snowflake のデフォルト値)に設定します。Looker が PDT 登録システムを維持するために実行する SQL コマンドには、AUTOCOMMIT が必須です。

Snowflake 接続用の OAuth の構成

Looker は Snowflake 接続用の OAuth をサポートしています。つまり、各 Looker ユーザーは独自の OAuth ユーザー アカウントを使用してデータベースに対して認証を行います。

OAuth により、データベース管理者は次のタスクが行えるようになります。

  • データベースに対してどのLookerユーザーがクエリを実行しているかを監査する
  • データベースレベルの権限を使用してロールベースのアクセス制御を実施する
  • データベースにアクセスするすべてのプロセスとアクションに、データベース ID とパスワードを複数の場所に埋め込む代わりに OAuth トークンを使用する
  • データベースを介して特定のユーザーの認証を取り消す

OAuth を使用する Snowflake 接続では、ユーザーは OAuth トークンの有効期限が切れたときに定期的に再ログインする必要があります。Snowflake OAuth トークンの最大有効期間は、Snowflake 自体で設定します。

データベース レベルの OAuth 接続について、次の点に注意してください。

  • 永続的な派生テーブル(PDT)は、OAuth を使用した Snowflake 接続ではサポートされていません。
  • OAuth トークンの有効期限が切れると、そのユーザーが所有する Looker スケジュールやアラートが影響を受けます。これを回避するために、Looker は、トークンの有効期限が切れる 14 日前、7 日前、1 日前に、各スケジュールと各アラートのオーナーに通知メールを送信します。ユーザーは、Looker ユーザーページに移動して Looker をデータベースに再認可し、スケジュールやアラートの中断を回避できます。詳しくは、ユーザー アカウントの設定をカスタマイズするのドキュメント ページをご覧ください。
  • OAuth を使用するデータベース接続は「ユーザーごと」であり、キャッシュ ポリシーもまたクエリごとではなくユーザーごとです。つまり、Looker ではキャッシュ期間内に同一ユーザーが同じクエリを実行した場合にのみ、キャッシュに保存された結果が使用されます。キャッシュについて詳しくは、クエリのキャッシングのドキュメント ページをご覧ください。
  • OAuth を使用する場合、Snowflake ユーザー アカウントで別のロールに切り替えることはできません。Snowflake のドキュメントに記載されているように、デフォルトのロールが ACCOUNTADMIN または SECURITYADMIN である場合を除き、Snowflake は Snowflake ユーザーのアカウントのデフォルト ロールを使用します。これらのロールは OAuth でブロックされているため、Snowflake は代わりに PUBLIC ロールを使用します。詳細については、Snowflake のドキュメントをご覧ください。
  • Looker 管理者が別のユーザーとして sudo を実行する場合、管理者はそのユーザーの OAuth アクセス トークンを使用することになります。ユーザーのアクセストークンの有効期限が切れている場合、管理者は sudo されているユーザーに代わって新しいトークンを作成することはできません。sudo コマンドの使用方法については、ユーザーのドキュメント ページをご覧ください。

Looker で OAuth 用に Snowflake データベースを構成する

OAuth を使用して Looker への Snowflake 接続を作成するには、Snowflake で OAuth 統合を設定する必要があります。これには、ACCOUNTADMIN 権限を持つ Snowflake ユーザー アカウントが必要です。

  1. Snowflake で次のコマンドを実行します。ここで、<looker_hostname> は Looker インスタンスのホスト名です。

    CREATE SECURITY INTEGRATION LOOKER
      TYPE = OAUTH
      ENABLED = TRUE
      OAUTH_CLIENT = LOOKER
      OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';
    
  2. 次のコマンドを実行して、OAuth クライアント ID とシークレットを取得します。

    SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    この手順の後の部分で必要になる OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET がレスポンスに含まれます。

  3. Looker で、このページのデータベースへの Looker 接続の作成セクションの説明に沿って、Snowflake ウェアハウスへの新しい接続を作成します。新しい接続を作成するときに、[認証] フィールドで [OAuth] オプションを選択します。[OAuth] オプションを選択すると、Looker に [OAuth クライアント ID] と [OAuth クライアント シークレット] フィールドが表示されます。

  4. この手順の前半でデータベースから取得した OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET の値を貼り付けます。

  5. Looker をデータベースに接続するの残りの手順を完了します。

OAuth 接続のテスト

データベースへの Looker の接続を構成したら、次のいずれかの方法で接続自体をテストできます。

  • データベースへの Looker の接続のドキュメント ページで説明されているように、[接続設定] ページの下部にある [テスト] ボタンを選択します。
  • 接続のドキュメント ページの説明に従って、[接続] 管理ページの接続リストの横にある [Test] ボタンを選択します。

また、次の手順で接続をテストし、モデルにデプロイすることもできます。

  1. Looker で Development Mode に移行します。
  2. Snowflake 接続を使用する Looker プロジェクトのプロジェクト ファイルに移動します。
  3. モデルファイルを開き、モデルの connection 値を新しい Snowflake 接続の名前に置き換えて、モデルファイルを保存します。
  4. モデルの Explore またはダッシュボードの一つを開き、クエリを実行します。クエリを実行しようとするときに、Snowflake にログインするよう求められます。
  5. Snowflake のログイン プロンプトに沿って、Snowflake の認証情報を入力します。

Snowflake へのログインが成功すると、Looker によってユーザーはクエリに戻されます。クエリが正しく実行されたら、新しい接続値を commit し、変更を本番環境にデプロイできます。

Snowflake にログインしてクエリを実行する

OAuth 用に Snowflake 接続を設定すると、クエリを実行する前にユーザーに対して Snowflake にログインするよう求めるプロンプトが表示されます。これには Explore、ダッシュボード、Look、SQL Runner からのクエリが含まれます。

OAuth ログイン プロンプトを表示する Looker UI。

[アカウント] ページの [OAuth 接続認証情報] セクションから Snowflake にログインすることもできます。

Looker を使用して Snowflake アカウントにログインする手順は次のとおりです。

[OAuth 接続認証情報] セクションが表示されている Looker の [アカウント] ページ。

  1. Looker ユーザー メニューをクリックします。
  2. [アカウント] を選択します。
  3. [アカウント] ページで、[OAuth 接続認証情報] セクションに移動し、適切な Snowflake データベースの [ログイン] ボタンを選択します。

[ログイン] を選択すると、Snowflake のログイン ダイアログが表示されます。Snowflake の認証情報を入力して [ログイン] を選択し、[許可] を選択して Looker に Snowflake アカウントへのアクセスを許可します。

Looker を通じて Snowflake にログインした後は、[アカウント] ページでいつでも認証情報からログアウトまたは再認証できます。詳しくは、ユーザー アカウントのカスタマイズ ドキュメント ページをご覧ください。

機能のサポート

一部の機能については、Looker でサポートするには、データベース言語が同じ機能に対応している必要があります。

Snowflake では、Looker 25.10 の時点で、次の機能がサポートされています。

機能 サポート対象
サポートレベル
サポート対象
Looker(Google Cloud コア)
対称集計
派生テーブル
永続的な SQL 派生テーブル
永続的なネイティブ派生テーブル
安定したビュー
クエリの強制終了
SQL ベースのピボット
タイムゾーン
はい
SSL
はい
Subtotals
JDBC の追加パラメータ
大文字と小文字の区別
ロケーション タイプ
リストの種類
パーセンタイル
個別のパーセンタイル
いいえ
SQL Runner の表示プロセス
いいえ
SQL Runner の説明テーブル
はい
SQL Runner 表示インデックス
×
SQL Runner Select 10
はい
SQL ランナーの数
はい
SQL の説明
OAuth 2.0 認証情報
コンテキスト コメント
接続プーリング
HLL スケッチ
集約テーブルの自動認識
増分PDT
はい
ミリ秒
はい
マイクロ秒
マテリアライズド ビュー
いいえ
前期比指標
Approximate Count Distinct
いいえ

次のステップ

データベースを Looker に接続した後、ユーザーのログイン オプションを構成します