すべてのプロダクト
Search
ドキュメントセンター

DataWorks:SAP HANA データソース

最終更新日:Jan 16, 2025

DataWorks は、SAP HANA データソースとのデータの読み取りおよび書き込みを行うための SAP HANA Reader と SAP HANA Writer を提供します。このトピックでは、SAP HANA データソースとのデータ同期機能について説明します。

サポートされているバージョン

以下の SAP HANA バージョンがサポートされています。

  • Database 2.00.048.06.1623425628

  • DataBase 2.00.055.00.161

制限事項

データ型マッピング

次の表に、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

重要
  • 上記の表に記載されていないデータ型はサポートされていません。

  • SAP HANA Reader は、TINYINT(1) を整数データ型として処理します。

データソースの追加

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