はじめに
PostgreSQL コネクタは Fabric Data Factory でオンプレミスデータゲートウェイをサポート外だったので ODBC 接続を試みたメモ
注意
2024/9/3 時点で↓のリンクではODBCコネクタのデータパイプラインはサポート外の模様。でも問題なく動く。
こっちのリンクだとサポートになってる。docsのミスな気もする
https://learn.microsoft.com/ja-jp/fabric/data-factory/pipeline-support
準備
テーブルはこちら
-- データベースを作成する(既存のデータベースを使用する場合はこの行をスキップ)
CREATE DATABASE sample_db;
-- 作成したデータベースに接続する
\c sample_db;
-- ordersテーブルを作成する
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY, -- 自動インクリメントの注文ID
customer_id INTEGER NOT NULL, -- 顧客ID
order_date DATE NOT NULL, -- 注文日
order_amount NUMERIC(10, 2) NOT NULL, -- 注文金額
order_status VARCHAR(50) -- 注文ステータス(例:'pending', 'completed', 'cancelled')
);
-- サンプルデータを挿入する
INSERT INTO orders (customer_id, order_date, order_amount, order_status)
VALUES
(1, '2024-09-01', 100.00, 'pending'),
(2, '2024-09-02', 150.50, 'completed'),
(1, '2024-09-03', 200.75, 'cancelled');
オンプレミスデータゲートウェイのセットアップ
odbc ドライバー
https://www.postgresql.org/ftp/odbc/ から odbc ドライバーをインストール
今回はこちらをインストール
検証
1. ODBC 接続の作成と確認
odbc 接続マネージャでシステム DSNを追加して作成
テストもOK
2. Fabic 上の接続を作成
接続とゲートウェイの管理に移動
新規ボタン押して、以下のように入力
接続文字列は dns={odbcマネージャで作成したデータソース名}
成功すると以下のように表示
3. データフロー Gen 2 での取得
データフローの作成画面で、データソースを選択していく
接続文字列を入れると作成した接続が参照される
データ同期先を設定する
テーブル名を入力
公開後、データ更新が完了を確認
データがレイクハウスに連携される
4-1. データパイプラインでの取得(レイクハウステーブルに連携)
データパイプライン作成画面にて、コピーアシスタントを使う
データフローの時と同様に onelake datahub から探すが、先ほど作成した接続が表示されたのでこちらを使う。ちょっと楽になってる
保存・実行する
成功を確認
データもOK
4-2. データパイプラインでの取得(parquet 化)
テーブルのスキーマ変更に強い仕組みを作るため、データレイクにファイルで出力したい。
コピーアクティビティの設定をファイル、parquet に変更。
ファイルは確実に一つにまとまってほしかったのであえて指定
今回は以下のようにフォルダを指定
@concat(
'landing/qiita/postgresql/public_orders/run_date=',
formatDateTime(convertFromUtc(utcnow(),'Tokyo Standard Time'),'yyyyMMdd'),
'/run_at=',
formatDateTime(convertFromUtc(utcnow(),'Tokyo Standard Time'),'yyyyMMddHHmmss'
)
)
完了し、データ出力を確認
内容もOK