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

DataWorks:Sensors Data

最終更新日:Mar 01, 2026

DataWorks Data Integration を使用すると、Sensors Data Writer を用いて Sensors Data へデータを書き込むことができます。本トピックでは、DataWorks における Sensors Data のデータ同期機能について説明します。

制限事項

  • 現在、Sensors Data データソースは中国 (深セン) リージョンでのみ追加可能です。他のリージョンへの対応は、近日中に提供予定です。

  • Sensors Data からデータを直接読み取ることはできません。Sensors Data のデータストレージ形式に応じて、Hive や HDFS などのプラグインを使用してデータを読み取る必要があります。

データソースの追加

DataWorks で同期タスクを開発する前に、データソース管理の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際には、DataWorks コンソールで パラメーターの説明を確認し、各パラメーターの意味を理解してください

データ同期タスクの開発

同期タスクの設定入口および設定手順については、以下の構成ガイドをご参照ください。

単一テーブルオフライン同期タスクの構成

付録 1:スクリプトデモおよびパラメーターの説明

コードエディタによるバッチ同期タスクの構成

コードエディタを使用してバッチ同期タスクを構成する場合、統一されたスクリプトフォーマット要件に基づき、スクリプト内で関連パラメーターを設定する必要があります。詳細については、「コードエディタによるタスクの構成」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを構成する際に、データソースに対して設定する必要があるパラメーターについて説明します。

Writer スクリプトのデモ

{
    "type": "job",
    "steps": [
        {
            "stepType": "mysql",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
             "stepType": "sahistory", // プラグイン名。
             "parameter": {
                "type": "item", // Sensors Data へ書き込むデータの種類。有効な値:track、user、item。これらは Sensors Data のイベント、ユーザー、プロパティに対応します。
                     "item": {       // type パラメーターが item に設定されているため、ここに item パラメーターを定義する必要があります。
                    "itemType": "course", // アイテムの種類を course として定義します。
                    "typeIsColumn": false, // アイテムの種類が column パラメーター内に含まれるかどうかを指定します。
                    "itemIdColumn": "course_id" // アイテム ID のフィールド名を定義します。
                },
                "column": [     // ソーステーブルと宛先テーブル間のフィールドマッピングを定義します。
                    {
                        "name": "course_id",    // 宛先テーブル内の列名は course_id です。
                        "index": 0              // ソーステーブルの最初の列から取得したデータを、宛先テーブルの course_id 列に書き込みます。
                    },
                    {
                        "name": "course_name",  // 宛先テーブル内の列名は course_name です。
                        "index": 1              // ソーステーブルの 2 番目の列から取得したデータを、宛先テーブルの course_name 列に書き込みます。
                    },
                    {
                        "name": "course_schedule",  // 宛先テーブル内の列名は course_schedule です。
                        "index": 2                  // ソーステーブルの 3 番目の列から取得したデータを、宛先テーブルの course_schedule 列に書き込みます。
                        "dataConverters":[          // データ型変換を行うコンバーター。
                               {
                                    "type": "Long2Date"   // コンバーターの種類。
                                }
                          ]
                    }
                ],
                "sdkDataAddress": "http://bigdata-project.datasink.sensorsdata.cn/sa?project=default&token=1111111111111111", // データストレージパス。これは Sensors Data がデータを受信するために使用する URL です。
                  },
            "name": "Writer",
            "category": "writer"
        }
    ],
    },
    "setting": {
        "errorLimit": {
            "record": "0" // エラーとなるレコード数。
        },
        "speed": {
            "throttle":true,// throttle が false の場合、mbps パラメーターは無効となり、速度制限は無効化されます。throttle が true の場合、速度制限が有効になります。
                        "concurrent":2, // ジョブの同時実行数。
                        "mbps":"12"// 速度制限レート。ここで、1 mbps = 1 MB/s です。
        }
    }
}

Writer スクリプトのパラメーター

パラメーター

説明

必須

デフォルト

type

Sensors Data システムへ書き込むデータの種類。有効な値: trackuseritem。これらは Sensors Data システムの イベントユーザープロパティ に対応します。type パラメーターの値によって、データ種別に応じたパラメーター定義が異なります。

はい

なし

typetrack に設定されている場合、以下のオプションパラメーターが利用可能です:

  • distinctIdColumn(オプション):Sensors Data システムにおけるイベントの Distinct ID として使用するフィールド名。このフィールド名は、column パラメーター内でもイベントプロパティとして定義されている必要があります。このプロパティの値は空であってはなりません。

  • eventName(オプション):Sensors Data システムにおけるイベントの名称。

  • isLoginId(オプション):Sensors Data におけるイベントの Distinct ID として使用されるフィールドが、ユーザーを一意に識別するログイン ID であるかどうかを指定します。有効な値:true、false。デフォルト値:true。

