Snowflakeをデータパイプラインソースとして構成する
Snowflakeをデータパイプラインソースとして設定し、テーブルレコードを抽出して宛先に同期します。
このガイドを使用して、コネクションの設定、パイプラインの設定、オブジェクトの追加、同期動作の確認、および既知の制限事項の理解を行います。
サポートされている機能
Snowflakeをパイプラインソースとして使用する場合、次の機能がサポートされます。
- ライブスキーマ検出: Workatoは静的カタログからではなく、クエリ時に接続済みのSnowflakeデータベースに対して直接テーブルと列を検出します。 詳細については、サポートされているオブジェクトを参照してください。
- フル同期と増分同期: テーブルでサポートされている内容に基づいて、オブジェクトごとにフル同期、またはカーソル列や変更追跡による増分同期を選択します。 詳細については、同期モードを参照してください。
- 論理削除の追跡: 変更追跡別を使用する増分同期の継続実行では、合成
_workato_is_deletedフィールドを通じて削除された行が報告されます。 詳細については、合成列を参照してください。 - オブジェクトレベルのデータフィルタリング: 必要に応じて、データ条件を使用してオブジェクトで同期する行を制限します。 増分カーソル境界を計算するときにも同じ条件が適用されるため、カーソルはフィルタリングされた行と同期された状態に保たれます。
- スキーマドリフトの検出と処理: 新しいフィールドを自動同期でスキーマの変更を自動的に検出して適用するか、新しいフィールドをブロックでスキーマを固定します。
- 構成可能な同期頻度: 時間ベースの間隔またはカスタムcron式で同期をスケジュールします。
前提条件
Snowflakeをデータパイプラインソースとして接続する前に、次の要件を満たしてください。
- 同期する予定のテーブルを含むデータベース、ウェアハウス、およびスキーマにアクセスできるSnowflakeアカウント
- 同期する予定のテーブルに対する
SELECT権限を持つSnowflakeロール - サポートされている認証方法: OAuth 2.0、キーペア認証、またはユーザー名/パスワード。 詳細については、サポートされているコネクションタイプを参照してください。
- 同期する各テーブルは、宣言済みの主キーを持つベーステーブルである必要があります。 詳細については、制限事項を参照してください。
NETWORK POLICIES
SnowflakeインスタンスがIPアドレスでアクセスを制限している場合は、接続する前にWorkato IPアドレスを許可リストに登録する必要があります。
サポートされるコネクションタイプ
Snowflakeデータパイプラインは、次の3つの認証方法をサポートしています。
- OAuth 2.0: Snowflakeで作成するカスタムインテグレーションのクライアントIDとクライアントシークレットが必要です。 設定手順については、OAuth 2.0認証でSnowflakeに接続するを参照してください。
- キーペア認証: Snowflakeのユーザー名、PKCS#8形式の秘密鍵、および鍵が暗号化されている場合は秘密鍵パスフレーズが必要です。 設定手順については、キーペア認証でSnowflakeに接続するを参照してください。
- ユーザー名/パスワード: Snowflakeのユーザー名とパスワードが必要です。
SNOWFLAKEユーザー名/パスワード認証の廃止
Snowflakeは、2026年10月までに単一要素パスワード認証を廃止する予定です。 Workatoでは、この日付までに既存のユーザー名/パスワードコネクションをOAuth 2.0またはキーペア認証に移行することを推奨しています。 詳細については、Snowflakeの公式廃止告知を参照してください。
Snowflakeへの接続
Snowflakeに接続するには、次の手順を実行します:
Snowflakeへの接続
作成 > コネクションを選択するか、Cを2回押します。
新規コネクションページでSnowflakeを検索して選択します。
コネクション名フィールドにコネクションの名前を入力します。
Snowflakeコネクション設定
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
サポートされているいずれかの形式で、Snowflakeインスタンスのアカウント識別子を入力します。
- アカウント名:
https://{orgname}-{account_name} - コネクション名:
https://{orgname}-{connectionname} - アカウントロケーター:
https://{accountlocator}.{region}.{cloud}
詳細については、Snowflakeのアカウントへの接続ガイドを参照してください。
このコネクションのコンピューティングリソースを定義するには、ウェアハウス名を入力します。 詳細については、ウェアハウスに関する考慮事項セクションを参照してください。
同期する予定のテーブルを含むSnowflakeデータベースのデータベース名を入力します。
認証タイプを選択します:
- OAuth 2.0: クライアントIDとクライアントシークレットが必要です。
- キーペア認証: Snowflakeのユーザー名、PKCS#8形式の秘密鍵、および鍵が暗号化されている場合は秘密鍵パスフレーズが必要です。
- ユーザー名/パスワード: ユーザー名とパスワードが必要です。
方法ごとの設定リンクについては、サポートされているコネクションタイプを参照してください。
任意です。 認証に使用するロールを入力します。 このロールは、すでにユーザーに割り当てられている必要があります。 このフィールドを空白のままにすると、Snowflakeはユーザーのデフォルトロールを使用します。
選択したロールによって、Workatoが検出できるテーブルが決まります。 別のロールでは、表示できるテーブルのセットが異なる場合があります。
任意です。 同期する予定のテーブルを含むスキーマを入力します。 このフィールドを空白のままにすると、Snowflakeはpublicスキーマを使用します。
任意です。 タイムスタンプのタイムゾーン処理を正確に行うには、改善された日時処理を使用(推奨)をはいに設定します。
任意です。 タイムゾーンが割り当てられていないタイムスタンプに適用するデータベースのタイムゾーンを定義します。
接続を選択して、コネクションを検証して保存します。
パイプラインの設定
Snowflakeをデータパイプラインソースとして構成するには、次の手順を実行します。
作成 > データパイプラインを選択します。
データパイプライン名フィールドにデータパイプラインの名前を入力します。
データパイプライン設定
ロケーションドロップダウンメニューを使用して、データパイプラインを保存するプロジェクトを選択します。
ビルドを開始をクリックします。
ソースアプリから新規/更新済みレコードを抽出トリガーをクリックします。 このトリガーは、パイプラインがSnowflakeからデータを取得する方法を定義します。
ソースアプリから新規/更新済みレコードを抽出トリガーを設定
接続済みソースアプリドロップダウンメニューを使用してSnowflakeを選択します。
このパイプラインに使用するSnowflakeコネクションを選択します。 または、+ 新規コネクションをクリックして新しいコネクションを作成します。
Snowflakeコネクションの選択
オブジェクトを追加をクリックして、新しいオブジェクトを追加パネルを開きます。
新規オブジェクトを追加パネル
名前で検索フィールドに3文字以上入力し、結果から同期する予定のオブジェクトを選択して、追加をクリックします。
Snowflakeオブジェクトを選択
各結果は[SCHEMA] label (table_name)として表示されます。 ラベルは、設定されている場合はテーブルのコメント、設定されていない場合はテーブル名で、その後に括弧内の未加工のテーブル名が続きます。
SEARCH ALSO MATCHES TABLE COMMENTS
名前で検索フィールドは、テーブル名だけでなくテーブルのコメントにも一致し、最大100件の一致するテーブルを返します。 宣言済みの主キーを持つベーステーブルのみがこのリストに表示されます。 詳細については、検索でオブジェクトが見つからないを参照してください。
選択した各オブジェクトのスキーマを確認してカスタマイズします。 オブジェクトを選択すると、パイプラインはそのスキーマを自動的に取得し、宛先がソースと一致するようにします。
任意のオブジェクトを展開して、そのフィールドを表示します。 使用可能なすべてのデータを抽出するにはすべてのフィールドを選択したままにし、データ抽出とスキーマレプリケーションから除外するには特定のフィールドの選択を解除します。
オブジェクトの同期設定を構成するには、オブジェクトの横にある歯車アイコンをクリックします。
同期モードドロップダウンメニューを使用して、フル同期または増分を選択します。 Workatoは、テーブルでカーソルフィールドを検出しない場合、デフォルトでフル同期を使用します。
同期モードが増分に設定されている場合は、増分同期タイプドロップダウンメニューを使用して増分メカニズムを選択します。
- カーソル列別: テーブルに
DATE、TIME、またはタイムスタンプ列がある場合に使用できます。 増分同期列ドロップダウンメニューを使用して列を選択します。 フル同期にフォールバックするには、このフィールドを空白のままにします。 - 変更追跡別: テーブルでSnowflakeの
CHANGE_TRACKINGが有効になっている場合に使用できます。
テーブルがサポートしていない場合、増分同期タイプは使用できません。 詳細については、同期モードを参照してください。
任意です。 このオブジェクトで同期するレコードをフィルタリングするには、WHEREキーワードを除いたSQL条件をWHERE句フィールドに入力します。 詳細については、オブジェクトレベルのデータフィルタリングを参照してください。
TRUSTED CONFIGURATION ONLY
Workatoは、この条件を生成されたクエリに直接挿入します。 このフィールドでは、信頼できるパイプライン所有の値のみを使用してください。
任意です。 オブジェクトを展開し、各フィールドの処理方法を選択して、フィールドレベルのデータ保護を設定します。
- そのまま複製: ソースのデータ値が宛先に同一に複製されます。
- ハッシュ: 宛先に同期する前に、フィールド内の機密データ値をハッシュ化します。
さらにオブジェクトを追加するには、もう一度オブジェクトを追加をクリックします。 追加のSnowflakeオブジェクトをパイプラインに含めるには、この手順を繰り返します。
スキーマ変更の処理方法を選択ドロップダウンメニューを使用して、スキーマドリフトの処理オプションを選択します。
- 新しいフィールドを自動同期: ソースに追加された新しいフィールドを自動的に検出して同期します。
- 新しいフィールドをブロック: パイプラインの開始後、スキーマを固定します。 新しいフィールドは手動で追加する必要があります。
頻度フィールドで、パイプラインがSnowflakeから宛先にデータを同期する頻度を構成します。 標準の時間ベースのスケジュールを選択するか、カスタムcron式を定義します。
サポートされるオブジェクト
Snowflakeデータパイプラインは、一時テーブルを含む、接続済みデータベース内のベーステーブルからデータを同期します。 Workatoは、静的カタログからではなく、オブジェクトを追加を選択したときに接続済みデータベースに対してライブでテーブルを検出するため、使用可能なオブジェクトはコネクションで使用されるロールによって異なります。
オブジェクト検出に表示されるには、テーブルが次の両方の条件を満たす必要があります。
- ベーステーブルであること。 ビューと動的テーブルはサポートされていません。
- 宣言済みの主キーがあること。
複合主キーがサポートされています。また、数字で始まる名前、スペースを含む名前、大文字と小文字が混在する名前、非ASCIIのテーブル名や列名など、引用符で囲む必要があるSnowflake識別子もサポートされています。
同期モード
Snowflakeデータパイプラインは、オブジェクトごとに構成される2つの同期モードをサポートしています: フル同期と増分同期。 増分同期を選択する場合は、テーブルでサポートされている内容に基づいて増分同期タイプも選択します。 正確なフィールドについては、パイプラインを構成するの手順を参照してください。
フル同期
フル同期では、パイプラインの実行ごとにソーステーブルからすべての行が読み取られ、宛先テーブルが置き換えられます。 使用可能なカーソル列または変更追跡を公開しないテーブルには、フル同期を使用します。
増分同期
増分同期では、最後に成功した実行以降に変更されたレコードのみを抽出します。 Workatoは2つの増分同期タイプをサポートしています。
- カーソル列別: テーブルが
DATE、TIME、またはタイムスタンプ列を公開している場合に使用できます。 Workatoは、各実行の上限カーソル境界としてその列の最大値を読み取り、前回実行のカーソルと新しいカーソルの間の行のみを抽出します。 初回実行で行が返されない場合でも、Workatoはカーソル境界を記録するため、後続の実行でその空の同期後に挿入された行を取得できます。 - 変更追跡別: テーブルでSnowflakeの
CHANGE_TRACKINGが有効になっている場合に使用できます。 WorkatoはSnowflakeの変更追跡を使用して、前回成功した実行以降に挿入、更新、削除された行を検出します。 削除された行は、初回同期後の最初の継続実行から、合成_workato_is_deletedフィールドを通じて報告されます。 詳細については、合成列を参照してください。
いずれかの増分同期タイプを使用するオブジェクトの初回実行について、初回開始時、このパイプラインは次の時点からレコードを取得するフィールドで開始日を設定できます。 変更追跡別を使用するオブジェクトで、その日付がSnowflakeの変更追跡保持期間外にある場合、Workatoは代わりにテーブルの作成時刻または保持期間の開始時刻のうち遅い方を使用します。
オブジェクトレベルのデータフィルタリング
必要に応じて、オブジェクトで同期する行を制限するには、WHEREキーワードを除いたSQL条件をWHERE句フィールドに入力します。 Workatoは、増分カーソル境界を計算するときに同じ条件を適用するため、カーソルは常にフィルタリングされたデータセットと一致します。
TRUSTED CONFIGURATION ONLY
Workatoは、この条件を生成されたクエリに直接挿入します。 このフィールドでは、信頼できるパイプライン所有の値のみを使用してください。
削除追跡
削除追跡は、オブジェクトに対して選択した同期モードと増分同期タイプによって異なります。
- フル同期:
Yes (destination-inferred). Workatoは、各実行の完全なスナップショットを前回のスナップショットと比較し、ソースに表示されなくなった行にフラグを付けます。 削除はリアルタイムではなく、次回のフル同期で検出されます。 - 増分同期、カーソル列別:
No. 増分実行では、前回のカーソル境界以降に変更された行のみが読み取られ、削除は検出されません。 - 増分同期、変更追跡別:
Yes (soft). 削除された行は、初回同期後の最初の継続実行から、合成_workato_is_deletedフィールドを通じて報告されます。 詳細については、合成列を参照してください。
スキーマとデータ型の処理
サポートされていないデータ型
SnowflakeのVARIANT、OBJECT、ARRAY、GEOGRAPHY、およびGEOMETRYフィールドは文字列値として同期されます。 その他の認識されないSnowflake型も文字列として同期されます。
BINARYおよびVARBINARYフィールドはサポートされていません。 Workatoはそれらをオブジェクトのスキーマから削除し、宛先には同期されません。
タイムスタンプ精度
Workatoは、タイムスタンプ値を秒単位の精度で同期します。 Snowflakeタイムスタンプのサブ秒(ナノ秒)精度は保持されません。
合成列
Workatoは、変更追跡による増分同期を使用するオブジェクトについて、宛先テーブルに次の合成列を追加します。
| 列 | タイプ | 目的 |
|---|---|---|
_workato_is_deleted | ブール値 | Snowflakeの変更追跡データに基づいて、行を削除済みとしてマークします。 変更追跡による増分同期の継続実行でのみ入力されます。 |
制限事項
Snowflakeをデータパイプラインソースとして使用する場合、次の制限が適用されます。
検索でオブジェクトが見つからない
新規オブジェクトを追加パネルで検索してもテーブルが表示されない場合は、次を確認してください。
- 宣言済みの主キーがない。 Workatoは主キーを持つベーステーブルのみを検出します。 主キーのないテーブルは、正確な名前で検索しても完全に除外されます。 テーブルを使用可能にするには、Snowflakeでテーブルに主キーを追加します。
- 入力した文字数が3文字未満。 名前で検索フィールドでは、結果が返される前に少なくとも3文字が必要です。
- 検索は名前またはコメントのみに一致。 Workatoは、フィールドのラベルが名前で検索であっても、検索テキストをテーブル名またはテーブルコメントと照合します。 より短い、または異なる部分文字列で検索してみてください。
- 100件を超えるテーブルが一致。 Workatoは、検索ごとに一致するテーブルを最大100件返し、スキーマとテーブル名で並べ替えます。 探しているテーブルが最初の100件の結果に含まれていない場合は、検索テキストを絞り込んでください。
ビューと動的テーブルはサポートされていません
Workatoは、一時テーブルを含むベーステーブルのみを検出します。 ビューと動的テーブルはサポートされておらず、オブジェクト検出に表示されません。
変更追跡保持期間
変更追跡による増分同期は、SnowflakeのCHANGE_TRACKING保持期間に依存します。 保存されたカーソルがその期間外にある場合、同期は失敗し、再開するにはオブジェクトでフル同期を実行する必要があります。
バイナリフィールドは同期されません
BINARYおよびVARBINARYフィールドはオブジェクトのスキーマから削除され、宛先には同期されません。 詳細については、サポートされていないデータ型を参照してください。
最終更新日: