0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Simple Data Integrator (SDI) 応用編:データ連携 (PostgreSQLからSnowflakeへの連携例)

Last updated at Posted at 2024-10-22

Simple Data Integrator (SDI) バージョン2.0.2024.5から、ODBC経由でSnowflakeへのデータ同期パフォーマンスが大幅に改善されました。以前のバージョンをご利用の方には、バージョンアップをおすすめします。

はじめに

SaaS型データプラットフォームであるSnowflakeをデータウェアハウスとして採用するケースが増えています。既存システムとSnowflakeとのデータ連携が必要になる場面も多くなっており、Simple Data Integratorを使用してその連携が可能です。ここでは、PostgreSqlを例にしてそのデータ連携手順について説明します。ほかのデータベースの手順は類似します。

前提条件

以下の環境が整っていることを確認してください:

  1. PostgreSQLデータベース: ソースデータベースとしてのPostgreSQLへのアクセス権。
  2. Snowflakeアカウント: ターゲットシステムとしてのSnowflake環境。
  3. ODBCドライバー: Snowflakeへの接続に使用するODBCドライバーがインストールされていること。
  4. Simple Data Integrator: Simple Data Integratorがインストールされていること。

構成図

image.png

※一般的なカラムタイプを使用したSnowflakeテーブルを作成し、動作確認を行います。

Source (PostgreSQL)

スキーマ名:public
テーブル名:sample_table

テーブル構造
PK カラム名
key_icon.png id SERIAL
name VARCHAR
description VARCHAR
price NUMERIC(10,2)
created_at TIMESTAMP
last_updated_at TIMESTAMPTZ
active BOOLEAN
item_weight FLOAT8
start_date DATE
start_time TIME
category VARCHAR(50)
binary_data BYTEA
unique_code VARCHAR(10)
image_data BYTEA
DDL
CREATE TABLE public.sample_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR,
    description VARCHAR,
    price NUMERIC(10,2),
    created_at TIMESTAMP,
    last_updated_at TIMESTAMPTZ,
    active BOOLEAN,
    item_weight FLOAT8,
    start_date DATE,
    start_time TIME,
    category VARCHAR(50),
    binary_data BYTEA,
    unique_code VARCHAR(10),
    image_data BYTEA
);

Test Data
INSERT INTO public.sample_table 
(name, description, price, created_at, last_updated_at, active, item_weight, start_date, start_time, category, binary_data, unique_code, image_data)
VALUES
('Item 1', 'Description of item 1', 100.50, NOW(), NOW(), TRUE, 1.25, '2024-01-01', '12:00:00', 'Category A', '\\xDEADBEEF', 'UNQ001',  '\\xAAFF'),
('Item 2', 'Description of item 2', 150.75, NOW(), NOW(), FALSE, 0.75, '2024-02-01', '15:30:00', 'Category B', '\\xCAFEBABE', 'UNQ002',  '\\xBBCC');

Target (Snowflake)

スキーマ名:PUBLIC
テーブル名:SAMPLE_TABLE

テーブル構造
PK カラム名
key_icon.png ID NUMBER(38,0)
NAME VARCHAR(16777216)
DESCRIPTION VARCHAR(16777216)
PRICE NUMBER(10,2)
CREATED_AT TIMESTAMP_NTZ(9)
LAST_UPDATED_AT TIMESTAMP_TZ(9)
ACTIVE BOOLEAN
ITEM_WEIGHT FLOAT
START_DATE DATE
START_TIME TIME(9)
CATEGORY VARCHAR(50)
BINARY_DATA BINARY(8388608)
UNIQUE_CODE VARCHAR(10)
IMAGE_DATA BINARY(8388608)
DDL
create or replace TABLE TESTDB.PUBLIC.SAMPLE_TABLE (
	ID NUMBER(38,0) NOT NULL autoincrement start 1 increment 1 noorder,
	NAME VARCHAR(16777216),
	DESCRIPTION VARCHAR(16777216),
	PRICE NUMBER(10,2),
	CREATED_AT TIMESTAMP_NTZ(9),
	LAST_UPDATED_AT TIMESTAMP_TZ(9),
	ACTIVE BOOLEAN,
	ITEM_WEIGHT FLOAT,
	START_DATE DATE,
	START_TIME TIME(9),
	CATEGORY VARCHAR(50),
	BINARY_DATA BINARY(8388608),
	UNIQUE_CODE VARCHAR(10),
	IMAGE_DATA BINARY(8388608),
	primary key (ID)
);
 