以下のコードは例です:

"track": {  
"distinctIdColumn": "track_id",  
"eventName": "testEventName", 
"isLoginId": true
}

typeuser に設定されている場合、以下のオプションパラメーターが利用可能です:

  • distinctIdColumn(オプション):Sensors Data システムにおけるユーザーの Distinct ID として使用するフィールド名。このフィールド名は、column パラメーター内でもユーザーのプロパティとして定義されている必要があります。このプロパティの値は空であってはなりません。

  • isLoginId(オプション):Sensors Data におけるユーザーの Distinct ID として使用されるフィールドが、ユーザーを一意に識別するログイン ID であるかどうかを指定します。有効な値:true、false。デフォルト値:true。

以下のコードは例です:

"user": {
"distinctIdColumn": "user_id", 
"isLoginId": true
}

typeitem に設定されている場合、以下のオプションパラメーターが利用可能です:

  • itemIdColumn(オプション):Sensors Data システムにおけるプロパティの Distinct ID として使用するフィールド名。このフィールド名は、column パラメーター内でもプロパティのプロパティとして定義されている必要があります。このプロパティの値は空であってはなりません。

  • itemType(オプション):Sensors Data システムにおけるプロパティの itemType として使用するフィールド名。このフィールド名が column パラメーター内で定義されている場合、その値は空であってはならず、typeIsColumn パラメーターを true に設定する必要があります。それ以外の場合、定数が Sensors itemType として使用されます。

  • typeIsColumn(オプション): itemType パラメーターが column パラメーターのリスト内にあるかどうかを指定します。有効な値:true、false。デフォルト値:true。

以下のコードは例です:

"item": {
"itemIdColumn": "item_id", 
"itemType": "testItem",
"typeIsColumn": false
}

column

index および name パラメーターを使用して、ソーステーブルと宛先テーブルのフィールド間のマッピングを定義します。

  • name(必須):宛先テーブルのフィールド名。

  • index(必須):ソーステーブルのフィールドのインデックス。たとえば、ソーステーブルの最初の列のインデックス値は 0 です。

はい

なし

sdkDataAddress

データストレージパス。これは Sensors Data がデータを受信するために使用する URL です。URL の形式は次のとおりです:http://localhost:8106/sa?project=default。この URL は、Sensors Analytics > 基本設定 > データ取り込み > サーバー追跡 > HTTP データ受信アドレスのコピーを選択することで取得できます。

はい

なし

付録 2:その他のパラメーター

Sensors Data Writer を使用すると、宛先データソースへ書き込む前に、フィールドのデータ型を変換できます。これを行うには、データコンバーター(dataConverters)をスクリプトに追加し、コンバーターの種類(type)を定義します。以下の表では、コンバーターの種類、パラメーター、および例を示します。

コンバーターの種類

説明

パラメーターの説明

Date2Str

Date 型のデータを String 型に変換します。

// 例
"dataConverters":[
    {
        "type": "Date2Str",
        "param": {
            "pattern":"yyyy-MM-dd"
        }
    }
]

pattern(オプション):Date 型から変換後の String 型データの時刻フォーマット。

Date2Long

Date 型のデータを Long 型に変換します。

"dataConverters":[
    {
        "type": "Date2Long"
    }
]

なし

Number2Str

数値型のデータを String 型に変換します。

// 例
"dataConverters":[
    {
        "type": "Number2Str"
    }
]

なし

Str2Long

String 型のデータを Long 型に変換します。

// 例
"dataConverters":[
    {
        "type": "Str2Long"
    }
]

なし

Str2Date

String 型のデータを Date 型に変換します。

// 例
"dataConverters":[
    {
        "type": "Str2Date",
        "param": {
            "pattern":"yyyy-MM-dd",
            "formats":["yyyyMMdd","yyyyMMddHHmmss"]
        }
    }
]
  • pattern(オプション):変換後の Date 型データの時刻フォーマット。組み込みの時刻フォーマットには、以下のものがあります:yyyy-MM-ddyyyy-MM-dd HH:mm:ssyyyy-MM-dd HH:mm:ss.SSSyyyy-MMyyyyMMyyyyMMddHHmmssyyyyMMddHHmmssSSS

  • formats(オプション):その他の文字列形式の時刻フォーマットの配列。このパラメーターは、ソースデータが pattern パラメーターでカバーされていない複数の時刻フォーマットを持つ場合に使用できます。

BigInt2Date

BigInt 型のデータを Date 型に変換します。

