オフラインタスク設定をより詳細に制御するために、[コードエディター] を使用できます。コードエディターでは、データ同期用の JSON スクリプトを記述し、DataWorks のスケジューリングパラメーターを使用して、単一のソーステーブルまたはシャーディングされたテーブルからターゲットテーブルに完全データまたは増分データを定期的に同期できます。このトピックでは、コードエditor でのオフライン同期タスクの一般的な設定について説明します。設定はデータソースによって異なります。詳細については、「データソースリスト」の各データソースの設定詳細をご参照ください。
シナリオ
以下のシナリオでコードエディターを使用して同期タスクを設定できます:
データソースがコードレス UI での設定をサポートしていない場合。
説明UI は、データソースがコードレス UI をサポートしているかどうかを示します。

データソースの一部の 設定パラメーター は、コードエディターでのみ使用できます。
コードエディターを使用して、DataWorks UI で作成できないデータソースを設定できます。
準備
必要なソースおよびターゲットデータソースが設定されていること。Data Integration 同期タスクを設定する前に、DataWorks コンソールの [データソース] ページで必要なソースおよびターゲットデータベースを設定する必要があります。詳細については、「データソースリスト」をご参照ください。
説明オフライン同期でサポートされているデータソースとその設定の詳細については、「サポートされているデータソースと同期ソリューション」をご参照ください。
データソースの特徴の詳細については、「データソース設定」をご参照ください。
適切な仕様のリソースグループを購入し、ワークスペースにアタッチします。詳細については、「Data Integration にサーバーレスリソースグループを使用する」および「Data Integration に専用リソースグループを使用する」をご参照ください。
リソースグループとデータソース間のネットワーク接続を確立します。詳細については、「ネットワーク接続を設定する」をご参照ください。
ステップ 1: オフライン同期ノードを作成する
新しいデータ開発
DataWorks コンソールにログインします。ターゲットリージョンに切り替えます。左側のナビゲーションウィンドウで、 を選択します。ドロップダウンリストから目的のワークスペースを選択し、[DataStudio に入る] をクリックします。
ワークフローを作成します。詳細については、「ワークフローを編成する」をご参照ください。
バッチ同期ノードを作成します。次のいずれかの方法を使用できます:
方法 1: ワークフローリストの右上隅にある
アイコンをクリックし、 を選択します。方法 2: ワークフロー名をダブルクリックし、[データ統合] ディレクトリから右側のワークフローエディターに [バッチ同期] ノードをドラッグします。
ノードの基本情報、ソース、およびターゲットを設定します。次に、[確認] をクリックします。
以前のデータ開発
DataWorks コンソールにログインします。ターゲットリージョンに切り替えます。左側のナビゲーションウィンドウで、 をクリックします。ドロップダウンリストから目的のワークスペースを選択し、[データ開発に入る] をクリックします。
ワークフローを作成します。詳細については、「ワークフローを作成する」をご参照ください。
バッチ同期ノードを作成します。次のいずれかの方法を使用できます:
方法 1: ワークフローを展開し、[データ統合] を右クリックして、 を選択します。
方法 2: ワークフロー名をダブルクリックし、[データ統合] ディレクトリから右側のワークフローエディターに [バッチ同期] ノードをドラッグします。
プロンプトに従ってバッチ同期ノードを作成します。
ステップ 2: データソースとリソースグループを設定する
コードレス UI からコードエディターにはどのステップでも切り替えられます。ただし、スクリプトが完全に設定されていることを確認するために、次の手順を実行することをお勧めします:
まず、コードレス UI でデータソースとリソースグループを選択し、ネットワーク接続をテストします。
次に、コードエディターに切り替えます。
システムは、生成された JSON スクリプトにこの情報を自動的に入力します。
または、コードエディターに直接切り替えてから、手動で設定することもできます。これを行うには、JSON コードでデータソースを指定し、右側の [詳細設定] パネルでタスクのリソースグループと必要なリソースを設定します。
リソースグループを作成したのに表示されない場合は、リソースグループがワークスペースにアタッチされているかどうかを確認してください。詳細については、「サーバーレスリソースグループを使用する」および「Data Integration に専用リソースグループを使用する」をご参照ください。
推奨されるリソースクォータの詳細については、「リソースグループのパフォーマンスメトリック - データ統合」をご参照ください。
ステップ 3: コードエディターに切り替えてテンプレートをインポートする
ツールバーで、[スクリプトに変換]
アイコンをクリックします。

スクリプトがまだ設定されていない場合は、ツールバーの [テンプレートをインポート]
アイコンをクリックし、画面の指示に従ってスクリプトテンプレートをインポートします。
ステップ 4: スクリプトを編集して同期タスクを設定する
次のセクションでは、コードエディターの一般的な設定について説明します:
`type` フィールドと `version` フィールドにはデフォルト値があり、変更できません。
プロセッサ関連の設定は設定する必要がないため、スクリプトでは無視できます。

