コードエディタウィジェットを使用すると、システムコンポーネントではサポートされていない項目を構成し、特定のビジネスニーズに対応できます。
手順
-
Dataphin ホームページで、トップメニューバーから [開発] > [Data Integration] を選択します。
-
統合ページで、トップメニューバーから [プロジェクト] を選択します(開発-本番モードでは環境の選択が必要です)。
左側のナビゲーションウィンドウで、[バッチパイプライン] をクリックします。次に、[バッチパイプライン] リストで、開発したい [オフラインパイプライン] をクリックして設定ページを開きます。
-
ページの右上隅にある [コンポーネントライブラリ] アイコンをクリックして、[コンポーネントライブラリ] パネルを開きます。
-
[コンポーネントライブラリ] パネルの左側のナビゲーションウィンドウで、[入力] を選択します。右側のリストで [コードエディタ入力] ウィジェットを見つけて、キャンバスにドラッグします。
-
コードエディタ入力ウィジェットカードの
アイコンをクリックして、[スクリプトモード] [入力設定] ダイアログボックスを開きます。 [スクリプトモード入力構成] ダイアログボックスで、パラメーターを構成します。
パラメーター
説明
[ステップ名]
これは、コードエディタ入力ウィジェットの名前です。Dataphin はステップ名を自動的に生成しますが、ビジネスシナリオに応じて変更することもできます。命名規則は次のとおりです。
中国語の文字、英字、アンダースコア(_)、および数字のみを含めることができます。
64 文字を超えることはできません。
データソースタイプ
データソースの種類を選択します。
データソース
対応するデータソースインスタンスを選択します。
同期設定ファイルの生成
[同期設定ファイルの生成] をクリックします。選択したデータソースの種類に基づいて、システムは右側の [設定ファイル] 領域に設定 JSON テンプレートを自動的に生成します。実際のビジネスニーズに応じて、設定項目を削除または変更できます。
設定ファイル
アイコンをクリックしてエディターを展開し、全画面で設定ファイルを表示または記述します。テンプレート設定は、主に 3 つの部分で構成されます。
tableとtables: コンポーネントの単一入力テーブルと複数入力テーブル。複数入力テーブルのキーは `tables` です。単一入力テーブルのキーは `table` です。コンポーネントにテーブルが含まれていない場合、このパラメーターは使用できません。column: 入力テーブルの入力フィールド。フィールドには、少なくともnameとtypeが必要です。parameter: 同期設定に関連するパラメーター。設定はデータソースによって異なります。コンポーネントのパラメーターについては、特定のコンポーネントのドキュメントをご参照ください。
{ "table":"tableName",// "tables":["tableName"] "column":[{ "name":"", "type":"" }], "parameter":{} }[確認] をクリックして、[スクリプトモード] 入力ウィジェットのプロパティ構成を確定します。
ベストプラクティス
コードエディタウィジェットは、設定 JSON を使用してオフライン統合タスクを設定します。主に次のようなシナリオで使用されます。
-
グラフィカルインターフェイスでは設定できないコンポーネントの高度な項目の設定。
-
エラーや停止時など、メタデータのサポートが利用できない場合に、テーブルとフィールドを手動で設定する。
-
テーブル名とフィールド名の特別なキーワードに関する問題への対処。
-
データベース関数の活用。
-
シャーディング戦略の実装。
-
クエリ SQL 文の直接実行。
以下では、同期 MySQL 複数テーブル JOIN 結果データを使用する方法を例として説明します。他のシナリオも同様に設定できます。
1 つ目:設定の概要
[スクリプトモード入力設定] ダイアログボックスで、パラメータを設定します。
パラメータ | 説明 |
ステップ名 | コードエディタ入力ウィジェットの名前を入力します。 |
データソースの種類 | MySQL を選択します。 |
データソース | 対応するデータソースインスタンスを選択します。 |
同期設定ファイルの生成 | [同期設定ファイルの生成] をクリックします。選択したデータソースの種類に基づいて、システムは右側の [設定ファイル] 領域に設定 JSON テンプレートを自動的に生成します。実際のビジネスニーズに応じて、設定項目を削除または変更できます。 |
設定ファイル | テンプレート設定は、主に次の 3 つの部分で構成されます。
|
2 つ目:ウィジェットの使用法
ウィジェットの使用法は、以下の例に示すように、シナリオによって異なります。
クエリ SQL の使用
たとえば、複数テーブル JOIN の結果データやその他のカスタム SQL クエリの結果データを同期するには、設定ファイルの内容は次のとおりです。
{
"table": "sff_id_name",
"parameter": {
"connection": [
{
"querySql": [
"select a.id, b.name from sff_id_name a join sff_id_name_1 b on a.id = b.id"
]
}
]
},
"column": [
{
"name": "id",
"type": "Long"
},
{
"name": "name",
"type": "String"
}
]
}複雑な SQL 文の場合は、querySql 設定項目を使用します。この項目は、同じ構造を持つ複数の SELECT 文をサポートする文字列配列であり、connection 内にネストする必要があります。複数の connection 項目を使用して、複数のデータベースに接続できます。
シャーディング
シャーディングでは、テーブル構造の一貫性を維持しながら、複数のデータベースとテーブルにデータを分散します。
-
querySql の使用
{ "table": "sff_id_name", "parameter": { "connection": [ { "querySql": [ "select a.id, b.name from sff_id_name a join sff_id_name_1 b on a.id = b.id" ] }, { "jdbcUrl": [ "jdbc:mysql://ip:3306/dataphin" ], "querySql": [ "select id,name from sff_id_name" ] } ] }, "column": [ { "name": "id", "type": "Long" }, { "name": "name", "type": "String" } ] } -
テーブル名を直接設定する
{ "table": "sff_id_name1", "parameter": { "connection": [ { "table": [ "sff_id_name1","sff_id_name2" ] }, { "jdbcUrl": [ "jdbc:mysql://xxx:3306/dataphin1" ], "table": [ "sff_id_name3","sff_id_name4" ] }, { "jdbcUrl": [ "jdbc:mysql://xxx:3306/dataphin2" ], "table": [ "sff_id_name5","sff_id_name6" ] } ] }, "column": [ { "name": "id", "type": "Long" }, { "name": "name", "type": "String" } ] }
関数の使用
MySQL の upper 関数など、データベースがサポートする関数を直接使用できます。
{
"tables":[
"sff_id_name_2"
],
"parameter":{
"where":"id>0",
"splitPk":"id"
},
"column":[
{
"name":"id",
"type":"Long"
},
{
"name":"upper(name)",
"type":"String"
}
]
}キーワード
MySQL では、キーワードを識別するためにバックティック (``) を使用します。たとえば、キーワードが id の場合、`id` を使用できます。
{
"tables":[
"sff_id_name_2"
],
"parameter":{
"where":"id>0",
"splitPk":"id"
},
"column":[
{
"name":"`id`",
"type":"Long"
},
{
"name":"upper(name)",
"type":"String"
}
]
}