// 例
"dataConverters":[
    {
        "type": "BigInt2Date"
    }
]

なし

Str2Int

String 型のデータを Int 型に変換します。

// 例
"dataConverters":[
    {
        "type": "Str2Int"
    }
]

なし

Str2Double

String 型のデータを Double 型に変換します。

// 例
"dataConverters":[
    {
        "type": "Str2Double"
    }
]

なし

Str2BigDecimal

String 型のデータを BigDecimal 型に変換します。

// 例
"dataConverters":[
    {
        "type": "Str2BigDecimal"
    }
]

なし

IfNull2Default

フィールドの値が null の場合、default パラメーターで定義された定数をフィールドの値として設定します。また、IfNull2Default コンバーター内に他のコンバーターをネストすることで、定数をさらに目的のデータ型に変換できます。

// 例
// この列の値が null または空文字列の場合、値を文字列「2021-07-01」に設定します。その後、この文字列を yyyy-MM-dd 形式の日付に変換し、最終的にミリ秒単位の long 値に変換します。
"dataConverters":[
    {
        "type": "IfNull2Default",
        "param": {
            "default": "2021-07-01",
            "dataConverters": [
                {
                    "type": "Str2Date",
                    "param": {
                        "pattern":"yyyy-MM-dd"
                    }
                },
                {
                    "type": "Date2Long"
                }
            ]
        }
    }
]

dataConverters:default パラメーターのデフォルト値を、type パラメーターで定義された型に変換するデータコンバーター。複数の dataConverters をネストすることで、複数のデータ変換を実行できます。

NotNull2Null

フィールドの値が null でない場合、その値を null に変換します。

// 例
"dataConverters":[
    {
        "type": "NotNull2Null"
    }
]

なし

IfElse

フィールドの値が条件を満たすかどうかをチェックする if 条件式です。条件が満たされた場合、value パラメーターで定義された値が返されます。条件が満たされなかった場合、else パラメーターで定義された値が返されます。

// 例
"dataConverters":[
                  {
                    "type": "IfElse",
                    "param": {
                      "if": "return true;",
                      "value":"if(resolvedValues.get(\"check_card_type\") == 'NAN' && value == null ){return true;} if(resolvedValues.get(\"check_card_type\") == 'ID_Card'){  if(java.util.regex.Pattern.compile(regEx).matcher(value).find() && java.lang.Integer.parseInt(value.substring(6, 10)) >=1900 && java.lang.Integer.parseInt(value.substring(6, 10)) <= nowYear){return true;}} return null;",
                      "sharedPool":"var nowYear = java.time.LocalDate.now().getYear(); var regEx = \"(110|120|310|510|150|650|540|640|450|230|220|210|120|140|630|370|410|320|340|320|340|330|350|360|430|420|440|460|620|610|520|530)\\\\d{7}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\\\\d{3}(\\\\d|X)\"; "
                    }
                  }
                ]
  • if:if 条件式。JavaScript エンジンによって解析され、ブール値を返す必要があります。Sensors Data へインポートされる現在のフィールド(targetColumnName)、現在のプラグインによって取得された値(value)、dataConverters 下で設定された param パラメーター、および解決済みの列(マップ構造)が if 式に渡されます。これらの値には、targetColumnName、value、param、resolvedValues を使用してアクセスできます。

  • value:if 条件式が満たされた場合に返される値。JavaScript エンジンによって解析されます。Sensors Data へインポートされる現在のフィールド(targetColumnName)、現在のプラグインによって取得された値(value)、dataConverters 下で設定された param パラメーター、および解決済みの列(マップ構造)が value 式に渡されます。これらの値には、targetColumnName、value、param、resolvedValues を使用してアクセスできます。

  • else:if 条件式が満たされなかった場合に返される値。JavaScript エンジンによって解析されます。Sensors Data へインポートされる現在のフィールド(targetColumnName)、現在のプラグインによって取得された値(value)、dataConverters 下で設定された param パラメーター、および解決済みの列(マップ構造)が else 式に渡されます。これらの値には、targetColumnName、value、param、resolvedValues を使用してアクセスできます。

  • sharedPool:JavaScript エンジンによって解析される共有領域。ここで定義された変数や定数は、if、value、else 式で使用できます。

IfNull2Column

フィールドの値が null の場合、targetColumnName パラメーターで指定された列の値を、現在のフィールドの値として使用します。

// 例
"dataConverters": [
    {
        "type": "IfNull2Column",
        "param": {
            "targetColumnName":"age1"
        }
    }
]

targetColumnName:Sensors Data へインポートする列の名称。

重要

targetColumnName で指定された列は、IfNull2Column コンバーターを使用する列よりも前に設定されている必要があります。