CData SSIS Components を使用して GMO MakeShop のデータを Snowflake にマイグレーション
Snowflake は、エンタープライズ BI、分析、データ管理、ガバナンスの取り組みで広く利用されている先進的なクラウドデータウェアハウスです。Snowflake は、データ共有、リアルタイムデータ処理、安全なデータストレージなどの機能を提供しており、クラウドデータ統合の一般的な選択肢となっています。
CData SSIS Components は、SQL Server Integration Services を拡張し、さまざまなソースやデスティネーションからデータを簡単にインポート・エクスポートできるようにします。
この記事では、Snowflake へのエクスポート時のデータ型マッピングの考慮事項を確認し、CData SSIS Components for GMO MakeShop と Snowflake を使用してGMO MakeShop のデータを Snowflake にマイグレーションする方法を説明します。
データ型マッピング
| Snowflake スキーマ | CData スキーマ |
|---|---|
|
NUMBER, DECIMAL, NUMERIC, INT, INTEGER, BIGINT, SMALLINT, TINYINT, BYTEINT |
decimal |
|
DOUBLE, FLOAT, FLOAT4, FLOAT8, DOUBLEPRECISION, REAL |
real |
|
VARCHAR, CHAR, STRING, TEXT, VARIANT, OBJECT, ARRAY, GEOGRAPHY |
varchar |
|
BINARY, VARBINARY |
binary |
|
BOOLEAN |
bool |
|
DATE |
date |
|
DATETIME, TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ |
datetime |
|
TIME |
time |
特別な考慮事項
- 大文字小文字の区別: Snowflake はデフォルトで識別子の大文字小文字を厳密に一致させるため、大文字小文字の不一致に起因する問題が発生することがよくあります。これらの問題を解決するには、CData SSIS Components for Snowflake 接続で IgnoreCase プロパティを True に設定します。このプロパティは、Snowflake の QUOTED_IDENTIFIERS_IGNORE_CASE プロパティに直接マッピングされ、Snowflake が識別子を大文字小文字を区別するかどうかを指定します。
-
タイムスタンプ: Snowflake は 3 つのタイムスタンプ型をサポートしています:
- TIMESTAMP_NTZ: このタイムスタンプは、指定された精度で UTC 時刻を格納します。ただし、すべての操作は、TIMEZONE セッションパラメータで制御される現在のセッションのタイムゾーンで実行されます。
- TIMESTAMP_LTZ: このタイムスタンプは、指定された精度で「壁時計」時刻を格納します。すべての操作は、タイムゾーンを考慮せずに実行されます。
- TIMESTAMP_TZ: このタイムスタンプは、関連するタイムゾーンオフセットとともに UTC 時刻を格納します。タイムゾーンが指定されていない場合、セッションのタイムゾーンオフセットが使用されます。
デフォルトでは、CData SSIS Components は手動で設定しない限り、タイムスタンプを TIMESTAMP_NTZ として Snowflake に書き込みます。
前提条件
- Visual Studio 2022
- Visual Studio 2022 用 SQL Server Integration Services Projects 拡張機能
- CData SSIS Components for Snowflake
- CData SSIS Components for GMO MakeShop
プロジェクトの作成とコンポーネントの追加
-
Visual Studio を開き、新しい Integration Services プロジェクトを作成します。
- Control Flow 画面に新しい Data Flow Task を追加し、Data Flow Task を開きます。
-
Data Flow Task に CData GMO MakeShop Source コントロールと CData Snowflake Destination コントロールを追加します。
GMO MakeShop ソースの設定
以下の手順に従って、GMO MakeShop への接続に必要なプロパティを指定します。
-
CData GMO MakeShop Source をダブルクリックしてソースコンポーネントエディタを開き、新しい接続を追加します。
-
CData GMO MakeShop Connection Manager で接続プロパティを設定し、接続をテストして保存します。
GMO MakeShop に接続するには、MembersAccessCode、OrdersAccessCode、ProductsAccessCode、およびShopId が必要です。
GMO MakeShop へのアクセスの設定
MembersAccessCode、OrdersAccessCode、ProductsAccessCode、およびShopId を取得するには、以下の手順に従ってください。
- GMO MakeShop には各API のAccessCode が必要です。
- GMO MakeShop Store Manager にログインし、メニューの「ショップ作成」をクリックします。
- 左ナビゲーションメニューの「外部システム連携」から任意の連携対象設定ををクリックします(メニューに表示されない場合は別途GMO MakeShop にご確認ください)。
- 商品データ連携設定の場合:認証コードの「発行」ボタンをクリックし、ProductsAccessCode を取得します。
- 注文データ連携設定の場合:最初に「注文情報参照」と「注文情報変更」の設定を選択します。選択後、認証コードの「発行」ボタンをクリックし、OrdersAccessCode を取得します。
- 会員データ連携設定の場合:最初に「会員情報の(参照・登録・変更・削除)」の設定を選択します。選択後、認証コードの「発行」ボタンをクリックし、MembersAccessCode を取得します。
- 会員認証連携設定の場合:認証コードの「発行」ボタンをクリックし、ProductsAccessCode を取得します。
GMO MakeShop アカウントの認証
次の接続プロパティを設定して接続します。
- ShopId:接続先のGMO MakeShop Store ID を設定。GMO MakeShop Store ID はログイン用の ID と同じです。
- OrdersAccessCode:「注文データ連携設定」から取得した「認証コード」を設定。このプロパティは Orders テーブルにアクセスする場合に必要です。
- ProductsAccessCode:「商品データ連携設定」から取得した「認証コード」を設定。このプロパティは Products テーブルにアクセスする場合に必要です。
- MembersAccessCode:「会員データ連携設定」から取得した「認証コード」を設定。このプロパティは Members テーブルにアクセスする場合に必要です。
- MemberAuthenticationCode:「会員認証連携設定」から取得した「認証コード」を設定。このプロパティは MemberAuthenticationConfirm を実行する場合に必要です。
- Password:GMO MakeShop Store Manager のログインユーザーのパスワードを指定。このプロパティは ProductCategoryRegistrationOrModification,ProductMemberGroupPriceRegistrationOrModification,ProductOptionRegistrationOrModification,ProductRegistrationOrModification を実行する場合に必要です。
-
接続を保存後、「Table or view」を選択し、Snowflake にエクスポートするテーブルまたはビューを選択して、CData GMO MakeShop Source Editor を閉じます。
Snowflake デスティネーションの設定
GMO MakeShop Source を設定したら、Snowflake 接続を設定してカラムをマッピングします。
-
CData Snowflake Destination をダブルクリックしてデスティネーションコンポーネントエディタを開き、新しい接続を追加します。
-
CData Snowflake Connection Manager で接続プロパティを設定し、接続をテストして保存します。
- コンポーネントは、Snowflake ユーザー認証、フェデレーション認証、SSL クライアント認証をサポートしています。認証するには、User と Password を設定し、AuthScheme プロパティで認証方法を選択します。Snowflake の bundle 2024_08(2024 年 10 月)を使用して作成されたアカウントからは、セキュリティ上の懸念からパスワードベースの認証がサポートされなくなりました。代わりに、OAuth や秘密鍵認証などの代替認証方法を使用してください。
その他の便利な接続プロパティ
- QueryPassthrough: True に設定すると、クエリは Snowflake に直接渡されます。
- ConvertDateTimetoGMT: True に設定すると、コンポーネントはローカルマシンの時刻ではなく、日時値を GMT に変換します。
- IgnoreCase: Snowflake が識別子を大文字小文字を区別するかどうかを指定するセッションパラメータです。デフォルト:false(大文字小文字を区別する)。
- BindingType: DEFAULT と TEXT の 2 種類のバインディングタイプがあります。DEFAULT は、Date 型に DATE、Time 型に TIME、Timestamp_* 型に TIMESTAMP_* のバインディングタイプを使用します。TEXT は、Date、Time、Timestamp_* 型に TEXT のバインディングタイプを使用します。
-
接続を保存後、Use a Table メニューでテーブルを選択し、Action メニューで Insert を選択します。
-
Column Mappings タブで、入力カラムからデスティネーションカラムへのマッピングを設定します。
プロジェクトの実行
これでプロジェクトを実行できます。SSIS Task の実行が完了すると、SQL テーブルのデータが選択したテーブルにエクスポートされます。