DataWorks の Data Integration は、Snowflake からのデータの読み取りと Snowflake へのデータの書き込みをサポートしています。このトピックでは、Snowflake で利用可能なデータ同期機能について説明します。
制限事項
Snowflake Reader と Writer は、snowflake-jdbc:3.20.0 ドライバーを使用します。ドライバーの機能の詳細については、Snowflake JDBC Driver Release Notes をご参照ください。
サポートされるフィールドタイプ
Snowflake Reader と Snowflake Writer は、数値や文字など、リレーショナルデータベースのほとんどの一般的なデータ型をサポートしています。ただし、一部のデータ型はサポートされていません。ご利用のデータ型が特定のデータベースでサポートされていることを確認する必要があります。
フィールドタイプ | オフライン読み取り (Snowflake Reader) | オフライン書き込み (Snowflake Writer) |
NUMBER | サポート | サポート |
DECIMAL | サポート | サポート |
NUMERIC | サポート | サポート |
INT | サポート | サポート |
INTEGER | サポート | サポート |
BIGINT | サポート | サポート |
SMALLINT | サポート | サポート |
TINYINT | サポート | サポート |
BYTEINT | サポート | サポート |
FLOAT | サポート | サポート |
FLOAT4 | サポート | サポート |
FLOAT8 | サポート | サポート |
DOUBLE | サポート | サポート |
DOUBLE PRECISION | サポート | サポート |
CHAR | サポート | サポート |
VARCHAR | サポート | サポート |
STRING | サポート | サポート |
TEXT | サポート | サポート |
BINARY | サポート | サポート |
VARBINARY | サポート | サポート |
BOOLEAN | サポート | サポート |
DATE | サポート | サポート |
TIME | サポート | サポート |
TIMESTAMP | サポート | サポート |
TIMESTAMP_NTZ | サポート | サポート |
TIMESTAMP_LTZ | サポート | サポート |
TIMESTAMP_TZ | 非サポート | サポート |
OBJECT | 非サポート | 非サポート |
ARRAY | 非サポート | 非サポート |
VARIANT | 非サポート | 非サポート |
GEOGRAPHY | 非サポート | 非サポート |
GEOMETRY | 非サポート | 非サポート |
VECTOR | 非サポート | 非サポート |
FILE | 非サポート | 非サポート |
データソースの作成
データ同期タスクを開発する前に、DataWorks で対応するデータソースを作成する必要があります。手順の詳細については、データソース管理 をご参照ください。設定パラメーターの詳細な説明については、設定ページのツールチップをご参照ください。
データ同期タスクの開発
データ同期タスクを設定するためのエントリーポイントと一般的なプロセスについては、次のガイドをご参照ください。
単一テーブルのオフライン同期タスクの設定
手順の詳細については、コードレス UI で同期タスクを設定する および コードエディタで同期タスクを設定する をご参照ください。
コードエディタのすべてのパラメーターとサンプルスクリプトについては、本トピックの 付録:スクリプトのデモとパラメーターの説明 セクションをご参照ください。
付録:スクリプトのデモとパラメーターの説明
オフラインタスクスクリプトの設定
コードエディタを使用して単一テーブルのオフラインタスクを設定する場合、必要なフォーマットでスクリプトを記述する必要があります。詳細については、コードエディタで同期タスクを設定する をご参照ください。以下のセクションでは、コードエディタでのデータソースのパラメーターについて説明します。
Reader スクリプトのデモ
{
"transform": false,
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "snowflake",
"parameter": {
"schema": "PUBLIC",
"envType": 0,
"datasource": "snowflake_datasource",
"column": [
"ID",
"NAME"
],
"where": "",
"table": "table"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": true
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": false,
"concurrent": 2
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Reader スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | Snowflake データソースの名前。 | はい | なし |
table | データを同期する元のテーブルの名前。 | はい | なし |
schema | 読み取る Snowflake テーブルが存在するスキーマ。 | はい | なし |
column | ソーステーブルから同期する列。JSON 配列を使用してフィールドを記述します。デフォルトでは、["*"] のようにすべての列が使用されます。
| はい | なし |
splitFactor | 分割係数。このパラメーターは、データを同期のために分割するチャンクの数を指定します。複数の同時実行スレッドを設定した場合、データは同時実行数 × splitFactor 個のチャンクに分割されます。たとえば、同時実行数が 5 で splitFactor が 5 の場合、データは 25 (5 × 5) 個のチャンクに分割され、5 つの同時実行スレッドで処理されます。 説明 このパラメーターは 1 から 100 までの値に設定してください。値が大きすぎると、メモリ不足 (OOM) エラーが発生する可能性があります。 | ||
splitPk | Snowflake Reader がデータを抽出する際に、splitPk パラメーターを指定して、指定されたプライマリキー列に基づいてデータをシャーディングできます。これにより、データ同期システムが同時タスクを実行して効率を向上させることができます。
| ||
where | フィルター条件。Snowflake Reader は、指定された column、table、および where パラメーターを組み合わせて SQL 文を作成し、データを抽出します。たとえば、テスト目的で、where 条件を `limit 10` に設定できます。 増分同期の場合、where 条件を
| いいえ | なし |
fetchSize | このパラメーターは、データベースサーバーから各バッチで取得するレコード数を指定します。値を大きくすると、Data Integration とサーバー間のネットワーク対話の回数が減り、データ抽出のパフォーマンスが向上します。 説明 fetchSize の値が 2048 を超えると、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。 | いいえ | 1024 |
Writer スクリプトのデモ
{
"transform": false,
"type": "job",
"version": "2.0",
"steps": [
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType": "snowflake",
"parameter": {
"schema": "PUBLIC",
"envType": 0,
"datasource": "snowflake_datasource",
"column": [
"ID",
"NAME"
],
"table": "TABLE"
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"executeMode": null,
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 2,
"throttle": false
}
},
"order": {
"hops": []
}
}Writer スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | Snowflake データソースの名前。 | はい | なし |
table | データを同期する先のテーブルの名前。 | はい | なし |
schema | 書き込み先の Snowflake テーブルが存在するスキーマ。 | はい | なし |
column | 書き込み先のテーブルの列。列名をコンマ (,) で区切ります。例: | はい | なし |
batchSize | 1 回のバッチで書き込むレコード数。値を大きくすると、Data Integration と Snowflake 間のネットワーク対話が大幅に減少し、全体のスループットが向上します。ただし、値が大きすぎると、Data Integration プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。 | いいえ | 1024 |