Todos os produtos
Search
Central de documentação

DataWorks:Migrar dados formatados em JSON do OSS para o MaxCompute

Última atualização: Jul 05, 2026

Use o DataWorks Data Integration para carregar um arquivo JSON do Object Storage Service (OSS) no MaxCompute e extrair valores de campos com a função GET_JSON_OBJECT.

Este guia armazena todo o documento JSON como uma única coluna do tipo string. Após o carregamento, a função GET_JSON_OBJECT permite consultar campos individuais por expressão JSONPath sem reestruturar a tabela.

Pré-requisitos

Antes de começar, verifique se você tem:

  • MaxCompute e DataWorks ativados. Consulte Ativar MaxCompute e DataWorks

  • Uma fonte de dados do MaxCompute adicionada no DataWorks. Consulte Adicionar uma fonte de dados do MaxCompute

  • Um workflow criado no workspace do DataWorks (este guia utiliza um workspace no modo básico). Consulte Criar um workflow

  • Um arquivo TXT com dados JSON enviado para um bucket do OSS. Este guia usa um bucket na região China (Shanghai), com um arquivo chamado applog.txt que contém o seguinte JSON:

    {
        "store": {
            "book": [
                 {
                    "category": "reference",
                    "author": "Nigel Rees",
                    "title": "Sayings of the Century",
                    "price": 8.95
                 },
                 {
                    "category": "fiction",
                    "author": "Evelyn Waugh",
                    "title": "Sword of Honour",
                    "price": 12.99
                 },
                 {
                     "category": "fiction",
                     "author": "J. R. R. Tolkien",
                     "title": "The Lord of the Rings",
                     "isbn": "0-395-19395-8",
                     "price": 22.99
                 }
              ],
              "bicycle": {
                  "color": "red",
                  "price": 19.95
              }
        },
        "expensive": 10
    }

Etapa 1: Adicionar uma fonte de dados do OSS

Adicione o bucket do OSS como fonte de dados no DataWorks. Consulte Adicionar uma fonte de dados do OSS.

Etapa 2: Criar uma tabela para armazenar os dados JSON

Crie uma tabela do MaxCompute com uma única coluna do tipo string. Cada linha armazena um documento JSON completo. Posteriormente, consulte campos individuais usando GET_JSON_OBJECT — não é necessário definir uma coluna por campo nesta etapa.

  1. Faça login no console do DataWorks. Na barra de navegação superior, selecione a região. No painel de navegação à esquerda, escolha Data Development and O&M > Data Development. Selecione o workspace e clique em Go to Data Development.

  2. No painel de navegação à esquerda, clique em Data source. Na página Data Source, clique em Add Data Source para adicionar um projeto do MaxCompute.

  3. Na caixa de diálogo Add Data Source, preencha os parâmetros e clique em Associate Purchased Resource Group.

  4. Na página DataStudio, passe o ponteiro sobre o ícone image..png e escolha Create Table > MaxCompute > Table.

  5. Na caixa de diálogo Create Table, configure Path e Name e clique em Create.

    Se houver várias fontes de dados do MaxCompute associadas ao DataStudio, selecione a fonte correta na caixa de diálogo Create Table .
  6. Na página de edição da tabela, clique em DDL Statement.

  7. Na caixa de diálogo DDL, insira a seguinte instrução e clique em Generate Table Schema:

    CREATE TABLE mqdata (mq_data string);

    Isso cria uma única coluna string (mq_data) que armazena cada documento JSON como texto bruto.

  8. Na caixa de diálogo Confirm, clique em OK.

  9. Na seção General, defina o parâmetro Display Name e clique em Commit to Production Environment.

    Para workspaces no modo padrão, clique em Commit to Development Environment e em Commit to Production Environment .

Etapa 3: Criar uma tarefa de sincronização em lote

Configure um nó de sincronização offline do DataWorks para ler applog.txt do OSS e gravá-lo na tabela mqdata.

  1. Na página de análise de dados, clique com o botão direito no workflow e escolha Create Node > Data Integration > Offline synchronization.

  2. Na caixa de diálogo create a node, insira um nome para o nó e clique em submit.

  3. Na barra de navegação superior, clique no ícone Conversion script para alternar para o modo de script.

  4. No modo de script, clique no ícone **.

  5. Na caixa de diálogo import Template, selecione o SOURCE type, a data source, o target type e a data source e clique em confirm.

  6. Substitua o JSON gerado pela configuração a seguir e clique no ícone 运行 para executar a tarefa:

    {
        "type": "job",
        "steps": [
            {
                "stepType": "oss",
                "parameter": {
                    "fieldDelimiterOrigin": "^",
                    "nullFormat": "",
                    "compress": "",
                    "datasource": "OSS_userlog",
                    "column": [
                        {
                            "name": 0,
                            "type": "string",
                            "index": 0
                        }
                    ],
                    "skipHeader": "false",
                    "encoding": "UTF-8",
                    "fieldDelimiter": "^",
                    "fileFormat": "binary",
                    "object": [
                        "applog.txt"
                    ]
                },
                "name": "Reader",
                "category": "reader"
            },
            {
                "stepType": "odps",
                "parameter": {
                    "partition": "",
                    "isCompress": false,
                    "truncate": true,
                    "datasource": "odps_source",
                    "column": [
                        "mqdata"
                    ],
                    "emptyAsNull": false,
                    "table": "mqdata"
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "version": "2.0",
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        },
        "setting": {
            "errorLimit": {
                "record": ""
            },
            "speed": {
                "concurrent": 2,
                "throttle": false
            }
        }
    }

    Principais parâmetros:

    Parâmetro

    Valor

    Descrição

    fileFormat

    binary

    Lê o arquivo como bytes brutos, sem análise no nível de campo. O sistema trata o arquivo inteiro como um único registro.

    fieldDelimiter

    ^

    Delimitador definido para o arquivo de origem. Como fileFormat é binary, o arquivo é carregado como um registro inteiro, independentemente deste valor.

    datasource (leitor)

    OSS_userlog

    Nome da fonte de dados do OSS no DataWorks. Substitua pelo nome real configurado.

    datasource (gravador)

    odps_source

    Nome da fonte de dados do MaxCompute no DataWorks. Substitua pelo nome real configurado.

    truncate

    true

    Limpa a tabela de destino antes de cada execução. Defina como false para anexar dados.

    concurrent

    2

    Número de canais paralelos para a transferência.

Verificar o resultado

Crie um nó ODPS SQL para consultar os dados carregados e extrair um campo JSON.

  1. Clique com o botão direito no workflow e escolha new > MaxCompute > ODPS SQL.

  2. Na caixa de diálogo create a function, insira um nome de função e clique em submit.

  3. Na aba de configuração, insira as seguintes instruções SQL:

    -- Query all rows in the mqdata table
    SELECT * FROM mqdata;
    
    -- Extract the value of the "expensive" field from each JSON document
    SELECT GET_JSON_OBJECT(mqdata.MQdata, '$.expensive') FROM mqdata;
  4. Clique no ícone ** para executar as instruções.

  5. Visualize os resultados em operation Log. A primeira consulta retorna o JSON bruto armazenado em cada linha. A segunda extrai o campo de nível superior expensive. Com base nos dados de exemplo, a saída esperada para a segunda consulta é:

    10

Próximos passos

  • Para consultar campos aninhados, use uma expressão JSONPath mais longa em GET_JSON_OBJECT. Por exemplo, $.store.bicycle.color retorna red nos dados de amostra.

  • Para automatizar carregamentos recorrentes, agende o nó de sincronização como tarefa periódica no DataWorks.