CData SSIS Components を使用して Bullhorn CRM のデータを Snowflake にマイグレーション
Snowflake は、エンタープライズ BI、分析、データ管理、ガバナンスの取り組みで広く利用されている先進的なクラウドデータウェアハウスです。Snowflake は、データ共有、リアルタイムデータ処理、安全なデータストレージなどの機能を提供しており、クラウドデータ統合の一般的な選択肢となっています。
CData SSIS Components は、SQL Server Integration Services を拡張し、さまざまなソースやデスティネーションからデータを簡単にインポート・エクスポートできるようにします。
この記事では、Snowflake へのエクスポート時のデータ型マッピングの考慮事項を確認し、CData SSIS Components for Bullhorn CRM と Snowflake を使用してBullhorn CRM のデータを 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 Bullhorn CRM
プロジェクトの作成とコンポーネントの追加
-
Visual Studio を開き、新しい Integration Services プロジェクトを作成します。
- Control Flow 画面に新しい Data Flow Task を追加し、Data Flow Task を開きます。
-
Data Flow Task に CData Bullhorn CRM Source コントロールと CData Snowflake Destination コントロールを追加します。
Bullhorn CRM ソースの設定
以下の手順に従って、Bullhorn CRM への接続に必要なプロパティを指定します。
-
CData Bullhorn CRM Source をダブルクリックしてソースコンポーネントエディタを開き、新しい接続を追加します。
-
CData Bullhorn CRM Connection Manager で接続プロパティを設定し、接続をテストして保存します。
Bullhorn CRM 接続プロパティの取得・設定方法
Bullhorn CRM に接続するには、Bullhorn CRM アカウントの資格情報を入力します。また、DataCenterCode プロパティをデータセンターに対応するデータセンターコードに設定してください。詳しくは、こちら を参照してください。
CLS2、CLS21 などのコードはクラスタID で、ログインした際のブラウザのURL(アドレスバー)に含まれます。
例えば、
https://cls21.bullhornstaffing.com/BullhornSTAFFING/MainFrame.jsp?#no-baこちらのURL は、ログインしたユーザーがCLS21 クラスタに存在することを示しています。
ちなみに、コールバックURL の末尾に"/" を含む値、例えば http://localhost:33333/ を指定する場合は、アプリケーション設定で指定したコールバックURL と厳密に同じ値を指定する必要があります。このパラメータの文字が一致しない場合、エラーとなります。
Bullhorn CRM への認証(OAuth)
Bullhorn CRM ではOAuth 2.0 認証標準を利用できます。 OAuth を使用して認証するには、すべてのシナリオでカスタムOAuth アプリケーションを作成して設定する必要があります。詳しい認証方法については、ヘルプドキュメントの「OAuth」セクションを参照してください。
-
接続を保存後、「Table or view」を選択し、Snowflake にエクスポートするテーブルまたはビューを選択して、CData Bullhorn CRM Source Editor を閉じます。
Snowflake デスティネーションの設定
Bullhorn CRM 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 テーブルのデータが選択したテーブルにエクスポートされます。