Tablestore は、Alibaba Cloud の Pangu ストレージ上に構築された NoSQL データストレージサービスです。Tablestore データソースは、Tablestore からのデータの読み取りと Tablestore へのデータの書き込みを行うための双方向チャネルを提供します。このトピックでは、DataWorks が Tablestore に提供するデータ同期機能について説明します。
制限事項
Tablestore Reader プラグインと Writer プラグインを使用すると、Tablestore からのデータの読み取りと Tablestore へのデータの書き込みが可能になります。これらのプラグインは、ワイドテーブルと時系列テーブルに対して、行モードと列モードの 2 つのデータアクセス方法を提供します。
列モード: Tablestore の多バージョンモデルでは、テーブル内のデータはの 3 レベルモデルに編成されます。1 つの行には任意の数の列を含めることができ、列名は固定されていません。各列には複数のバージョンを含めることができ、各バージョンには特定のタイムスタンプ (バージョン番号) があります。列モードでは、読み取るデータはプライマリキー値、列名、タイムスタンプ、列値で構成される 4 タプル形式です。書き込むデータも、プライマリキー値、列名、タイムスタンプ、列値で構成される 4 タプル形式です。
行モード: このモードでは、更新された各レコードは (プライマリキー値, 列値) の形式の行としてエクスポートされます。
行モードでは、データの各行は Tablestore テーブルのレコードに対応します。行モードで書き込まれるデータには、プライマリキー列の値と属性列の値が含まれます。
Tablestore の列は、プライマリキー列 (primaryKey) と属性列 (column) で構成されます。ソース列の順序は、宛先 Tablestore テーブルのプライマリキー列と属性列の順序と一致する必要があります。一致しない場合、列マッピングエラーが発生します。
Tablestore Reader は、テーブルから読み取るデータ範囲を N 個のタスクに分割します。ここで N はデータ同期の同時実行レベルです。各タスクは Tablestore Reader スレッドによって実行されます。
サポートされているフィールドタイプ
Tablestore Reader と Tablestore Writer は、すべての Tablestore データ型をサポートしています。次の表にデータ型のマッピングを示します。
タイプカテゴリ | Tablestore データ型 |
整数 | INTEGER |
浮動小数点 | DOUBLE |
文字列 | STRING |
ブール値 | BOOLEAN |
バイナリ | BINARY |
Tablestore は日付型をサポートしていません。アプリケーション層では通常、Long 型を使用して UNIX タイムスタンプを格納します。
コードエディタで INTEGER 型のデータを INT として設定する必要があります。その後、DataWorks はそれを INTEGER 型に変換します。型を直接 INTEGER として設定すると、ログにエラーが報告され、タスクは失敗します。
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの情報ヒントを表示して、パラメーターの意味を理解できます。
データ同期タスクの開発
同期タスクの設定のエントリポイントと手順については、次の設定ガイドをご参照ください。
単一テーブルオフライン同期タスク設定ガイド
詳細については、「コードエディタでタスクを設定する」をご参照ください。
コードエディタのすべてのパラメーターとスクリプトのデモについては、「付録 II: Writer スクリプトのデモとパラメーターの説明」をご参照ください。
付録 I: Reader スクリプトのデモとパラメーターの説明
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいてスクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでタスクを設定する」をご参照ください。以下の情報は、コードエディタを使用してバッチ同期タスクを設定する際にデータソースに対して設定する必要があるパラメーターについて説明しています。
Reader スクリプトのデモ
ワイドテーブルの行モード読み取り設定
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"newVersion":"true",// otsreader の新しいバージョンを使用します。
"mode": "normal",// 行モードでデータを読み取ります。
"isTimeseriesTable":"false",// テーブルをワイドテーブル (時系列テーブルではない) として設定します。
"column":[// フィールド。
{
"name":"column1"// フィールド名。
},
{
"name":"column2"
},
{
"name":"column3"
},
{
"name":"column4"
},
{
"name":"column5"
}
],
"range":{
"split":[
{
"type":"STRING",
"value":"beginValue"
},
{
"type":"STRING",
"value":"splitPoint1"
},
{
"type":"STRING",
"value":"splitPoint2"
},
{
"type":"STRING",
"value":"splitPoint3"
},
{
"type":"STRING",
"value":"endValue"
}
],
"end":[
{
"type":"STRING",
"value":"endValue"
},
{
"type":"INT",
"value":"100"
},
{
"type":"INF_MAX"
},
{
"type":"INF_MAX"
}
],
"begin":[
{
"type":"STRING",
"value":"beginValue"
},
{
"type":"INT",
"value":"0"
},
{
"type":"INF_MIN"
},
{
"type":"INF_MIN"
}
]
},
"table":""// テーブル名。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// エラーレコードの数。
},
"speed":{
"throttle":true,// false は速度制限なしを示します。以下の速度制限は有効になりません。true は速度制限を示します。
"concurrent":1, // ジョブの同時実行数。
"mbps":"12"// 速度制限。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}時系列テーブルの行モード読み取り設定
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"table": "",// テーブル名。
// 時系列データを読み取るには、mode を normal に設定する必要があります。
"mode": "normal",
// 時系列データを読み取るには、newVersion を true に設定する必要があります。
"newVersion": "true",
// テーブルを時系列テーブルとして設定します。
"isTimeseriesTable":"true",
// measurementName: 時系列データを読み取るメジャーの名前。このパラメーターはオプションです。空のままにすると、テーブル全体からデータが読み取られます。
"measurementName":"measurement_1",
"column": [
{
"name": "_m_name"
},
{
"name": "tagA",
"is_timeseries_tag":"true"
},
{
"name": "double_0",
"type":"DOUBLE"
},
{
"name": "string_0",
"type":"STRING"
},
{
"name": "long_0",
"type":"INT"
},
{
"name": "binary_0",
"type":"BINARY"
},
{
"name": "bool_0",
"type":"BOOL"
},
{
"type":"STRING",
"value":"testString"
}
]
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// エラーレコードの数。
},
"speed":{
"throttle":true,// false は速度制限なしを示します。以下の速度制限は有効になりません。true は速度制限を示します。
"concurrent":1, // ジョブの同時実行数。
"mbps":"12"// 速度制限。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}ワイドテーブルの列モード読み取り設定
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"table":"",// テーブル名。
"newVersion":"true",// otsreader の新しいバージョン。
"mode": "multiversion",// 多バージョンモード。
"column":[// エクスポートする列の名前。属性列である必要があります。
{"name":"mobile"},
{"name":"name"},
{"name":"age"},
{"name":"salary"},
{"name":"marry"}
],
"range":{// エクスポートする範囲。
"begin":[
{"type":"INF_MIN"},
{"type":"INF_MAX"}
],
"end":[
{"type":"INF_MAX"},
{"type":"INF_MIN"}
],
"split":[
]
},
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// エラーレコードの数。
},
"speed":{
"throttle":true,// false は速度制限なしを示します。以下の速度制限は有効になりません。true は速度制限を示します。
"concurrent":1, // ジョブの同時実行数。
"mbps":"12"// 速度制限。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Reader スクリプトの一般パラメーター設定
パラメーター | 説明 | 必須 | デフォルト値 |
endpoint | Tablestore サーバーのエンドポイント。詳細については、「エンドポイント」をご参照ください。 | はい | なし |
accessId | Tablestore の AccessKey ID。 | はい | なし |
accessKey | Tablestore の AccessKey シークレット。 | はい | なし |
instanceName | Tablestore インスタンスの名前。インスタンスは、Tablestore サービスを管理するために使用するエンティティです。 Tablestore をアクティブ化した後、コンソールでインスタンスを作成する必要があります。その後、インスタンスでテーブルを作成および管理できます。 インスタンスは、Tablestore のリソース管理の基本単位です。アプリケーションのアクセス制御とリソース計測は、インスタンスレベルで実行されます。 | はい | なし |
table | データを読み取るテーブルの名前。1 つのテーブルのみ指定できます。Tablestore は複数テーブルの同期をサポートしていません。 | はい | なし |
newVersion | 使用する Tablestore Reader プラグインのバージョン。
新しいバージョンの Tablestore Reader は新機能をサポートし、消費するシステムリソースが少なくなります。新しいバージョンの Tablestore Reader を使用することをお勧めします。 新しいプラグインは古いプラグインの設定と互換性があります。つまり、newVersion=true 設定を追加した後、古いタスクは期待どおりに実行できます。 | いいえ | false |
mode | データを読み取るモード。次のモードがサポートされています:
このパラメーターは、newVersion:true が設定されている場合にのみ有効です。 古いバージョンの Tablestore Reader は mode 設定を無視し、行モードのみをサポートします。 | いいえ | normal |
isTimeseriesTable | データテーブルが時系列データテーブルであるかどうかを指定します。
このパラメーターは、newVersion:true & mode:normal が設定されている場合にのみ有効です。 古いバージョンの Tablestore Reader は時系列テーブルをサポートしていません。時系列テーブルは列モードでは読み取れません。 | いいえ | false |
Reader スクリプトの追加パラメーター設定
Tablestore Reader は、ワイドテーブルからの行モードでの読み取り、時系列テーブルからの行モードでの読み取り、およびワイドテーブルからの列モードでの読み取りをサポートします。次のセクションでは、各モードの追加設定について説明します。
ワイドテーブルの行モード読み取りパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
column | 設定されたテーブルから同期する列名のセット。JSON 配列を使用してフィールド情報を記述します。Tablestore は NoSQL システムであるため、Tablestore Reader がデータを読み取る際にはフィールド名を指定する必要があります。
| はい | なし |
begin および end | begin と end パラメーターは、Tablestore テーブルから読み取るデータの範囲を指定します。 begin と end は、Tablestore プライマリキーの間隔分布を記述します。無限区間の場合、 説明
たとえば、3 つのプライマリキー列
| いいえ | (INF_MIN, INF_MAX) |
split | これは詳細設定項目です。通常の場合、使用することはお勧めしません。 split パラメーターを設定して、シャーディングのデータ範囲を定義できます。Tablestore データストレージでホットスポットが発生した場合、カスタム分割ルールを使用できます。次のタスク設定を例にとります: タスクが実行されると、データは 6 つのセグメントに分割され、同時に読み取られます。セグメントの数はタスクの同時実行数より多くすることをお勧めします。 | いいえ | split パラメーターが設定されていない場合、自動分割ロジックが使用されます。 自動分割ロジックは、パーティションキーの最大値と最小値を見つけ、データを均等なセグメントに分割します。 パーティションキーは整数型と文字列型をサポートします。整数型は整数除算によって分割されます。文字列型は最初の文字の Unicode コードによって分割されます。 |
時系列テーブルの行モード読み取りパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
column | column は配列です。各要素は列を表します。定数列と通常の列を設定できます。 定数列の場合、次のフィールドを設定します:
通常の列の場合、次のフィールドを設定します:
次のスクリプトは、4 列のデータを読み取る例です: | はい | なし |
measurementName | 読み取るタイムラインのメジャー名。このパラメーターを設定しない場合、データはテーブル全体から読み取られます。 | いいえ | なし |
timeRange | リクエストされたデータの時間範囲。読み取り範囲は [begin,end) で、左閉右開の間隔です。`begin` は `end` より小さくなければなりません。タイムスタンプの単位はマイクロ秒です。形式は次のとおりです: | いいえ | すべてのバージョン |
ワイドテーブルの列モード読み取りパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
column | エクスポートする列を指定します。列モードでは属性列のみがサポートされます。 フォーマット: 説明
| はい | すべての列 |
range | 読み取るデータの範囲。読み取り範囲は [begin, end) で、左閉右開の間隔です。さらに:
`type` でサポートされる型は次のとおりです:
フォーマット: | いいえ | すべてのデータ |
timeRange | リクエストされたデータの時間範囲。読み取り範囲は [begin, end) で、左閉右開の間隔です。`begin` は `end` より小さくなければなりません。タイムスタンプの単位はマイクロ秒です。 フォーマット: | いいえ | すべてのバージョン |
maxVersion | リクエストするデータバージョンの最大数。値の範囲は 1 から INT32_MAX です。 | いいえ | すべてのバージョン |
付録 II: Writer スクリプトのデモとパラメーターの説明
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいてスクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでタスクを設定する」をご参照ください。以下の情報は、コードエディタを使用してバッチ同期タスクを設定する際にデータソースに対して設定する必要があるパラメーターについて説明しています。
Writer スクリプトのデモ
ワイドテーブルの行モード書き込み設定
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"table":"",// テーブル名。
"newVersion":"true",// otswriter の新しいバージョンを使用します。
"mode": "normal",// 行モードでデータを書き込みます。
"isTimeseriesTable":"false",// テーブルをワイドテーブル (時系列テーブルではない) として設定します。
"primaryKey" : [// Tablestore のプライマリキー情報。
{"name":"gid", "type":"INT"},
{"name":"uid", "type":"STRING"}
],
"column" : [// フィールド。
{"name":"col1", "type":"INT"},
{"name":"col2", "type":"DOUBLE"},
{"name":"col3", "type":"STRING"},
{"name":"col4", "type":"STRING"},
{"name":"col5", "type":"BOOL"}
],
"writeMode" : "PutRow" // 書き込みモード。
},
"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"
}
]
}
}時系列テーブルの行モード書き込み設定
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"table": "testTimeseriesTableName01",
"mode": "normal",
"newVersion": "true",
"isTimeseriesTable":"true",
"timeunit":"microseconds",
"column": [
{
"name": "_m_name"
},
{
"name": "_data_source",
},
{
"name": "_tags",
},
{
"name": "_time",
},
{
"name": "string_1",
"type":"string"
},
{
"name":"tag3",
"is_timeseries_tag":"true",
}
]
},
"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"
}
]
}
}ワイドテーブルの列モード書き込み設定
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"table":"",
"newVersion":"true",
"mode":"multiVersion",
"primaryKey" : [
"gid",
"uid"
]
},
"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 | データソース名。コードエディタはデータソースの追加をサポートしています。このパラメーターの値は、追加されたデータソースの名前と同じでなければなりません。 | はい | なし |
endPoint | Tablestore サーバーのエンドポイント。詳細については、「エンドポイント」をご参照ください。 | はい | なし |
accessId | Tablestore の AccessKey ID。 | はい | なし |
accessKey | Tablestore の AccessKey シークレット。 | はい | なし |
instanceName | Tablestore インスタンスの名前。インスタンスは、Tablestore サービスを管理するために使用するエンティティです。 Tablestore をアクティブ化した後、コンソールでインスタンスを作成する必要があります。その後、インスタンスでテーブルを作成および管理できます。インスタンスは、Tablestore のリソース管理の基本単位です。アプリケーションのアクセス制御とリソース計測は、インスタンスレベルで実行されます。 | はい | なし |
table | データを書き込むテーブルの名前。1 つのテーブルのみ指定できます。Tablestore は複数テーブルの同期をサポートしていません。 | はい | なし |
newVersion | 使用する Tablestore Writer プラグインのバージョン。
新しいバージョンの Tablestore Writer は新機能をサポートし、消費するシステムリソースが少なくなります。新しいバージョンの Tablestore Writer を使用することをお勧めします。 新しいプラグインは古いプラグインの設定と互換性があります。つまり、newVersion=true 設定を追加した後、古いタスクは期待どおりに実行できます。 | はい | false |
mode | データを書き込むモード。次の 2 つのモードがサポートされています:
このパラメーターは、newVersion:true が設定されている場合にのみ有効です。 古いバージョンの Tablestore Writer は mode 設定を無視し、行モードのみをサポートします。 | いいえ | normal |
isTimeseriesTable | データテーブルが時系列データテーブルであるかどうかを指定します。
このパラメーターは、newVersion:true & mode:normal が設定されている場合にのみ有効です。列モードは時系列テーブルと互換性がありません。 | いいえ | false |
Writer スクリプトの追加パラメーター設定
Tablestore Writer は、ワイドテーブルへの行モードでの書き込み、時系列テーブルへの行モードでの書き込み、およびワイドテーブルへの列モードでの書き込みをサポートします。次のセクションでは、各モードの追加設定について説明します。
ワイドテーブルの行モード書き込みパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
primaryKey | Tablestore のプライマリキー情報。JSON 配列を使用してフィールド情報を記述します。Tablestore は NoSQL システムであるため、Tablestore Writer がデータをインポートする際にはフィールド名を指定する必要があります。 データ同期システムは型変換をサポートしています。したがって、ソースデータが STRING または INT 型でない場合、Tablestore Writer はデータ型変換を実行します。次のコードは設定例です。 説明 Tablestore のプライマリキーは STRING 型と INT 型のみをサポートします。したがって、Tablestore Writer も型を STRING と INT に制限します。 | はい | なし |
column | 設定されたテーブルで同期する列名のセット。JSON 配列を使用してフィールド情報を記述します。 設定例: `name` は書き込む Tablestore 列の名前で、`type` は書き込む型です。Tablestore は STRING、INT、DOUBLE、BOOL、BINARY 型をサポートします。 説明 書き込みプロセス中に定数、関数、またはカスタム式はサポートされません。 | はい | なし |
writeMode | Tablestore にデータを書き込むモード。次の 2 つのモードがサポートされています:
| はい | なし |
enableAutoIncrement | 自動採番主キー列を含む Tablestore テーブルへのデータ書き込みを許可するかどうかを指定します。
| いいえ | false |
requestTotalSizeLimitation | このパラメーターは、Tablestore に書き込む際の 1 行のデータのサイズを制限します。設定タイプは数値です。 | いいえ | 1 MB |
attributeColumnSizeLimitation | このパラメーターは、Tablestore に書き込む際の単一の属性列のサイズを制限します。設定タイプは数値です。 | いいえ | 2 MB |
primaryKeyColumnSizeLimitation | このパラメーターは、Tablestore に書き込む際の単一のプライマリキー列のサイズを制限します。設定タイプは数値です。 | いいえ | 1 KB |
attributeColumnMaxCount | このパラメーターは、Tablestore に書き込む際の属性列の数を制限します。設定タイプは数値です。 | いいえ | 1,024 |
時系列テーブルの行モード書き込みパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
column | `column` の各要素は、時系列データのフィールドに対応します。各要素に対して次のパラメーターを設定できます。
時系列データのメジャー名とタイムスタンプは空にできないため、 例: 書き込むレコードに次の 6 つのフィールドが含まれているとします: 次の設定を使用します: | はい | なし |
timeunit | 設定された `_time` タイムスタンプフィールドの単位。サポートされている単位は NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS、MINUTES です。 | いいえ | MICROSECONDS |
ワイドテーブルの列モード書き込みパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
primaryKey | テーブルのプライマリキー列。 設定コストを削減するために、レコード (行) 内の primaryKey の位置を設定する必要はありません。ただし、レコード形式は固定されている必要があります:primaryKey はレコードの先頭にある必要があり、primaryKey の後には columnName が続く必要があります。レコード形式は たとえば、次の 9 つのレコードがあるとします: 設定例: ワイドテーブルへの書き込み結果: | はい | なし |
columnNamePrefixFilter | 列名プレフィックスフィルター。 Hbase からインポートされたデータの場合、cf と qulifier が一緒になって columnName を形成します。ただし、Tablestore は cf をサポートしていないため、cf をフィルターで除外する必要があります。 設定例: 説明
| いいえ | なし |
よくある質問
Q: 自動採番主キー列を含む宛先テーブルにデータを書き込むように Tablestore Writer を設定するにはどうすればよいですか?
Tablestore Writer の設定には、次の 2 行を含める必要があります:
"newVersion": "true", "enableAutoIncrement": "true",Tablestore Writer で自動採番主キー列の名前を設定する必要はありません。
Tablestore Writer では、primaryKey エントリの数と column エントリの数の合計が、上流の Tablestore Reader データの列数と等しくなければなりません。
Q: 時系列モデルの設定において、
_tagフィールドとis_timeseries_tagフィールドの違いは何ですか?例: あるレコードに 3 つのタグがあります: [Phone=Xiaomi, Memory=8G, Camera=Leica]。

