PostgreSQL
まとめ
| Item | 説明 |
|---|---|
| リリース状態 | 一般公開 |
| 製品 | Power BI (データセット) Power BI (データフロー) Power Apps (データフロー) Excel Dynamics 365 Customer Insights Analysis Services |
| サポートされている認証の種類 | データベース (ユーザー名/パスワード) |
| 関数リファレンス ドキュメント | PostgreSQL.Database |
注意
デプロイ スケジュールにより、またホスト固有の機能があることにより、ある製品に存在する機能が他の製品にはない場合があります。
前提条件
2019 年 12 月のリリース時点では、NpgSQL 4.0.10 は Power BI Desktop に同梱されており、追加のインストールは必要ありません。 GAC をインストールすると、Power BI Desktop で提供されているバージョンが上書きされ、それが既定値になります。 更新は、Power BI サービスのクラウドを介して、およびゲートウェイを介したオンプレミスの両方でサポートされています。 Power BI サービスでは、NpgSQL 4.0.10 が使用されますが、オンプレミスの更新では、使用可能な場合は NpgSQL のローカル インストールが使用され、それ以外の場合には NpgSQL 4.0.10 が使用されます。
2019 年 12 月より前にリリースされた Power BI Desktop のバージョンについては、NpgSQL プロバイダーをローカル マシンにインストールする必要があります。 NpgSQL プロバイダーをインストールするには、リリースのページにアクセスして、関連するリリースをダウンロードしてください。 プロバイダー アーキテクチャ (32 ビットまたは 64 ビット) は、コネクタを使用する製品のアーキテクチャと一致している必要があります。 インストールする際、NpgSQL 自体がコンピューターに追加されるように、必ず NpgSQL GAC インストールを選択してください。
Microsoft では NpgSQL 4.0.10 を推奨しています。NpgSQL 4.1 以上は、.NET バージョンの非互換性のため機能しません。

サポートされる機能
- インポート
- DirectQuery (Power BI のみ)
- [詳細オプション]
- 分単位のコマンド タイムアウト
- ネイティブ SQL ステートメント
- リレーションシップ列
- 階層全体を使ってナビゲートする
Power Query Desktop から PostgreSQL データベースに接続する
一致する NpgSQL プロバイダーがインストールされたら、PostgreSQL データベースに接続できます。 接続するには、次の手順を実行します。
コネクタの選択で [PostgreSQL データベース] オプションを選択します。
表示される [PostgreSQL データベース] ダイアログで、サーバーとデータベースの名前を指定します。

[インポート] または [DirectQuery] のデータ接続モードを選択します。
このデータベースに初めて接続する場合は、 [データベース] 認証の種類の [ユーザー名] と [パスワード] ボックスに PostgreSQL の資格情報を入力します。 認証設定を適用するレベルを選択します。 次に、 [接続](Connect) を選択します。

認証方法の使用について詳しくは、「データ ソースを使用した認証」を参照してください。
注意
接続が暗号化されていない場合は、次のメッセージが表示されます。

暗号化されていない接続を使用してデータベースに接続するには、 [OK] を選択します。または、「データベース エンジンへの暗号化接続の有効化」の手順に従って、PostgreSQL データベースへの暗号化接続を設定します。
[ナビゲーター] で、目的のデータベース情報を選択し、 [読み込み] を選択してデータを読み込むか、 [データの変換] を選択して Power Query エディターでデータの変換を続行します。

Power Query Online から PostgreSQL データベースに接続する
接続するには、次の手順を実行します。
コネクタの選択で [PostgreSQL データベース] オプションを選択します。
表示される [PostgreSQL データベース] ダイアログで、サーバーとデータベースの名前を指定します。

使用するオンプレミス データ ゲートウェイの名前を選択します。
[基本] の認証の種類を選択し、 [ユーザー名] と [パスワード] ボックスに MySQL の資格情報を入力します。
接続が暗号化されていない場合は、 [Use Encrypted Connection](暗号化された接続を使用する) をオフにします。
[次へ] を選択して、データベースに接続します。
[ナビゲーター] で、必要なデータを選択してから、 [データの変換] を選択して、Power Query エディターでデータを変換します。
詳細オプションを使用して接続する
Power Query Desktop には、必要に応じてクエリに追加できる一連の詳細オプションが用意されています。
![[PostgreSQL 接続] ダイアログ ボックスに含まれる詳細オプション。](media/postgresql/postgresql-advanced-options.png)
次の表に、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