PostgreSQL
まとめ
項目 | 説明 |
---|---|
リリース状態 | 一般提供 |
製品 | Excel Power BI (セマンティック モデル) Power BI (データフロー) ファブリック (データフロー Gen2) Power Apps (データフロー) Dynamics 365 Customer Insights Analysis Services |
サポートされている認証の種類 | データベース (ユーザー名/パスワード) |
関数リファレンス ドキュメント | PostgreSQL.Database |
Note
デプロイ スケジュールにより、またホスト固有の機能があることにより、ある製品に存在する機能が他の製品にはない場合があります。
前提条件
2019 年 12 月のリリース時点では、NpgSQL 4.0.10 は Power BI Desktop に同梱されており、追加のインストールは必要ありません。 GAC をインストールすると、Power BI Desktop で提供されているバージョンが上書きされ、それが既定値になります。 更新は、Power BI サービスのクラウドと、オンプレミス データ ゲートウェイを介したオンプレミスの両方でサポートされます。 オンプレミスデータ ゲートウェイなしで Power BI サービスからデータを更新するには、Azure 上の Power BI サービスからの直接接続を許可する方法で PostgreSQL をホストする必要があります。 これは、Microsoft Azure でホストされている PostgreSQL でネイティブにサポートされています。 その他のホスティング環境については、インターネットから直接アクセスするための PostgreSQL の構成について、ホスティング プロバイダーに問い合わせてください。 PostgreSQL がインターネットから直接アクセスできないように構成されている場合 (セキュリティに推奨)、更新にはオンプレミス データ ゲートウェイを使用する必要があります。 Power BI サービスでは、NpgSQL 4.0.10 が使用されますが、オンプレミスの更新では、使用可能な場合は NpgSQL のローカル インストールが使用され、それ以外の場合には NpgSQL 4.0.10 が使用されます。
2019 年 12 月より前にリリースされた Power BI Desktop のバージョンについては、NpgSQL プロバイダーをローカル マシンにインストールする必要があります。 NpgSQL プロバイダーをインストールするには、[リリース ページ] に移動し、v4.0.10 を検索し、.msi ファイルをダウンロードして実行します。 プロバイダー アーキテクチャ (32 ビットまたは 64 ビット) は、コネクタを使用する製品のアーキテクチャと一致している必要があります。 インストールするときは、NpgSQL GAC インストールを選択して、NpgSQL 自体がコンピューターに追加されていることを確認してください。
NpgSQL 4.0.10 をお勧めします。 NpgSQL 4.1 以降は、.NET バージョンの非互換性のため動作しません。
Power Apps の場合は、ローカル コンピューターに NpgSQL プロバイダーをインストールする必要があります。 NpgSQL プロバイダーをインストールするには、[リリース ページ] に移動し、関連するバージョンをダウンロードします。 インストーラー (NpgSQL-[バージョン番号].msi) ファイルをダウンロードして実行します。 NpgSQL GAC インストールを選択し、完了したらコンピューターを再起動してこのインストールを有効にします。
サポートされる機能
- インポート
- DirectQuery (Power BI セマンティック モデル)
- 高度なオプション
- 分単位のコマンド タイムアウト
- ネイティブ SQL ステートメント
- リレーションシップ列
- 階層全体を使ってナビゲートする
Power Query Desktop から PostgreSQL データベースに接続する
一致する NpgSQL プロバイダーがインストールされたら、PostgreSQL データベースに接続できます。 接続するには、次の手順を実行します。
コネクタの選択で [PostgreSQL データベース] オプションを選択します。
表示される [PostgreSQL データベース] ダイアログで、サーバーとデータベースの名前を指定します。
データ接続モードとして [Import] または [DirectQuery] を選択します。
このデータベースに初めて接続する場合は、[データベース] 認証の種類の [ユーザー名] と [パスワード] ボックスに PostgreSQL の資格情報を入力します。 認証設定を適用するレベルを選択します。 次に、 [接続](Connect) を選択します。
認証方法の使用について詳しくは、「データ ソースを使用した認証」を参照してください。
Note
接続が暗号化されていない場合は、次のメッセージが表示されます。
暗号化されていない接続を使用してデータベースに接続するには、[OK] を選択します。または、「データベース エンジンへの暗号化接続の有効化」の手順に従って、PostgreSQL データベースへの暗号化接続を設定します。
[ナビゲーター] で、目的のデータベース情報を選択し、[読み込み] を選択してデータを読み込むか、[データの変換] を選択して Power Query エディターでデータの変換を続行します。
Power Query Online から PostgreSQL データベースに接続する
接続するには、次の手順を実行します。
コネクタの選択で [PostgreSQL データベース] オプションを選択します。
表示される [PostgreSQL データベース] ダイアログで、サーバーとデータベースの名前を指定します。
使用するオンプレミス データ ゲートウェイの名前を選択します。
[基本] の認証の種類を選択し、 [ユーザー名] と [パスワード] ボックスに PostgreSQL の資格情報を入力します。
接続が暗号化されていない場合は、 [Use Encrypted Connection](暗号化された接続を使用する) をオフにします。
[次へ] を選択して、データベースに接続します。
[ナビゲーター] で、必要とするデータを選択してから、 [データの変換] を選択して、Power Query エディターでデータを変換します。
詳細オプションを使用して接続する
Power Query Desktop には、必要に応じてクエリに追加できる一連の詳細オプションが用意されています。
次の表に、Power Query Desktop で設定できるすべての詳細オプションを示します。
詳細オプション | 説明 |
---|---|
分単位のコマンド タイムアウト | 接続が 10 分 (既定のタイムアウト) を超える場合は、別の値を分単位で入力して、より長い時間接続を維持できます。 このオプションは Power Query Desktop でのみ使用できます。 |
SQL ステートメント | 詳細については、「ネイティブ データベース クエリを使用してデータベースからデータをインポートする」を参照してください。 |
リレーションシップ列を含める | オンにした場合は、他のテーブルとのリレーションシップがある列が含められます。 このボックスをオフにすると、それらの列は表示されません。 |
階層全体を使ってナビゲートする | オンにすると、接続しているデータベース内のテーブルの完全な階層がナビゲーターに表示されます。 オフにすると、ナビゲーターには、列と行にデータが含まれているテーブルのみが表示されます。 |
必要とする詳細オプションを選択したら、Power Query Desktop で [OK] を選択して、PostgreSQL データベースに接続します。
ネイティブ クエリ フォールディング
既定では、ネイティブ クエリ フォールディングが有効になっています。 フォールディングが可能な操作は、通常のインポートまたは直接クエリ ロジックに従って、ネイティブ クエリの上に適用されます。 ネイティブ クエリ フォールディングは、Value.NativeQuery() にオプション パラメーターがある場合は適用されません。
ネイティブ クエリ フォールディングが有効になっているとフォールディングが機能しないまれなケースでは、それを無効にできます。 ネイティブ クエリ フォールディングを無効にするには、詳細エディターで Value.NativeQuery() の EnableFolding
フラグを false
に設定します。
サンプル: Value.NativeQuery(target as any, query, null, [EnableFolding=false])
トラブルシューティング
ネイティブ クエリによって次のエラーがスローされる場合があります。
We cannot fold on top of this native query. Please modify the native query or remove the 'EnableFolding' option.
基本的なトラブルシューティング手順では、周囲に limit 1
句を指定したときに Value.NativeQuery() 内のクエリで同じエラーがスローされるかどうかを確認します。
select * from (query) _ limit 1