データエクスポートの例 (Tablestore Reader)
上記のタグをマージして単一の列としてエクスポートする場合、次の設定を使用します:
"column": [ { "name": "_tags", } ],DataWorks はタグを単一のデータ列としてエクスポートし、その形式は次のようになります:
["phone=xiaomi","camera=LEICA","RAM=8G"]phoneタグとcameraタグを別々の列としてエクスポートする場合、次の設定を使用します:"column": [ { "name": "phone", "is_timeseries_tag":"true", }, { "name": "camera", "is_timeseries_tag":"true", } ],DataWorks は 2 列のデータをエクスポートし、その形式は次のようになります:
xiaomi, LEICA
データインポートの例 (Tablestore Writer)
上流のデータソース (Reader) に 2 列のデータがあると仮定します:
1 列のデータは:
["phone=xiaomi","camera=LEICA","RAM=8G"]です。もう 1 列のデータは: 6499 です。
両方の列をタグに追加したいとします。書き込み後のタグフィールドの期待される形式は次のとおりです:
次の設定を使用します:"column": [ { "name": "_tags", }, { "name": "price", "is_timeseries_tag":"true", }, ],最初の列の設定では、
["phone=xiaomi","camera=LEICA","RAM=8G"]を全体としてタグフィールドにインポートします。2 番目の列の設定では、
price=6499を個別にタグフィールドにインポートします。