Todos os produtos
Search
Central de documentação

DataWorks:Sensors Data

Última atualização: Jun 27, 2026

O Data Integration do DataWorks permite gravar dados no Sensors Data usando o Sensors Data Writer. Esse writer aceita três tipos de dados — eventos, usuários e itens — e oferece conversão opcional de tipos de dados no nível do campo antes da gravação.

Limites

  • É possível adicionar uma fonte de dados do Sensors Data apenas na região China (Shenzhen). O suporte a outras regiões estará disponível em breve.

  • Não é possível ler dados diretamente do Sensors Data. Use um plugin como Hive ou HDFS para ler os dados, conforme o tipo de armazenamento da sua instância do Sensors Data.

Adicionar uma fonte de dados do Sensors Data

Antes de configurar uma tarefa de sincronização, adicione o Sensors Data como fonte de dados no DataWorks. Siga as etapas em Gerenciamento de fontes de dados. As descrições dos parâmetros estão disponíveis no console do DataWorks durante a adição da fonte de dados.

Configure uma tarefa de sincronização

O Sensors Data Writer aceita três tipos de dados, cada um mapeado para uma entidade do Sensors Data:

**Valor de type**

Entidade do Sensors Data

track

Evento

user

Usuário

item

Item (propriedade)

O valor de type define quais subparâmetros são obrigatórios na etapa do writer. Configure o writer usando o editor de código e mapeie as colunas de origem para os campos de destino com o parâmetro column.

Para obter o procedimento de configuração da tarefa, consulte Configurar uma tarefa no editor de código.

Exemplo de script e referência de parâmetros

Exemplo de script do writer

O exemplo a seguir grava dados de item (um catálogo de cursos) de uma fonte MySQL no Sensors Data. Os mapeamentos de campos usam índices de coluna baseados em zero da tabela de origem.

