Private Endpointで接続しているPaaSデータベースにPower BI Serviceからアクセスしたい

このエントリは2021/06/20現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容からの乖離が発生する可能性があります。

例によって、以下のような問い合わせをもらった。

現在Azure Database for PostgreSQL (Single Server) に色々データを溜めており、そのデータをPower BI Serviceに出力できるようにしたい。ただ、Private EndpointでPostgreSQLと接続しているため、Power BI Serviceから直接アクセスできないのだが、どうすればよいか?また、データリフレッシュもオンデマンドでやらせたいのだが…。

「On premise Data Gatewayを間に挟んで構成したいのだが、どうすればよいのだろう・・・」ということのよう。On premise Data GatewayはWindows VMで動作させるので、稼働サービスの配置は下図のようなイメージになりそう。

構成上の注意点

接続ドライバー

接続ドライバーはADO.NET Data ProviderのNpgsqlを使うこともできるし、psqlODBCを利用することもできる。いずれにしても、Power BI Desktop、On premise Data Gatewayに事前にインストールしておく必要がある。

  • Npgsql
    • インストールするNpgsqlは.NETランタイムとの関係で、4.0.10以下でなければならない(2021/06/20現在)。これを上回るバージョンでは、On premise Data Gatewayで接続に失敗する(下図のようなエラー表示を確認できる)。
    • On premise Data Gatewayは起動時にNpgsqlライブラリを読み込むため、Npgsqlをインストールしたのに以下のエラーが出る場合、On premise Data Gatewayを再起動するとエラーが解消する場合がある。
  • psqlODBC
    • Power BI DesktopならびにOn premise Data Gatewayで利用するODBCドライバーを一致させておく。
    • ODBCデータソースも作成しておくこと(データソース名は一致していなくてもよい)。

Power BI Desktop

Npgsqlを使った接続の場合、Azure > Azure Database for PostgreSQL(下図左)もしくはDatabase > PostgreSQL database(下図右)を選択する。このとき、Power BI Serviceの利用者がオンデマンドでリフレッシュできるよう、Importではなく、DirectQueryを選択しておく。あとは必要なTableとVisualization componentを選択してレポートを作成する。

ODBC接続の場合、通常はDirectQueryを選択できない。これはpsqlODBCの場合も同様である。(この記事のように、一部のODBCはDirectQueryに対応しているものもある)。ODBCを選択後(下図左)、データソース名を指定する。Pull Downに現れるものを使っても、接続文字列の欄にdsn=で定義してもよい(下図右)。

On premise Data Gateway

On premise Data Gatewayの最新版をインストールしておく。Power BIの場合、Personal Data Gatewayも使えるが、今回は標準のOn premise Data Gatewayを使うことにする。インストール後、Power BI Serviceとの関連付けが完了すると、Power BI ServiceからOn premise Data Gatewayを経由したデータ接続の構成ができるようになる。

Power BI Service

・・・をクリックしてSettings (設定)> Manage gateways (ゲートウェイの管理)とたどり、Power BI Serviceが利用するOn premise Data Gatewayを確認する(下図左)。なお、On premise Data Gatewayのバイナリは、Download (ダウンロード)> Data Gateway (データゲートウェイ)で開くWebページからダウンロードできる(下図右)。

[Manage gateways](ゲートウェイの管理)をクリックすると、以下のような画面が開くので、関連付けたOn premise Data Gateway(この例ではgw-pgql-powerbi)が存在することを確認する。

データソースの追加は以下の通り。

  • On premise Data Gatewayの右側にメニューをクリックできる・・・が現れるので、これをクリック
  • ADD DATA SOURCE(データソースの追加)をクリック
  • On premise Data GatewayからPower BI Serviceで使うデータソースへの接続を追加する
  • データソース名、データソースの種類を指定、選択する。
    • Npgsqlを使った接続の場合、赤で囲んだPostgreSQLを選択し、サーバー名、データベース、接続ユーザーおよびパスワードを指定。ODBC接続の場合、青で囲んだODBCを選択(下図左)。
    • On premise Data Gatewayが稼働するノードで構成したODBCデータソースの接続文字列を指定する。例えば、DSNがPostgreSQL35Wの場合、接続文字列は以下の形式。
    • 認証形式は、Windows認証を選択し、ユーザー、パスワードを指定しておく。
    • 最後に接続確認(下図右)
dsn=PostgreSQL35W

最後に、発行済みレポートのデータセットをワークスペースから選択して、On premise Data Gatewayと関連付ける。この例では、以下のtestreportというデータセットを対象に構成する。メニューから[Settings](設定)をクリックして構成画面を開く。

Gateway connection(ゲートウェイ接続)の設定画面で、接続したいGatewayを選択し、接続したいDatabaseとのマッピングを構成して、Apply(適用)をクリック。これでGatewayを経由してPower BI Serviceからデータを取得できるようになる。以下の例はNpgsqlで接続するOn premise Data Gatewayの例。

ODBC接続を使っていると、以下のような感じでODBC接続であることが明示的にわかる。

これで設定作業はおしまい。

動作確認

あとはふつうにレポートを表示し、リフレッシュできるか確認。DirectQueryを有効にしていると、その都度最新のデータで描画されることがわかる。

通常のODBCドライバーを使っているとDirectQueryは使えないので、データセットをリフレッシュしたあと、レポートを表示することで最新のデータを確認できる。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中