PrestoDBとTrino

このページでは、Looker を PrestoDB または Trino に接続する方法について説明します。

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

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

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

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

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

  • 言語: [PrestoDB] または [Trino] を選択します。

    PrestoSQL の製品名称は Trino に変更されました。352 より前のバージョンの Trino を使用している場合は、Looker 言語メニューから [PrestoSQL] を選択します。

  • ホスト: データベースのホスト名。

  • ポート: データベースのポート。デフォルトのポートは8080です。

  • データベース: Presto 用語の「カタログ」または「コネクタ」。

  • ユーザー名: クエリを実行するユーザーのユーザー名です。

    この情報は、SSL が有効な場合にのみデータベース サーバーに送信されます。

  • パスワード: クエリを実行するユーザーのパスワードです。

    この情報は、SSL が有効な場合にのみデータベース サーバーに送信されます。

  • スキーマ: スキーマが指定されていない場合に使用されるデフォルトのスキーマ。

  • 認証: [データベース アカウント] または [OAuth] を選択します。

    • [データベース アカウント] を使用して、Looker への接続に使用する データベース ユーザー アカウントのユーザー名パスワードを指定します。
    • 接続用に OAuth を構成する場合は、OAuth を使用します。
  • PDT を有効にする: 永続的な派生テーブル(PDT)を有効にするには、この切り替えボタンを使用します。これにより、追加の PDT フィールドと、接続の [PDT オーバーライド] セクションが表示されます。

  • 一時データベース: PDT を書き込むスキーマ(バージョン3.50でPDTのサポートがPrestoに追加されました。PDT のサポート用に Presto を構成する方法について詳しくは、このページの PDT 用の PrestoDB または Trino の構成のセクションをご覧ください)。

  • その他の JDBC パラメータPrestoDB JDBC ドライバTrino JDBC ドライバ、または Starburst JDBC ドライバの追加パラメータ。

  • SSL: SSL 接続を有効にする場合にオンにします。

  • SSL を確認: この項目は無視してください。すべての SSL 接続では、[PrestoDB JDBC パラメータ]、Trino JDBC ドライバ、または Starburst JDBC ドライバ を使用する別の方法が指示されない限り、デフォルトの Java Truststore を使用します。これらのパラメータを [その他の JDBC パラメータ] フィールドに入力します。

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

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

接続設定の詳細については、ドキュメント ページの Looker をデータベースに接続するをご覧ください。

PDT 用の PrestoDB または Trino の構成

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

PDT サポートは、PrestoDB または Trino で使用しているコネクタに左右されます。このセクションでは、スクラッチデータベースに必要な構成設定について説明します。この例では、使用されているコネクタが hive であると仮定しています。

Hive カタログプロパティファイルには、いくつかの構成プロパティを含める必要があります。それらについてはこのセクションで説明します。

PrestoはHiveメタストア結果をキャッシュし、Lookerはすぐにテーブルを表示できる必要があるため、以下が必要です。

hive.metastore-cache-ttl = 0s

LookerはPDTをドロップし、名前を変更できなければならないため、以下の2つのプロパティが必要です。

hive.allow-rename-table=true
hive.allow-drop-table=true

なお、Google の内部 Presto テストサーバーでは、hive.properties ファイルを使用しています。これがすべての Hive スキーマに使用されます。

hive.s3.connect-timeout=1m
hive.s3.max-backoff-time=10m
hive.s3.max-error-retries=50
hive.metastore-cache-ttl = 0s
hive.metastore-refresh-interval = 5s
hive.s3.max-connections=500
hive.s3.max-client-retries=50
connector.name=hive-hadoop2
hive.s3.socket-timeout=2m
hive.s3.staging-directory=/mnt/tmp/
hive.s3.use-instance-credentials=true
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
hive.parquet.use-column-names=true
hive.allow-drop-table=true
hive.metastore.uri=thrift://<metastore-server>:9083
hive.storage-format=ORC
hive.allow-rename-table=true

Trino 接続用の OAuth の構成

Looker は Trino 接続での OAuth をサポートしています。つまり、各 Looker ユーザーはデータベースに対して認証を行い、Looker が独自の OAuth ユーザー アカウントを使用してデータベースでクエリを実行することを認可します。

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

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

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

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

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

アプリケーションの登録

Trino で OAuth を有効にするには、まずサポートされている ID プロバイダを使用してアプリケーションを登録します。Looker は、Trino での OAuth に Microsoft Entra ID(旧称 Azure AD)のみをサポートしています。

前提条件

  • Azure サブスクリプションが必要です。
  • Microsoft Entra ID の管理者権限が必要です。