reader と writer の基本情報とフィールドマッピングを設定します。
重要設定はプラグインによって異なります。以下の内容は、一般的な設定の例です。プラグインが特定の設定をサポートしているかどうか、およびその設定方法を確認するには、そのプラグインのドキュメントをご参照ください。詳細については、「データソースリスト」の各データソースの Reader スクリプトデモ および Writer スクリプトデモ セクションをご参照ください。
設定パラメーターを使用して、次の操作を実行できます:
Reader
操作
説明
where (同期範囲の設定)
一部のソースタイプはデータフィルタリングをサポートしています。条件 (
WHERE句、`where` キーワードなし) を指定して、ソースデータをフィルタリングできます。実行時に、タスクは条件を満たすデータのみを同期します。詳細については、「シナリオ: 増分データのバッチ同期タスクを設定する」をご参照ください。増分同期を実行するには、このフィルター条件をスケジューリングパラメーターと組み合わせて動的にすることができます。たとえば、
gmt_create >= '${bizdate}'を使用すると、タスクは実行されるたびに現在の日付の新しいデータのみを同期します。また、スケジューリングプロパティを設定するときに、ここで定義された変数に値を割り当てる必要があります。詳細については、「サポートされているスケジューling パラメーターの形式」をご参照ください。増分同期を設定する方法は、データソース (プラグイン) によって異なります。
フィルター条件を設定しない場合、タスクはデフォルトでテーブルからすべてのデータを同期します。
splitPk (リレーショナルデータベースのシャードキーの設定)
ソースデータ内のデータを分割する基準となるフィールドを定義します。タスクの実行中に、データはこのフィールドに基づいて複数のタスクに分割され、同時バッチデータ読み取りが行われます。
プライマリキーは通常均等に分散されているため、`splitPk` にはテーブルのプライマリキーを使用することをお勧めします。これにより、結果のシャードでデータホットスポットが発生するのを防ぐことができます。
現在、`splitPk` は整数データの分割のみをサポートしています。文字列、浮動小数点数、日付、またはその他のデータ型はサポートしていません。サポートされていない型を指定すると、`splitPk` 機能は無視され、同期には単一のチャンネルが使用されます。
`splitPk` を指定しない場合、またはその値が空の場合、データは単一のチャンネルを介して同期されます。
すべてのプラグインがシャードキーを指定してタスク分割ロジックを設定することをサポートしているわけではありません。上記の情報は参考用です。詳細については、特定のプラグインのドキュメントをご参照ください。詳細については、「サポートされているデータソースと同期ソリューション」をご参照ください。
column (ソースフィールドの定義)
`column` 配列で、同期するソースフィールドを定義します。定数、変数、および関数をカスタムフィールドとして使用して、ターゲットに書き込むことができます。例としては、'123'、'${variable_name}'、'now()' などがあります。
Writer
操作
説明
preSql および postSql (同期前後に実行するステートメントの設定)
一部のデータソースでは、データが書き込まれる前 (同期前) と後 (同期後) にターゲットで SQL 文を実行できます。
たとえば、MySQL Writer の [インポート前ステートメント] (preSql) 設定項目で、
truncate table tablenameコマンドを設定して、同期タスクが開始される前にテーブルから既存のデータをクリアできます。writeMode (競合を処理するための書き込みモードの定義)
このパラメーターは、パスやプライマリキーの競合などの競合が発生した場合に、ターゲットにデータを書き込む方法を定義します。この設定は、データソースと writer プラグインによって異なります。特定の writer プラグインの要件に基づいてこのパラメーターを設定する必要があります。
チャンネル制御。
setting セクションで、同時実行数、同期レート、ダーティデータ処理などのパフォーマンス設定を構成できます。
パラメーター
説明
executeMode (分散処理能力)
現在のタスクで分散モードを有効にするかどうかを制御します。
`distribute`: 分散処理を有効にします。分散実行モードでは、タスクをシャードに分割し、複数の実行ノードに分散して同時実行できます。これにより、同期速度を実行クラスターのサイズに合わせて水平にスケーリングでき、単一ノードのボトルネックを解消できます。
`null`: 分散処理を無効にします。設定された同時実行数は単一のマシン上のプロセスに限定され、複数のマシンの計算能力を活用することはできません。
重要マシンが 1 台しかない Data Integration 専用リソースグループを使用している場合、複数マシンのリソースを活用できないため、分散モードの使用は推奨されません。
単一のマシンで速度要件を満たせる場合は、タスクの実行を簡素化するために単一ノードモードを使用することをお勧めします。
分散処理を有効にするには、8 以上の同時実行数が必要です。
一部のデータソースは分散実行モードをサポートしています。詳細については、特定のプラグインのドキュメントをご参照ください。
分散処理を有効にすると、より多くのリソースが消費されます。実行時にメモリ不足 (OOM) エラーが発生した場合は、このスイッチを無効にしてみてください。
concurrent (タスクの最大同時実行数)
現在のタスクがソースから読み取りまたはターゲットに並行して書き込むための最大スレッド数を定義します。
説明リソース仕様などの要因により、実行時の実際の同時実行数は設定値以下になる場合があります。テストリソースグループの料金は、実際の同時実行数に基づきます。詳細については、「パフォーマンスメトリック」をご参照ください。
throttle (同期レート)
同期レートを制御します。
`true`: スロットルを有効にします。これにより、抽出速度が速すぎてソースデータベースに過度の圧力がかかるのを防ぎ、ソースデータベースを保護します。最小スロットルレートは 1 MB/s です。
説明`throttle` が `true` に設定されている場合は、mbps (同期レート) パラメーターも設定する必要があります。
`false`: スロットルを無効にします。スロットルがない場合、タスクは、設定された同時実行数の制限内で、現在のハードウェア環境で利用可能な最大転送パフォーマンスを使用します。
説明トラフィックメジャーは Data Integration 自体のメトリックであり、実際のネットワークインターフェイスカード (NIC) トラフィックを表すものではありません。通常、NIC トラフィックはチャンネルトラフィックの 1〜2 倍です。実際のトラフィックの増加は、データストレージシステムの転送シリアル化に依存します。
errorLimit (エラーレコード制御)
ダーティデータのしきい値とタスクへの影響を定義します。
重要ダーティデータが多すぎると、タスク全体の同期速度に影響を与える可能性があります。
設定されていない場合、ダーティデータはデフォルトで許可されます。これは、ダーティデータが生成されてもタスクが実行され続けることを意味します。
0 に設定した場合、ダーティデータは許可されません。同期中にダーティデータが生成されると、タスクは失敗します。
ダーティデータを許可し、しきい値を設定した場合:
ダーティデータの量がしきい値内である場合、同期タスクはダーティデータを無視し (ターゲットには書き込まれません)、正常に実行されます。
ダーティデータの量がしきい値を超えると、同期タスクは失敗します。
説明ダーティデータとは、ビジネスにとって意味がなく、フォーマットが無効であるか、同期中に問題を引き起こすデータのことです。レコードが宛先データソースに書き込まれているときに例外が発生した場合、そのレコードはダーティデータと見なされます。したがって、書き込みに失敗したデータはすべてダーティデータとして分類されます。
たとえば、ソースの VARCHAR 型のデータが INT 型の宛先列に書き込まれる場合、無効な変換が原因でデータを宛先に正常に書き込むことができず、ダーティデータが発生します。同期タスクを設定するときに、ダーティデータを許可するかどうかを制御し、しきい値を設定できます。ダーティデータレコードの数が指定されたしきい値を超えると、タスクは失敗します。
説明上記の設定に加えて、全体の同期速度は、ソースデータソースのパフォーマンスやネットワーク環境などの要因にも影響されます。同期速度を最適化する方法の詳細については、「オフライン同期タスクを最適化する」をご参照ください。
ステップ 5: スケジューリングプロパティを設定する
定期的にスケジュールされるバッチ同期タスクの場合、そのスケジューリングプロパティを設定する必要があります。ノードの編集ページで、右側の [スケジューリング設定] をクリックして設定します。
同期タスクのスケジューリングパラメーター、スケジューリングポリシー、スケジューリング時間、およびスケジューリング依存関係を設定する必要があります。設定プロセスは他のデータ開発ノードと同じであり、このトピックでは説明しません。
新しいデータ開発でのスケジューリング設定については、「ノードスケジューリング (新バージョン)」をご参照ください。
以前のデータ開発でのスケジューリング設定については、「ノードスケジューリング設定 (旧バージョン)」をご参照ください。
スケジューリングパラメーターの使用方法の詳細については、「Data Integration におけるスケジューリングパラメーターの一般的なシナリオ」をご参照ください。
ステップ 6: タスクを送信して公開する
テストパラメーターを設定します。
バッチ同期タスク設定ページで、右側の [テスト設定] をクリックし、次のパラメーターを設定してテストを実行できます。
設定項目
説明
リソースグループ
データソースに接続されているリソースグループを選択します。
スクリプトパラメーター
データ同期タスクのプレースホルダーパラメーターに値を割り当てます。たとえば、タスクが
${bizdate}パラメーターで設定されている場合、yyyymmdd形式で日付パラメーターを設定する必要があります。タスクを実行します。
ツールバーの
[実行] アイコンをクリックして、データ開発でタスクを実行してテストします。タスクの実行後、ターゲットテーブルタイプのノードを作成してターゲットテーブルデータをクエリし、同期されたデータが期待どおりかどうかを確認できます。タスクを公開します。
タスクが正常に実行された後、定期的にスケジュールする必要がある場合は、ノード設定ページのツールバーにある
アイコンをクリックして、タスクを本番環境に公開します。タスクの公開方法の詳細については、「タスクを公開する」をご参照ください。
次のステップ
タスクが本番環境に公開された後、本番環境のオペレーションセンターに移動して、スケジュールされたタスクを表示できます。バッチ同期タスクの実行と管理、ステータスの監視、およびリソースグループでの O&M の実行方法の詳細については、「バッチ同期タスクの O&M」をご参照ください。