DataWorks は、SAP HANA データソースとのデータの読み取りおよび書き込みを行うための SAP HANA Reader と SAP HANA Writer を提供します。このトピックでは、SAP HANA データソースとのデータ同期機能について説明します。
サポートされているバージョン
以下の SAP HANA バージョンがサポートされています。
データ型マッピング
次の表に、SAP HANA Reader がデータ型を変換する際に基づくデータ型マッピングを示します。
カテゴリ | SAP HANA データ型 |
整数 | INT、TINYINT、SMALLINT、MEDIUMINT、および BIGINT |
浮動小数点 | FLOAT、DOUBLE、および DECIMAL |
文字列 | VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT、および LONGTEXT |
日付と時刻 | DATE、DATETIME、TIMESTAMP、TIME、および YEAR |
ブール値 | BIT および BOOLEAN |
バイナリ | TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB、および VARBINARY |
データソースの追加
DataWorks で同期タスクを開発する前に、データソースの追加と管理の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールのパラメータのヒント情報を表示して、パラメータの意味を理解することができます。
データ同期タスクの開発
同期タスクのエントリポイントと設定手順については、以下の設定ガイドを参照してください。
単一テーブルのデータ同期を行うバッチ同期タスクの設定
付録:コードとパラメータ
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合は、統一スクリプト形式の要件に基づいて、スクリプトに関連パラメータを設定する必要があります。詳細については、「コードエディタを使用したバッチ同期タスクの設定」をご参照ください。次の情報は、コードエディタを使用してバッチ同期タスクを設定する際にデータソースに対して設定する必要があるパラメータについて説明しています。
SAP HANA 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;"], // ソーステーブルからデータを読み取るために使用する SQL ステートメント。
"datasource":"", // データソースの名前。
"table":[// ソーステーブルの名前。テーブル名は角かっこ [] で囲む必要があります。
"xxx"
]
}
],
"where":"",// WHERE 句。
"splitPk":"", // シャードキー。
"encoding":"UTF-8"// エンコーディング形式。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容されるダーティデータレコードの最大数。
},
"speed":{
"throttle":true,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効であることを示し、値 true はスロットリングが有効であることを示します。mbps パラメータは、throttle パラメータが true に設定されている場合にのみ有効になります。
"concurrent":1, // 並列スレッドの最大数。
"mbps":"12"// 最大伝送速度。単位:MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
シャーディングされたデータベースの SAP HANA テーブルからデータを読み取る同期タスクの設定
説明 シャーディングされたデータベースの SAP HANA テーブルからデータを読み取る同期タスクを設定する場合、同じスキーマを持つ複数の 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": {
}
}
}
SAP HANA Reader のコードのパラメータ
パラメータ | 説明 |
username | SAP HANA データベースにログオンするために使用するユーザー名。 |
password | SAP HANA データベースにログオンするために使用するパスワード。 |
column | データを読み取りたいカラムの名前。ソーステーブルのすべてのカラムからデータを読み取るには、このパラメータをアスタリスク (*) に設定します。
説明 指定するカラム名にスラッシュ (/) が含まれている場合、エスケープするために \"your_column_name\" の形式でカラム名を指定する必要があります。たとえば、カラム名が /abc/efg の場合、\"/abc/efg\" として指定する必要があります。 |
table | データを読み取りたいテーブルの名前。 |
jdbcUrl | SAP HANA に接続するために使用する JDBC URL。例:jdbc:sap://127.0.0.1:30215?currentschema=TEST。 |
splitPk | SAP HANA Reader がデータを読み取るときにデータシャーディングに使用するフィールド。このパラメータを設定すると、このパラメータの値に基づいてソーステーブルがシャーディングされます。その後、Data Integration は並列スレッドを実行してデータを読み取ります。 splitPk パラメータには、整数データ型のフィールドを指定できます。ソーステーブルに整数データ型のフィールドが含まれていない場合は、このパラメータを空のままにすることができます。 |
SAP HANA Writer のコード
次のコードでは、SAP HANA データベースにデータを書き込む同期タスクが設定されています。
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"saphana",// プラグイン名。
"parameter":{
"postSql":[],// 同期タスクの実行後に実行する SQL ステートメント。
"datasource":"", // データソースの名前。
"column":[// カラムの名前。
"id",
"value"
],
"batchSize":1024,// 一度に書き込むデータレコードの数。
"table":"",// データを書き込みたいテーブルの名前。
"preSql":[
"delete from XXX;" // 同期タスクの実行前に実行する SQL ステートメント。
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{// 許容されるダーティデータレコードの最大数。
"record":"0"
},
"speed":{
"throttle":true,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効であることを示し、値 true はスロットリングが有効であることを示します。mbps パラメータは、throttle パラメータが true に設定されている場合にのみ有効になります。
"concurrent":1, // 並列スレッドの最大数。
"mbps":"12"// 最大伝送速度。単位:MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
SAP HANA Writer のコードのパラメータ
パラメータ | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディタを使用してデータソースを追加できます。 | はい | デフォルト値なし |
table | データを書き込みたいテーブルの名前。 | はい | デフォルト値なし |
column | データを書き込みたいカラムの名前。 "column": ["id", "name", "age"] のように、名前をカンマ (,) で区切ります。 宛先テーブルのすべてのカラムにデータを書き込む場合は、"column":["*"] のように、このパラメータをアスタリスク (*) に設定します。
説明 指定するソースカラム名にスラッシュ (/) が含まれている場合、バックスラッシュ (\) を使用して \"your_column_name\" の形式でカラム名をエスケープする必要があります。たとえば、カラム名が /abc/efg の場合、\"/abc/efg\" としてエスケープする必要があります。 | はい | デフォルト値なし |
preSql | バッチ同期タスクの実行前に実行する SQL ステートメント。コードレス UI では 1 つの SQL ステートメントのみを実行でき、コードエディタでは複数の SQL ステートメントを実行できます。たとえば、このパラメータを古いデータを削除するために使用される次の SQL ステートメントに設定できます。 truncate table tablename
説明 複数の SQL ステートメントを指定した場合、すべてのステートメントが正常に実行されるかどうかは保証されません。 | いいえ | デフォルト値なし |
postSql | 同期タスクの実行後に実行する SQL ステートメント。コードレス UI では 1 つの SQL ステートメントのみを実行でき、コードエディタでは複数の SQL ステートメントを実行できます。たとえば、このパラメータをタイムスタンプを追加するために使用される alter table tablenameadd colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP SQL ステートメントに設定できます。 | いいえ | デフォルト値なし |
batchSize | 一度に書き込むデータレコードの数。ビジネス要件に基づいて、このパラメータを適切な値に設定します。これにより、Data Integration と SAP HANA 間の相互作用が大幅に削減され、スループットが向上します。このパラメータを過度に大きな値に設定すると、データ同期中に OOM エラーが発生する可能性があります。 | いいえ | 1024 |