アプリケーションを登録するには、次の手順に従います。

  1. Azure ポータルに移動し、認証情報でログインします。
  2. Azure Portal の検索バーで、「Microsoft Entra ID」を検索し、検索結果からそれを選択します。
  3. Microsoft Entra ID サービスで、Manage カテゴリの App registrations セクションの New registration をクリックします。
  4. 次のように登録フォームに入力します。
    • 名前: アプリケーションにわかりやすい名前を付けます(Looker Trino Connection など)。
    • サポートされているアカウントの種類:アクセス制限の方法に応じて適切なオプションを選択します。社内利用の場合は、[この組織ディレクトリ内のアカウントのみ] を選択します。
    • リダイレクト URIWeb プラットフォームを選択し、Looker リダイレクト URI を入力します。次のようになります: https://YOUR_LOOKER_HOSTNAME/external_oath/redirect
  5. [Register] をクリックします。
  6. 後で Looker 接続に入力するために、クライアント IDテナント IDクライアント シークレットを収集します。
    • [クライアント ID] と [テナント ID] は、[概要] ページで確認できます。
    • クライアント シークレットがわからない場合は、新しいものを作成する必要があります。管理 セクションで [証明書とシークレット] をクリックし、[新しいクライアント シークレット] をクリックします。
  7. 管理セクションで [Expose an API] をクリックします。
  8. [アプリケーション ID URI] の横にある [追加] をクリックします。
  9. クライアント ID を入力します形式は api://CLIENT_ID です。

次に、Azure Portal で、以下の手順に従って、Looker で使用する新しいスコープを作成します。

  1. [この API で定義されたスコープ] セクションで [スコープを追加] をクリックします。
  2. 新しいスコープのスコープ名を追加します。Looker では、スコープ名が TrinoUsers.Read.All であることが想定されています。

    名前 TrinoUsers.Read.All は、読み取り専用権限を示しますが、この名前自体は実際には権限の設定や適用を行いません。データベースへの読み取りアクセスのみを許可するようにスコープを設定してください。

  3. [表示名] と [説明] を追加します。

  4. [同意できるユーザー] セレクターで、[管理者とユーザー] を選択します。

  5. [スコープを追加] をクリックします。

  6. 承認済みのクライアント アプリケーション セクションで、クライアント アプリケーションを追加 をクリックします。

  7. クライアント ID と新しく作成したスコープを入力します。

  8. [アプリケーションを追加] をクリックします。

次に、必要な API 権限を Looker に付与するために、次の手順に従います。

  1. 管理セクションで、API 権限をクリックします。
  2. [権限を追加] をクリックします。
  3. 上部にある [My APIs] タブを選択します。
  4. アプリ登録のリストで、先ほど作成した登録(Looker Trino Connection など)を選択します。
  5. 委任された権限チェックボックスをオンにします。
  6. [TrinoUsers.Read.All] チェックボックスをオンにします。
  7. [権限を追加] を選択します。

OAuth を使用するようにデータベースを構成する

次に、Trino データベースを OAuth を使用するように構成するには、Trino config.properties ファイルに次の行を追加します。(以下の大文字の変数は、独自の値に置き換えてください。)

  • YOUR_HTTPS_PORT
  • PATH_TO_YOUR_SSL_CERTIFICATE
  • YOUR_TENANT_ID
  • YOUR_CLIENT_ID
  • YOUR_SHARED_SECRET
# enable SSL for OAuth
http-server.https.enabled=true
http-server.https.port=YOUR_HTTPS_PORT
http-server.https.keystore.path=PATH_TO_YOUR_SSL_CERTIFICATE

# enable OAuth 2.0
http-server.authentication.type=oauth2
http-server.authentication.oauth2.issuer=https://sts.windows.net/YOUR_TENANT_ID/
http-server.authentication.oauth2.client-id=NA_required_but_not_used
http-server.authentication.oauth2.client-secret=NA_required_but_not_used

# turn off oidc discovery - Trino will inspect tokens locally instead
http-server.authentication.oauth2.oidc.discovery=false

# URLs that Trino requires for OAuth
http-server.authentication.oauth2.jwks-url=https://login.microsoftonline.com/common/discovery/v2.0/keys
http-server.authentication.oauth2.auth-url=NA_required_but_not_used
http-server.authentication.oauth2.token-url=NA_required_but_not_used

# add audience that matches the Azure AD's Application ID URI
http-server.authentication.oauth2.additional-audiences=api://YOUR_CLIENT_ID

# set shared-secret required for internal Trino communication when authentication is enabled, see: https://github.com/trinodb/trino/issues/12397
# can be generated with the following Linux command: openssl rand 512 | base64
internal-communication.shared-secret=YOUR_SHARED_SECRET

# optionally, allow some insecure http traffic
# http-server.authentication.allow-insecure-over-http=true

クエリを実行するためにログインする

OAuth を使用するようにデータベース接続を設定すると、クエリを実行する前に Microsoft Entra ID にログインするようユーザーに求められます。これには Explore、ダッシュボード、Look、SQL Runner からのクエリが含まれます。

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

Looker を使用して Microsoft Entra ID にログインするには:

  1. Looker ユーザー メニューをクリックします。
  2. アカウントを選択します。
  3. [アカウント] ページで、[OAuth 接続認証情報] セクションの [ログイン] をクリックします。

この操作により、ログイン ダイアログが表示されます。Microsoft Entra ID の認証情報を入力して [ログイン] を選択し、Looker にデータベース アカウントへのアクセス権を付与します。

Looker を通して Microsoft Entra ID にログインした後は、ユーザー アカウント設定のパーソナライズドキュメント ページで説明されているように、[アカウント] ページからいつでも認証情報をログアウトまたは再承認できます。

参考資料

Hive コネクタの構成の詳細については、PrestoDB Hive コネクタTrino Hive コネクタ、または Starburst Hive コネクタをご覧ください。

機能のサポート

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

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

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

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

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

次のステップ

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