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 の構成

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

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 トークンの有効期限が切れる前に、各スケジュールと各アラートのオーナーに通知メールを送信します。この通知メールは、トークンの有効期限が切れる 14 日前、7 日前、1 日前に、Looker から送信されます。ユーザーは、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 Portal にアクセスし、認証情報でログインします。
  2. Azure ポータルの検索バーで「Microsoft Entra ID」を検索し、検索結果から選択します。
  3. Microsoft Entra ID サービスで、[管理] カテゴリの [アプリの登録] セクションにある [新規登録] をクリックします。
  4. 次のように登録フォームに入力します。
    • 名前: アプリケーションのわかりやすい名前(Looker Trino Connection など)を入力します。
    • サポートされているアカウントの種類: アクセスを制限する方法に基づいて、適切なオプションを選択します。内部ユースケースの場合は、[この組織ディレクトリ内のアカウントのみ] を選択します。
    • リダイレクト URI: [Web] プラットフォームを選択し、Looker リダイレクト URI を入力します。次のようになります: https://YOUR_LOOKER_HOSTNAME/external_oath/redirect
  5. [Register] をクリックします。
  6. クライアント IDテナント IDクライアント シークレットを収集して、後で Looker 接続に入力します。
    • クライアント 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. [アプリケーションを追加] をクリックします。

次に、Looker に必要な API 権限を付与する手順は次のとおりです。

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

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

次に、OAuth を使用するように Trino データベースを構成するには、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 25.18 の時点で、次の機能がサポートされています。

機能 サポート対象
サポートレベル
サポート対象
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
はい

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

機能 サポート対象
サポートレベル
サポート対象
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 に接続した後、ユーザーのログイン オプションを構成します