Nesta trilha de aprendizagem conectada, criaremos uma cadeia que ilustra como converter um conjunto de dados JSON com objetos aninhados em CSV. Além disso, exploraremos como usar uma junção cartesiana para nivelar essa estrutura aninhada.
| Objetivo principal de aprendizado | Capacidade do Conector JSON para objetos JSON aninhados |
| Objetivos de aprendizado secundários | Comando de consulta avançada de transformação tabular |
| Pré-requisitos | Configurar a conexão do conector JSON Configurar a conexão do conector HTTP |
| Modelo de suporte | CLP | Acesso a objetos aninhados JSON |
Etapa 1: Criar uma corrente
- Adicionar uma nova corrente
- Nomear a cadeia: CLP | Acessando objetos aninhados JSON.
- Crie uma variável de cadeia e preencha-a usando os seguintes valores:
- Nome: cv-JSON-Donut
- Valor: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/donut.json
- Salvar a corrente
Etapa 2: Recuperar dados JSON
Use o Conector HTTP para recuperar dados relacionados ao efetivo de pessoal no formato JSON de um local da Web.
- Adicionar um comando GET do conector HTTP ao nó Start
- Para configurar o comando, você deve usar os seguintes valores:
Nome GET - Dados JSON Nome do usuário <deixar em branco> Senha <deixar em branco> Certificado CA <deixar em branco> Certificado <deixar em branco> Chave privada do certificado <deixar em branco> Mostrar resposta Verificado URL cv-JSON-Donut Variável de cadeia Cadeia de consulta <deixar em branco> Tipo de conteúdo aplicativo/json Resposta
<deixar em branco> - Salvar o comando
Etapa 3: obter dados JSON não aninhados
Essa cadeia usa o comando Object to CSV do conector JSON para extrair o nome e as chaves de tipo, que não estão aninhadas, do objeto JSON.
Nota: É importante que você entenda o esquema do conjunto de dados JSON. Um comando List File Content do conector File Utilities pode ser utilizado para visualizar o esquema. Para referência, aqui está o esquema do JSON "donut":
Esquema
{"id": "0001", "type": "donut", "name": "Cake", "ppu":0.55, "batters": {"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"}, {"id":"1003","type":"Blueberry"},{"id":"1004","type":"Devil's Food"}]}, "topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"}, {"id":"5005","type":"Sugar"},{"id":"5007","type":"Powdered Sugar"}, {"id":"5006","type":"Chocolate with Sprinkles"},{"id":"5003","type":"Chocolate"}, {"id":"5004","type":"Maple"}] } - Adicione um objeto ao comando CSV do conector JSON à cadeia.
- Conecte o nó inicial (GET - JSON Data) ao comando Object to CSV.
- Abra o comando e configure-o usando os seguintes valores.
- Você pode nomear o comando: Object to CSV - Name & Type.
- Para o parâmetro JSON Data, selecione Response Output do comando GET - JSON Data.
- Deixe em branco os parâmetros Input Text e Path to root.
- Deixe o parâmetro Multi-value Delimiter (Delimitador de vários valores) como uma vírgula (,).
- Marque a caixa de seleção Preview Result.
- Selecione Pipe para o parâmetro Delimiter.
A seção Columns é usada para especificar quais elementos do objeto JSON serão extraídos para um conjunto de dados em colunas (CSV). - Clique uma vez no botão Add para adicionar duas colunas.
- Para a primeira coluna, insira name para o Column Name e .name para os parâmetros JSONPath.
- Para a segunda coluna, insira type para a coluna Type e .type para os parâmetros JSONPath.
- Salvar o comando
Etapa 4: obter a lista de toppings
Use o comando Array to CSV do conector JSON para obter a lista de toppings na matriz JSON aninhada.
- Adicione um comando Array to CSV do conector JSON à Cadeia.
- Conecte o comando GET - JSON Data ao comando Array to CSV.
- Configure o comando usando os seguintes valores:
- Nomeie o comando: Array to CSV - Toppings.
- Para o parâmetro JSON Data, selecione a resposta Saída do comando GET - JSON Data.
- Deixe o parâmetro Input Text em branco.
- Para o parâmetro Path to root, digite topping (em minúsculas) e pressione Enter. No topo de, você deve entrar com um sinal de igual antes dele em uma bolha cinza.
- Deixe o parâmetro Filter em branco.
- Deixe o valor padrão de comma (,) para o parâmetro Multi-value Delimiter (Delimitador de vários valores).
- Marque a caixa de seleção Preview Result.
- Na seção Columns, especificamos a(s) chave(s) na matriz JSON para a(s) qual(is) você deve extrair o(s) valor(es) para uma coluna no CSV resultante.
- Para o primeiro parâmetro Column name, insira ToppingID e, no parâmetro JSONPath, insira .id.
- Para o segundo parâmetro Column name, insira ToppingType, e no parâmetro JSONPath, insira .type.
- Para o parâmetro Delimiter, selecione Pipe.
- Salvar o comando
Etapa 5: obter uma lista de rebatedores
Essa cadeia usa o comando Array to CSV no conector JSON para que você obtenha a lista de batedores na matriz JSON aninhada. Usaremos dois comandos Array to CSV para extrair os batedores e as coberturas devido ao aninhamento diferente de cada array.
O uso de um comando Object to CSV com JSONPaths aninhados (por exemplo, .topping[*].type) cria valores de várias partes, que são mais difíceis de usar em um conjunto de dados CSV.
- Adicione um comando Array to CSV do conector JSON à cadeia.
- Conecte o comando GET - JSON Data ao comando Array to CSV.
- Configure o comando usando os seguintes valores:
- Nomeie o comando: Array to CSV - Batters.
- Para o parâmetro JSON Data, selecione Response Output do comando GET - JSON Data.
- Deixe o parâmetro Input Text em branco.
- Para o parâmetro Path to root, digite batters (todas as letras minúsculas) e pressione Enter. Em seguida, digite batter (todas as letras minúsculas) e pressione Enter.
Os batedores e batter devem aparecer nesta ordem em duas bolhas cinza. - Deixe o parâmetro Filter em branco.
- Deixe o valor padrão, comma (,), para o parâmetro Multi-value Delimiter.
- Verifique a opção Preview Result.
- Na seção Columns, especificamos a(s) chave(s) na matriz JSON para extrair o(s) valor(es) de uma coluna no CSV resultante.
- Para o parâmetro Column name, insira BatterID e, no parâmetro JSONPath, insira .id.
- Para o parâmetro Column name, insira BatterType e, no parâmetro JSONPath, insira .type.
- Para o parâmetro Delimiter, selecione Pipe.
- Salvar o comando
Etapa 6: Achatar os dados
Usaremos uma "união cartesiana" em um comando Advanced Query do Tabular Transformation Connector para nivelar o conjunto de dados. Uma combinação cartesiana cria todas as combinações possíveis dos elementos que extraímos usando os comandos Object to CSV e Array to CSV.
- Adicione um comando Advanced Query do conector Tabular Transformation à cadeia.
- Conecte cada um dos Objeto a CSV - Nome e tipo, Matriz a CSV - Rebatedores, e Matriz a CSV - Toppings Comandos para o comando Consulta avançada.
- Configure o comando usando os seguintes valores:
- Nomeie o comando: Advanced Query - Flatten JSON Object.
- Na seção Tables, clique duas vezes no botão Add para que haja três tabelas disponíveis.
Preencha as tabelas usando os seguintes valores:Arquivo Nome da tabela Selecione o arquivo convertido Saída do comando Object to CSV - Name & Type. Nome Selecione o arquivo convertido Saída da matriz para CSV - Comando Batters. Batedor Selecione a saída do arquivo convertido do comando Array to CSV - Toppings. Topping - Para o parâmetro Query, insira o seguinte:
Select Type as dessert_type, Name as variety, BatterType, ToppingType from Name, Batter, Topping - Para os parâmetros Input Delimiter e Output Delimiter, especifique Pipe.
- Marque a caixa de seleção Preview results.
- Salvar o comando
Etapa 7: Testar a cadeia e revisar os resultados AAA
- Publicar a cadeia
- Clique em Execute e, em seguida, selecione Run Chain.
- Depois que a cadeia for concluída,
- Clique no nó Advanced Query - Flatten JSON Object e selecione a guia Outputs.
- Confirme que a contagem de registros é 28.
- Selecione a guia Logs e confirme se a visualização dos dados corresponde à captura de tela a seguir.
Para saber mais sobre a transformação de dados usando Cadeias, consulte Connected Learning Paths - Transformation Introduction.