オンプレPostgreSQLをPower Appsのデータソースにしてみる

概要

オンプレPostgreSQLをデータソースにしてPower Appsで書籍管理アプリをつくりました。 本来はDataverseやSharePointで完結できますが、そこはさまざまな事情があるので察していただければと思います。というわけで今回はオンプレPostgreSQLにOn-premises data gatewayを介して接続をしました。 他にもさまざまな接続を試しましたが、ラインで囲った部分の環境つくってPower Appsを接続するまでの備忘録です。

環境

  • Windows 10 21H2
  • Microsoft 365 開発者プログラム
  • Power Apps 開発者プログラム
  • Power Automate 試用ライセンス
  • PostgreSQL 14.2
  • A5:SQL Mk-2 2.17.1 Micorosoft Store版
  • On-premises data gateway 3000.118.2

注意事項

  • 接続を試す目的なのでPostgreSQLは特権ロールのまま使用します。
  • 運用を考える場合は適切なロール設定が必要になります。
  • SSLの設定については触れません。
  • 別途Npgsql-4.0.10のインストールが必要になる場合があります。
  • 自己責任でお願いいたします。

準備

On-premises data gateway

ダウンロードセンターまたはPower Automateマイフロー画面右上のインストールボタンからダウンロードして実行します。

インストールしています。します。は相変わらずですね。 完了したらサインインします。

続いてサービス設定に移動してゲートウェイサービスアカウントを設定します。

オンプレミス データ ゲートウェイ サービス アカウントを変更する アカウント変更から進みます。 今回は個人PCでドメインに参加していないので サービスアカウント

PC名\ユーザー名

パスワード

ユーザーのパスワード

を入力し構成で進みます。 もう一度サインインが求められたら入力します。

私は回復キーで戻しましたが新規にオンプレミス データ ゲートウェイを作る場合は On-premises data gatewayの名前と回復キーを入力し構成します。

構成が終わると次のようになります。

PostgreSQL

EDBからダウンロードします。 今回はWindows x86-64の14.2を使用しました。

セットアップします。

デフォルト設定でどんどん進みます。

特権アカウント(postgres)のパスワードを設定します。忘れないようにします。

ポートはデフォルト

Japanese,Japanを設定しました。

進みます。

今回は使いませんがODBCドライバーをインストールしたい場合はStack Builderにチェックを入れます。Power Automate for desktopやデータフローを利用しない場合はチェックなしで終了します。(後からでもインストールできます)

利用する場合は

コマンドプロンプトから操作しやすいようにPathを通しておきます。 システムの詳細設定から環境変数設定に入ります。 ユーザー環境変数のPathに

C:\Program Files\PostgreSQL\14\bin

を追加します。

コマンドプロンプトから確認します。

psql --version

インストールが成功し、Pathが通っていればバージョンが返ってきます。

データベースの作成(コマンドプロンプト)

ユーザーpostgresでログインします。

psql -U postgres

パスワードを要求されるのでインストール時に設定したものを使います。

ログインできたらデータベースを作成します。 今回はsampledbという名前で作成しました。

CREATE DATABASE sampledb;

CREATE DATABASEが返ってきたら

\q

を打つと終了できます。

A5:SQL Mk-2

このままコマンドプロンプトだけで進めてもよいのですが、視覚的なほうが扱いやすいためA5:SQL Mk-2を導入します。なおPostgreSQLと同時にインストールされたpgAdmin4もよさげですが今回はA5:SQL Mk-2を使います。 Microsoft Storeから検索しインストールします。

インストールが済んだら早速PostgreSQLに接続します。 データベースの追加と削除

追加

PostgreSQL(直接接続)

データベースの内容登録

  • サーバ名 localhost
  • データベース名 sampledb
  • ユーザー名 postgres
  • パスワード 最初に設定したもの

設定したらテスト接続をおこないます。 問題なければOKで進みます。

ツリー画面でsampledbをクリックするとログイン画面が出るので接続します。

接続するとツリーが展開されます。

カレントスキーマの中にテーブルを作成します。 次のような内容で作成します。

列名 文字数制限
jan_code 文字 13
title 文字 100
author 文字 50
description 文字 200
price 整数
date_of_issue 文字 20
registration_date 日付

Query1のデータベースにsampledbを選択します。

Query1に次のように記述します。

CREATE TABLE books(
    jan_code CHAR(13) NOT NULL,
    title  VARCHAR(100),
    author VARCHAR(50) ,
    description VARCHAR(200),
    price INTEGER ,
    date_of_issue VARCHAR(20) ,
    registration_date DATE ,
PRIMARY KEY (jan_code));

SQLを実行します。 先頭から全てを選んでからクリックします。

ツリービューからカレントスキーマを選択して右クリックメニューでスキーマを再読み込みします。

テーブルが作成されています。

テーブルを開いて適当にデータを入力します。 Power Appsに接続したときとりあえず表示させたいからです。 入力したらチェックボタンを押すとデータが書き込まれます。

Power Apps

準備が完了したので次はPower Appsで接続します。

作成からその他データソースに移動します。

新しい接続からPostgreSQLを選択します。

各項目を入力しゲートウェイを選択し作成します。

先ほど作成したデータベースが表示されたら接続します。 ここでNpgsql-4.0.10がないと怒られる場合インストールする必要があります。インストールした場合再起動します。

Npgsql v4.0.10

詳しくはDocsを参照ください。

うまくいきました!あとはアプリとして加工します。

まとめ

Power AppsをオンプレのPostgreSQLに接続し、アプリのベースを作成するところまでできました。環境を作れば簡単に接続できることがわかりました。 PostgreSQLのSSLモードやロール設定など挙動をいろいろ試して頂ければ幸いです。

書籍管理アプリ作成部分についてはギークフジワラさんのバーコードから商品情報を取得 Power Apps & Power Automateさんの動画を参考にさせていただきました。

ODBC接続についてはまた別の記事にできればと思います。

参考およびリンク