SAP HANA データソースを使用すると、SAP HANA からのデータの読み取りと SAP HANA へのデータの書き込みが可能になります。このトピックでは、DataWorks における SAP HANA のデータ同期機能について説明します。
サポートされるバージョン
SAP HANA の以下のバージョンがサポートされています。
DataBase 2.00.048.06.1623425628
DataBase 2.00.055.00.161
制限事項
オフライン同期はビューからのデータ読み取りをサポートしています。
このデータソースは、サーバーレスリソースグループ (推奨) および Data Integration 専用リソースグループ をサポートしています。
サポートされるフィールドタイプ
次の表に、SAP HANA Reader が変換できるデータの型を示します。
型カテゴリ | データソースのデータの型 |
整数 | INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT |
浮動小数点 | FLOAT、DOUBLE、DECIMAL |
文字列 | VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT |
日付と時刻 | DATE、DATETIME、TIMESTAMP、TIME、YEAR |
ブール値 | BIT、BOOL |
バイナリ | TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB、VARBINARY |
表に記載されていないデータの型はサポートされていません。
SAP HANA Reader プラグインは、tinyint(1) を整数として扱います。
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を理解できます。
データ同期タスクの開発
同期タスクの設定のエントリポイントと手順については、以下の設定ガイドをご参照ください。
単一テーブルのオフライン同期タスクの設定
詳細については、「コードレス UI でのタスク設定」および「コードエディタでのタスク設定」をご参照ください。
コードエディタのすべてのパラメーターとスクリプトデモについては、「付録:スクリプトデモとパラメーターの説明」をご参照ください。
付録:スクリプトデモとパラメーターの説明
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプトフォーマット要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでのタスク設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。
Reader スクリプトデモ
単一データベース内の単一テーブルの設定
{ "type":"job", "version":"2.0",// バージョン番号。 "steps":[ { "stepType":"saphana",// プラグイン名。 "parameter":{ "column":[// カラム名。 "id" ], "connection":[ { "querySql":["select a,b from join1 c join join2 d on c.id = d.id;"], // querySql 文を接続内の文字列として記述します。 "datasource":"",// データソース。 "table":[// テーブル名。テーブルが 1 つしかない場合でも、テーブル名は配列形式 [] で記述する必要があります。 "xxx" ] } ], "where":"",// フィルター条件。 "splitPk":"",// 分割キー。 "encoding":"UTF-8"// エンコード形式。 }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// エラーレコード数。 }, "speed":{ "throttle":true,// throttle を false に設定すると、mbps パラメーターは有効にならず、レート制限は適用されません。throttle を true に設定すると、レート制限が適用されます。 "concurrent":1, // 同時実行ジョブ数。 "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。 } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }シャードテーブルの設定
説明シャーディングにより、SAP HANA Reader を使用して複数の SAP HANA テーブルからデータを読み取ることができます。これらのテーブルのスキーマは同じである必要があります。
{ "type": "job", "version": "1.0", "configuration": { "reader": { "plugin": "saphana", "parameter": { "connection": [ { "table": [ "tbl1", "tbl2", "tbl3" ], "datasource": "datasourceName1" }, { "table": [ "tbl4", "tbl5", "tbl6" ], "datasource": "datasourceName2" } ], "singleOrMulti": "multi", "splitPk": "db_id", "column": [ "id", "name", "age" ], "where": "1 < id and id < 100" } }, "writer": { } } }
Reader スクリプトのパラメーター
パラメーター | 説明 |
username | ユーザー名。 |
password | パスワード。 |
column | 同期するフィールドの名前。すべてのカラムを同期するには、アスタリスク (*) を使用します。 説明 SAP HANA Reader のフィールド名にスラッシュ (/) が含まれている場合は、フィールド名を二重引用符で囲み、バックスラッシュ (\) で引用符をエスケープする必要があります。たとえば、フィールド名が /abc/efg の場合、値を \"/abc/efg\" に設定します。 |
table | 同期するテーブルの名前。 |
jdbcUrl | HANA データベースへの接続に使用される Java Database Connectivity (JDBC) URL。例:jdbc:sap://127.0.0.1:30215?currentschema=TEST。 |
splitPk | データ同期の分割キーとして使用される HANA テーブルのフィールド。分割キーは、HANA テーブルを同時に同期するのに役立ちます。 分割キーは、数値の整数フィールドである必要があります。そのようなフィールドが存在しない場合は、このパラメーターを空のままにすることができます。 |
Writer スクリプトデモ
以下のコードは、スクリプト設定の例です。
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"saphana",// プラグイン名。
"parameter":{
"postSql":[],// データがインポートされた後に実行する SQL 文。
"datasource":"",// データソース。
"column":[// カラム名。
"id",
"value"
],
"batchSize":1024,// 1 つのバッチでコミットするレコード数。
"table":"",// テーブル名。
"preSql":[
"delete from XXX;" // データがインポートされる前に実行する SQL 文。
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{// エラーレコード数。
"record":"0"
},
"speed":{
"throttle":true,// throttle を false に設定すると、mbps パラメーターは有効にならず、レート制限は適用されません。throttle を true に設定すると、レート制限が適用されます。
"concurrent":1, // 同時実行ジョブ数。
"mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Writer スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。値は、コードエディタで追加したデータソース名と同じである必要があります。 | はい | なし |
table | 同期するテーブルの名前。 | はい | なし |
column | データを書き込む宛先テーブルのフィールド。フィールドはカンマ (,) で区切ります。例: すべてのカラムに順番にデータを書き込むには、アスタリスク (*) を使用します。例: 説明 ソースフィールド名にスラッシュ (/) が含まれている場合は、名前を二重引用符で囲み、バックスラッシュ (\) でエスケープします。たとえば、フィールド名が /abc/efg の場合は、\"/abc/efg\" を指定します。 | はい | なし |
preSql | データ同期タスクが開始される前に実行される SQL 文。コードレス UI では、1 つの SQL 文しか実行できません。コードエディタでは、複数の SQL 文を実行できます。たとえば、同期前にテーブルから古いデータをクリアするために、次の文を実行できます: 説明 複数の SQL 文を指定した場合、トランザクションの原子性はサポートされません。 | いいえ | なし |
postSql | データ同期タスクが完了した後に実行される SQL 文。コードレス UI では、1 つの SQL 文しか実行できません。コードエディタでは、複数の SQL 文を実行できます。たとえば、タイムスタンプを追加できます: | いいえ | なし |
batchSize | 1 つのバッチでコミットするレコード数。値を大きくすると、データ同期システムとデータソース間のネットワーク対話の回数が大幅に減少し、全体的なスループットが向上します。この値が大きすぎると、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。 | いいえ | 1024 |