処理フロー

image.png

設定

1.SnowflakeへのODBC設定

image.png
Data Source名:Snowflake
参考資料:
https://docs.snowflake.com/ja/developer-guide/odbc/odbc-windows

2.コネクション設定

Source DB、Target DB への接続を設定。

ソースコネクション名 ターゲットコネクション名
POSTGRE - Public
image.png
SNOWFLAKE
image.png
公式資料:
https://ja.sdi.ricct.com/userguide/connectionpostgre/
データタイプは「ODBC」を選択し、DSN名にはODBC設定時のData Source名を入力してください。
公式資料:
https://ja.sdi.ricct.com/userguide/connectionodbc/

設定方法は下記の記事を参照:
https://qiita.com/RiCCT/items/787a41bb54277a3b26c2

3. マッピング設定

3.1 .「新規マッピング」ボタンをクリックしてマッピング設定画面を開きます。

image.png

3.2 . ソースコネクション、テーブル、ターゲットコネクション、テーブルを選択

image.png

No 項目 説明
1 マッピング名 マッピング名を入力、任意の名前設定できます。システムは名前の重複チェックしていないですが、管理上、ユニークの名前の設定をお勧めします。
2 ソースコネクション POSTGRE - Publicを選択
3 ソーステーブル sample_tableを選択
4 コネクションコネクション SNOWFLAKEを選択
5 コネクションテーブル PUBLIC.SAMPLE_TABLE
6 カラム一覧取得 カラム一覧取得ボタンをクリックしてテーブル定義明細取得

3.3 . カラムのマッピングルールを設定

image.png

No 項目 説明
7 ソースカラム ターゲットカラムに対して、ソースデータの対応するカラムを選択します。同じカラムが存在する場合はデフォルトで自動マッピングされます。今回はデフォルト設定のままにします。
ソースカラム名とターゲットカラム名が異なる場合は、対応するソースカラムを選択してください。
8 マッピング対象 データ連携を行うかどうかを選択します。今回は全カラムのデータを連携します。
9 更新方式 Mergeを選択。
更新方式についての詳細説明は下記の資料を参照:
https://ja.sdi.ricct.com/userguide/mappingtarget/

3.4 . テスト実行

マッピング実行 ボタンをクリックして、動作確認します。

image.png

No 項目 説明
10 ステータス 実行成功の場合、マッピングを保存して、設定完了。
エラーが発生した場合、詳細画面でエラー内容を確認した上対応します。
11 詳細アイコン 詳細アイコンをクリックしてLOGの詳細参照できます。

お勧め
マッピング実行前に、ソースとターゲットのテータ参照ボタンをクリックして、データを確認した上実行します。マッピング成功の場合、もう一度ターゲットのデータを確認して、結果は期待通りかどうかを判断します。

マッピング実行前:
image.png

マッピング実行後:
image.png

データが同期されていることを確認できました。

3.5 . 保存

保存 ボタンをクリックして、マッピング設定を保存します。

定期的にデータ連携したい場合、スケジューラーを作成してマッピングを登録します。
スケジューラー設定につきまして、下記のページを参照してください。
https://ja.sdi.ricct.com/userguide/schedule/

以上です。

Simple Data Integrator (SDI) 実践入門

参考資料

SDI日本語公式サイト
SDI English Official Website
SDIマップイング設定

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?