Power BI Desktop でデータソースとして PostgreSQL を使う方法 

# はじめに
Microsoft Office の製品ラインナップのひとつである、Power BI は様々なデータソースをサポートしており、[データソースによってはドライバーを事前にインストールしておく必要があります。](https://docs.microsoft.com/en-us/power-bi/desktop-data-source-prerequisites)
この記事では、PostgreSQL を開発者ではない立場の人がデータソースとして扱えるような手順を実機確認した内容をもとに備忘録として残しておきます。

__本情報の内容（添付文書、リンク先などを含む）は、作成日時点でのものであり、予告なく変更される場合があります__

# 実際の手順
## 確認した環境
* Power BI Desktop バージョン: 2.58.5103.501 64-bit (2018年5月)
* chocolaty (v0.10.11)
* Windows 10 1803 (build 17134.48)
* .NET Framework (4.7.03056)
* Npgsql 3.2.7 (.msi のインストーラーパッケージを利用）

> .NET Framework の詳細バージョンは4以降であれば、下記のコマンドで確認可能です。
> 実行例を下記に記載しておきます。
>
>```powershell
> reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full
    CBS    REG_DWORD    0x1
    Install    REG_DWORD    0x1
    InstallPath    REG_SZ    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
    Release    REG_DWORD    0x70bf0
    Servicing    REG_DWORD    0x0
    TargetVersion    REG_SZ    4.0.0
    Version    REG_SZ    4.7.03056
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\1033
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\1041
```

##　Power BI Desktop のインストール
Power BI Desktop はストアUWP版とインストーラー版の2種類あり、インストーラー版は__高度なダウンロードオプション__から入手してください。
言語設定が英語でも構わない方は Chocolaty から下記のコマンドでサイレントインストールできます（簡単！）。
インストール結果を貼っておきます。

```powershell
PS C:\WINDOWS\system32> choco install powerbi
Chocolatey v0.10.11
Installing the following packages:
powerbi
By installing you accept licenses for the packages.
Progress: Downloading PowerBI 2.58.5103.501... 100%

PowerBI v2.58.5103.501 [Approved]
powerbi package files install completed. Performing other installation steps.
The package PowerBI wants to run 'ChocolateyInstall.ps1'.
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider:
choco feature enable -n allowGlobalConfirmation
Do you want to run the script?([Y]es/[N]o/[P]rint): Y

Downloading PowerBI 64 bit
  from 'https://download.microsoft.com/download/9/B/A/9BAEFFEF-1A68-4102-8CDF-5D28BFFE6A61/PBIDesktop_x64.msi'
Progress: 100% - Completed download of C:\Users\miyam\AppData\Local\Temp\chocolatey\PowerBI\2.58.5103.501\PBIDesktop_x64.msi (186.46 MB).
Download of PBIDesktop_x64.msi (186.46 MB) completed.
Hashes match.
Installing PowerBI...
PowerBI has been installed.
  powerbi may be able to be automatically uninstalled.
 The install of powerbi was successful.
  Software installed as 'MSI', install location is likely default.

Chocolatey installed 1/1 packages.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
```

インストーラーの場合の画面も参考に貼っておきます。
<img width="386" alt="2018-05-11_00h15_25.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/3804143a-bfac-1aa9-db3d-21cb29bfde41.png">

<img width="386" alt="2018-05-11_00h15_39.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/06dd8973-00a3-7c79-bf86-da56eee0b9e7.png">

<img width="386" alt="2018-05-11_00h15_49.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/0193e89f-e6a9-ead9-f7ee-cc9f7e78d9f5.png">

<img width="386" alt="2018-05-11_00h15_55.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/15142879-ff08-536d-1d06-3d575dced299.png">

<img width="386" alt="2018-05-11_00h19_22.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/d9cef1e7-9ac3-784c-9328-b204e8cd2398.png">

## Npgsql のインストール
今回は最新版の3.2.7　を使用します。一番上の __Npgsql-3.2.7.msi__ をダウンロードしました。
<img width="960" alt="2018-05-11_00h40_32.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/d21057cd-8115-db6c-8c4a-e46f4b33859d.png">

画面キャプチャを貼っておきます。
<img width="386" alt="2018-05-11_00h41_48.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/829c8e69-8c24-6afb-82df-fdef12c7a54a.png">

<img width="386" alt="2018-05-11_00h42_03.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/3ca7266f-0493-2af4-767c-c5f6302b1336.png">

インストール対象に__Npgsql GAC Installation__ が入っていることを確認します。Global Assembly Cache (GAC) は通常はIDEと一緒に使用されるNuGetやGacutil.exeでインテグレーションされることも多いですが、今回の手順は開発者を対象としていませんのでそのままインストーラーから行います。
<img width="386" alt="2018-05-11_01h21_04.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/ef027904-b3b3-a851-e5ca-40111efde20f.png">

<img width="386" alt="2018-05-11_00h42_16.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/374e87ce-e03b-1206-a9cc-bdb56b1145e6.png">

<img width="386" alt="2018-05-11_00h42_25.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/f74d0219-4fe2-e2ef-1d32-ae7f01f3ac03.png">

## OS の再起動
OS を再起動します。

## PowerBI を起動し、データソースとして PostgreSQL データベースを選択します。
画面キャプチャを貼っておきます。
<img width="960" alt="2018-05-11_00h38_31.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/49f88f20-4443-d27b-dfbe-f28565ad42d9.png">

<img width="960" alt="2018-05-11_00h39_04.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/e568a546-f5a8-40d1-c66a-ff69999ab43f.png">

<img width="457" alt="2018-05-11_00h39_17.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/c4d57121-3abb-5431-b1c3-6eecdff78c26.png">

<img width="525" alt="2018-05-11_01h36_08.png" src="https://qiita-image-store.s3.amazonaws.com/0/135357/f52a322a-5b54-045c-41a2-11cb78fc03b3.png">
OKをクリックすると、実際のデータベースサーバーとデータベースに接続を開始します。

# 参考リンク
* [Power BI Desktop](https://powerbi.microsoft.com/ja-jp/desktop/) 
* [Power BI Data Source Prerequisites](https://docs.microsoft.com/en-us/power-bi/desktop-data-source-prerequisites)
* [Configuring Power BI Connectivity to PostgreSQL Database](https://community.powerbi.com/t5/Community-Blog/Configuring-Power-BI-Connectivity-to-PostgreSQL-Database/ba-p/12567)
* [インストールされている .NET Framework バージョンを確認する](https://docs.microsoft.com/ja-jp/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed)
* [グローバル アセンブリ キャッシュ](https://docs.microsoft.com/ja-jp/dotnet/framework/app-domains/gac)
* [ グローバル アセンブリ キャッシュにアセンブリをインストールする](https://docs.microsoft.com/ja-jp/dotnet/framework/app-domains/how-to-install-an-assembly-into-the-gac)