{
    "type": "job",
    "steps": [
        {
            "stepType": "mysql",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "sahistory",
            "parameter": {
                "type": "item",
                "item": {
                    "itemType": "course",
                    "typeIsColumn": false,
                    "itemIdColumn": "course_id"
                },
                "column": [
                    {
                        "name": "course_id",
                        "index": 0
                    },
                    {
                        "name": "course_name",
                        "index": 1
                    },
                    {
                        "name": "course_schedule",
                        "index": 2,
                        "dataConverters": [
                            {
                                "type": "Long2Date"
                            }
                        ]
                    }
                ],
                "sdkDataAddress": "http://bigdata-project.datasink.sensorsdata.cn/sa?project=default&token=1111111111111111"
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle": true,
            "concurrent": 2,
            "mbps": "12"
        }
    }
}

Parâmetros de nível superior do writer

Parâmetro

Descrição

Obrigatório

Padrão

type

Tipo de dado a ser gravado no Sensors Data. Valores válidos: track, user, item. Esse valor determina quais subparâmetros se aplicam na etapa do writer.

Sim

Nenhum

column

Mapeamentos de campos entre as tabelas de origem e de destino. Cada entrada exige name (nome do campo de destino) e index (índice da coluna de origem baseado em zero).

Sim

Nenhum

sdkDataAddress

URL que o Sensors Data usa para receber dados. Formato: http://localhost:8106/sa?project=default. Para obter essa URL, acesse Sensors Analytics > Basic Settings > Data Ingestion > Server Tracking > Copy HTTP Data Receiving Address.

Sim

Nenhum

Subparâmetros quando type é track

Use estes parâmetros para configurar dados de eventos.

Parâmetro

Descrição

Obrigatório

Padrão

distinctIdColumn

Nome do campo de origem a ser usado como Distinct ID do evento no Sensors Data. Também deve constar na lista column. O valor do campo não pode estar vazio.

Opcional

Nenhum

eventName

Nome do evento no Sensors Data.

Opcional

Nenhum

isLoginId

Indica se o campo Distinct ID é um ID de login (identificador único de usuário). Valores válidos: true, false.

Opcional

true

Exemplo:

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

Subparâmetros quando type é user

Use estes parâmetros para configurar dados de usuários.

Parâmetro

Descrição

Obrigatório

Padrão

distinctIdColumn

Nome do campo de origem a ser usado como Distinct ID do usuário no Sensors Data. Também deve constar na lista column. O valor do campo não pode estar vazio.

Opcional

Nenhum

isLoginId

Indica se o campo Distinct ID é um ID de login (identificador único de usuário). Valores válidos: true, false.

Opcional

true

Exemplo:

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

Subparâmetros quando type é item

Use estes parâmetros para configurar dados de itens (propriedades).

Parâmetro

Descrição

Obrigatório

Padrão

itemIdColumn

Nome do campo de origem a ser usado como Distinct ID do item no Sensors Data. Também deve constar na lista column. O valor do campo não pode estar vazio.

Opcional

Nenhum

itemType

Nome do tipo de item no Sensors Data. Se este campo aparecer em column, seu valor não pode estar vazio e typeIsColumn deve ser true. Caso contrário, use uma constante como tipo de item.

Opcional

Nenhum

typeIsColumn

Define se itemType é lido da lista column. Defina como false para usar um valor constante. Valores válidos: true, false.

Opcional

true

Exemplo:

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

Conversores de dados

O Sensors Data Writer permite converter tipos de dados antes de gravá-los no destino. Adicione um array dataConverters a uma entrada de campo em column e especifique o type do conversor.

Tipo de conversor

Converte de

Converte para

Parâmetros

Date2Str

Date

String

pattern (Opcional): Formato de hora de saída, por exemplo, yyyy-MM-dd.

Date2Long

Date

Long

Nenhum

Number2Str

Numérico

String

Nenhum

Str2Long

String

Long

Nenhum

Str2Date

String

Date

pattern (Opcional): Formato de data de saída. Formatos integrados: yyyy-MM-dd, yyyy-MM-dd HH:mm:ss, yyyy-MM-dd HH:mm:ss.SSS, yyyy-MM, yyyyMM, yyyyMMddHHmmss, yyyyMMddHHmmssSSS. formats (Opcional): Array de formatos adicionais de string de entrada para dados de origem com formatos de hora mistos.

BigInt2Date

BigInt

Date

Nenhum

Str2Int

String

Int

Nenhum

Str2Double

String

Double

Nenhum

Str2BigDecimal

String

BigDecimal

Nenhum

IfNull2Default

default: A constante a ser definida quando o valor do campo for nulo. dataConverters (Opcional): Conversores aninhados para transformar ainda mais o valor padrão.

NotNull2Null

Nenhum. Converte qualquer valor de campo não nulo para nulo.

IfElse

Consulte Parâmetros do IfElse.

IfNull2Column

targetColumnName: O nome da coluna cujo valor será utilizado quando o campo atual for nulo. A coluna referenciada deve ser configurada antes da coluna que utiliza este conversor.

Parâmetros do IfElse

O IfElse avalia uma expressão condicional JavaScript e retorna um de dois valores com base no resultado.

Parâmetro

Descrição

if

Uma expressão JavaScript que deve retornar um valor booleano. Tem acesso a targetColumnName, value, param e resolvedValues.

value

Valor retornado quando if for avaliado como true. Interpretado como JavaScript. Tem acesso às mesmas variáveis que if.

else

Valor retornado quando if for avaliado como false. Interpretado como JavaScript. Tem acesso às mesmas variáveis que if.

sharedPool

Um escopo JavaScript compartilhado. Variáveis e constantes definidas aqui ficam acessíveis em if, value e else.

Exemplo — validar o formato de um número de identificação e definir o campo como nulo se a verificação falhar:

"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)\";"
        }
    }
]

Exemplo de IfNull2Default

O exemplo a seguir trata um campo de timestamp nulo: defina o valor como "2021-07-01", converte a string para Date e, em seguida, converte o Date para Long (milissegundos).

"dataConverters": [
    {
        "type": "IfNull2Default",
        "param": {
            "default": "2021-07-01",
            "dataConverters": [
                {
                    "type": "Str2Date",
                    "param": {
                        "pattern": "yyyy-MM-dd"
                    }
                },
                {
                    "type": "Date2Long"
                }
            ]
        }
    }
]