All Products
Search
Document Center

DataWorks:Sensors Data

Last Updated:Mar 01, 2026

Data Integration di DataWorks memungkinkan Anda menulis data ke Sensors Data menggunakan Sensors Data Writer. Topik ini menjelaskan kemampuan sinkronisasi data untuk Sensors Data di DataWorks.

Batasan

  • Saat ini, Anda hanya dapat menambahkan sumber data Sensors Data di wilayah China (Shenzhen). Dukungan untuk wilayah lain akan segera tersedia.

  • Anda tidak dapat langsung membaca data dari Sensors Data. Anda harus menggunakan plugin, seperti Hive atau HDFS, untuk membaca data berdasarkan tipe penyimpanan data Sensors Data.

Add a data source

Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk dalam Data source management. Anda dapat melihat parameter descriptions di konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Kembangkan tugas sinkronisasi data

Untuk informasi mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Konfigurasikan tugas sinkronisasi offline tabel tunggal

Appendix 1: Script demo dan deskripsi parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi selengkapnya, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat Anda mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Writer

{
    "type": "job",
    "steps": [
        {
            "stepType": "mysql",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
             "stepType": "sahistory", // Nama plugin.
             "parameter": {
                "type": "item", // Tipe data yang akan ditulis ke Sensors Data. Nilai yang valid: track, user, dan item. Nilai-nilai ini masing-masing berkorespondensi dengan events, users, dan properties di Sensors Data.
                     "item": {       // Karena parameter type diatur ke item, Anda harus mendefinisikan parameter item di sini.
                    "itemType": "course", // Mendefinisikan tipe item sebagai course.
                    "typeIsColumn": false, // Menentukan apakah tipe item muncul dalam parameter column.
                    "itemIdColumn": "course_id" // Mendefinisikan nama bidang untuk ID item.
                },
                "column": [     // Mendefinisikan pemetaan bidang antara tabel sumber dan tabel tujuan.
                    {
                        "name": "course_id",    // Nama kolom di tabel tujuan adalah course_id.
                        "index": 0              // Menulis data dari kolom pertama tabel sumber ke kolom course_id tabel tujuan.
                    },
                    {
                        "name": "course_name",  // Nama kolom di tabel tujuan adalah course_name.
                        "index": 1              // Menulis data dari kolom kedua tabel sumber ke kolom course_name tabel tujuan.
                    },
                    {
                        "name": "course_schedule",  // Nama kolom di tabel tujuan adalah course_schedule.
                        "index": 2                  // Menulis data dari kolom ketiga tabel sumber ke kolom course_schedule tabel tujuan.
                        "dataConverters":[          // Konverter yang melakukan konversi tipe data.
                               {
                                    "type": "Long2Date"   // Tipe konverter.
                                }
                          ]
                    }
                ],
                "sdkDataAddress": "http://bigdata-project.datasink.sensorsdata.cn/sa?project=default&token=1111111111111111", // Jalur penyimpanan data, yaitu URL yang digunakan Sensors Data untuk menerima data.
                  },
            "name": "Writer",
            "category": "writer"
        }
    ],
    },
    "setting": {
        "errorLimit": {
            "record": "0" // Jumlah catatan error.
        },
        "speed": {
            "throttle":true,// Jika throttle bernilai false, parameter mbps tidak berlaku, dan pembatasan kecepatan dinonaktifkan. Jika throttle bernilai true, pembatasan kecepatan diaktifkan.
                        "concurrent":2, // Konkurensi pekerjaan.
                        "mbps":"12"// Laju pembatasan kecepatan. Di sini, 1 mbps = 1 MB/s.
        }
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Bawaan

type

Tipe data yang akan ditulis ke sistem Sensors Data. Nilai yang valid: track, user, dan item. Nilai-nilai ini masing-masing berkorespondensi dengan events, users, dan properties di sistem Sensors Data. Nilai parameter type memengaruhi definisi parameter untuk tipe data tersebut.

Ya

Tidak ada

Jika type diatur ke track, parameter opsional berikut tersedia:

  • distinctIdColumn (Opsional): Nama bidang yang digunakan sebagai Distinct ID untuk event di sistem Sensors Data. Nama bidang ini juga harus didefinisikan sebagai properti event dalam parameter column. Nilai properti ini tidak boleh kosong.

  • eventName (Opsional): Nama event di sistem Sensors Data.

  • isLoginId (Opsional): Menentukan apakah bidang yang digunakan sebagai Distinct ID event di Sensors Data merupakan logon ID, yaitu pengenal unik untuk pengguna. Nilai yang valid: true dan false. Nilai bawaan: true.

Kode berikut memberikan contoh:

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

Jika type diatur ke user, parameter opsional berikut tersedia:

  • distinctIdColumn (Opsional): Nama bidang yang digunakan sebagai Distinct ID untuk pengguna di sistem Sensors Data. Nama bidang ini juga harus didefinisikan sebagai properti pengguna dalam parameter column. Nilai properti ini tidak boleh kosong.

  • isLoginId (Opsional): Menentukan apakah bidang yang digunakan sebagai Distinct ID pengguna di Sensors Data merupakan logon ID, yaitu pengenal unik untuk pengguna. Nilai yang valid: true dan false. Nilai bawaan: true.

Kode berikut memberikan contoh:

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

Jika type diatur ke item, parameter opsional berikut tersedia:

  • itemIdColumn (Opsional): Nama bidang yang digunakan sebagai Distinct ID untuk properti di sistem Sensors Data. Nama bidang ini juga harus didefinisikan sebagai properti dari properti dalam parameter column. Nilai properti ini tidak boleh kosong.

  • itemType (Opsional): Nama bidang yang digunakan sebagai itemType untuk properti di sistem Sensors Data. Jika nama bidang ini didefinisikan dalam parameter column, nilainya tidak boleh kosong, dan parameter typeIsColumn harus diatur ke true. Jika tidak, konstanta digunakan sebagai itemType Sensors.

  • typeIsColumn (Opsional): Menentukan apakah parameter itemType ada dalam daftar parameter column. Nilai yang valid: true dan false. Nilai bawaan: true.

Kode berikut memberikan contoh:

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

column

Mendefinisikan pemetaan antara bidang tabel sumber dan tabel tujuan menggunakan parameter index dan name.

  • name (Wajib): Nama bidang tabel tujuan.

  • index (Wajib): Indeks bidang tabel sumber. Misalnya, nilai indeks untuk kolom pertama di tabel sumber adalah 0.

Ya

Tidak ada

sdkDataAddress

Jalur penyimpanan data, yaitu URL yang digunakan Sensors Data untuk menerima data. Format URL-nya adalah: http://localhost:8106/sa?project=default. Anda dapat memperoleh URL ini dengan memilih Sensors Analytics > Basic Settings > Data Ingestion > Server Tracking > Copy HTTP Data Receiving Address.

Ya

Tidak ada

Appendix 2: Parameter lainnya

Sensors Data Writer memungkinkan Anda mengonversi tipe data suatu bidang sebelum menulisnya ke sumber data tujuan. Untuk melakukannya, tambahkan konverter data (dataConverters) dan definisikan tipe konverter (type) dalam skrip. Tabel berikut menjelaskan tipe konverter, parameter, serta memberikan contoh.

Tipe konverter

Deskripsi

Contoh

Deskripsi parameter

Date2Str

Mengonversi data bertipe Date ke tipe String.

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

pattern (Opsional): Format waktu data String setelah dikonversi dari data Date.

Date2Long

Mengonversi data bertipe Date ke tipe Long.

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

Tidak ada

Number2Str

Mengonversi data bertipe numerik ke tipe String.

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

Tidak ada

Str2Long

Mengonversi data bertipe String ke tipe Long.

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

Tidak ada

Str2Date

Mengonversi data bertipe String ke tipe Date.

// Contoh
"dataConverters":[
    {
        "type": "Str2Date",
        "param": {
            "pattern":"yyyy-MM-dd",
            "formats":["yyyyMMdd","yyyyMMddHHmmss"]
        }
    }
]
  • pattern (Opsional): Format waktu data Date setelah dikonversi. Format waktu bawaan mencakup: yyyy-MM-dd, yyyy-MM-dd HH:mm:ss, yyyy-MM-dd HH:mm:ss.SSS, yyyy-MM, yyyyMM, yyyyMMddHHmmss, dan yyyyMMddHHmmssSSS.

  • formats (Opsional): Array format waktu string lainnya. Parameter ini dapat digunakan jika data sumber memiliki beberapa format waktu yang tidak tercakup oleh parameter pattern.

BigInt2Date

Mengonversi data bertipe BigInt ke tipe Date.

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

Tidak ada

Str2Int

Mengonversi data bertipe String ke tipe Int.

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

Tidak ada

Str2Double

Mengonversi data bertipe String ke tipe Double.

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

Tidak ada

Str2BigDecimal

Mengonversi data bertipe String ke tipe BigDecimal.

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

Tidak ada

IfNull2Default

Jika nilai bidang bernilai null, atur nilai bidang tersebut ke konstanta yang didefinisikan dalam parameter default. Anda juga dapat menyarangkan konverter lain di dalam konverter IfNull2Default untuk lebih lanjut mengonversi konstanta tersebut ke tipe data target.

// Contoh
// Jika nilai kolom ini null atau string kosong, atur nilainya ke string "2021-07-01". Kemudian, konversi string ini ke tanggal dalam format yyyy-MM-dd, lalu konversi tanggal tersebut ke nilai long dalam milidetik.
"dataConverters":[
    {
        "type": "IfNull2Default",
        "param": {
            "default": "2021-07-01",
            "dataConverters": [
                {
                    "type": "Str2Date",
                    "param": {
                        "pattern":"yyyy-MM-dd"
                    }
                },
                {
                    "type": "Date2Long"
                }
            ]
        }
    }
]

dataConverters: Konverter data yang mengonversi nilai default dari parameter default ke tipe yang didefinisikan dalam parameter type. Anda dapat menyarangkan beberapa dataConverters untuk melakukan beberapa konversi data.

NotNull2Null

Jika nilai bidang tidak null, konversi nilai bidang tersebut menjadi null.

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

Tidak ada

IfElse

Ekspresi kondisional if yang memeriksa apakah nilai bidang memenuhi suatu kondisi. Jika kondisi terpenuhi, nilai yang didefinisikan dalam parameter value dikembalikan. Jika kondisi tidak terpenuhi, nilai yang didefinisikan dalam parameter else dikembalikan.

// Contoh
"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: Ekspresi kondisional if. Dieksekusi oleh mesin JavaScript dan harus mengembalikan nilai Boolean. Bidang saat ini yang sedang diimpor ke Sensors Data (targetColumnName), nilai yang diperoleh oleh plugin saat ini (value), parameter param yang dikonfigurasi di bawah dataConverters, dan kolom yang telah diselesaikan (struktur map) diteruskan ke ekspresi if. Anda dapat mengakses nilainya menggunakan targetColumnName, value, param, dan resolvedValues.

  • value: Nilai yang dikembalikan jika ekspresi kondisional if terpenuhi. Dieksekusi oleh mesin JavaScript. Bidang saat ini yang sedang diimpor ke Sensors Data (targetColumnName), nilai yang diperoleh oleh plugin saat ini (value), parameter param yang dikonfigurasi di bawah dataConverters, dan kolom yang telah diselesaikan (struktur map) diteruskan ke ekspresi value. Anda dapat mengakses nilainya menggunakan targetColumnName, value, param, dan resolvedValues.

  • else: Nilai yang dikembalikan jika ekspresi kondisional if tidak terpenuhi. Dieksekusi oleh mesin JavaScript. Bidang saat ini yang sedang diimpor ke Sensors Data (targetColumnName), nilai yang diperoleh oleh plugin saat ini (value), parameter param yang dikonfigurasi di bawah dataConverters, dan kolom yang telah diselesaikan (struktur map) diteruskan ke ekspresi else. Anda dapat mengakses nilainya menggunakan targetColumnName, value, param, dan resolvedValues.

  • sharedPool: Area bersama yang dieksekusi oleh mesin JavaScript. Variabel atau konstanta yang didefinisikan di sini dapat digunakan dalam ekspresi if, value, dan else.

IfNull2Column

Jika nilai bidang bernilai null, gunakan nilai kolom yang ditentukan oleh parameter targetColumnName sebagai nilai untuk bidang saat ini.

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

targetColumnName: Nama kolom yang akan diimpor ke Sensors Data.

Penting

Kolom yang ditentukan oleh targetColumnName harus dikonfigurasi sebelum kolom yang menggunakan konverter IfNull2Column.