JSONEachRow (NDJSON). Esse formato interpreta as chaves em cada linha JSON como colunas. Por exemplo:
Lendo JSON como um objeto
JSONEachRow lê JSON delimitado por quebras de linha, com cada linha sendo lida como um objeto separado, mapeado para uma linha da tabela, e cada chave para uma coluna. Isso é ideal para casos em que o JSON é previsível, com um único tipo para cada coluna.
Em contraste, JSONAsObject trata cada linha como um único objeto JSON e o armazena em uma única coluna, do tipo JSON, o que o torna mais adequado para payloads JSON aninhados e casos em que as chaves são dinâmicas e podem ter mais de um tipo.
Use JSONEachRow para inserts linha a linha e JSONAsObject ao armazenar dados JSON flexíveis ou dinâmicos.
Compare o exemplo acima com a consulta a seguir, que lê os mesmos dados como um objeto JSON por linha:
JSONAsObject é útil para inserir linhas em uma tabela usando uma única coluna do tipo objeto JSON, por exemplo.
JSONAsObject também pode ser útil para ler JSON delimitado por quebras de linha nos casos em que a estrutura dos objetos é inconsistente. Por exemplo, se uma chave varia de tipo entre as linhas (às vezes pode ser uma string, mas em outras, um objeto). Nesses casos, o ClickHouse não consegue inferir um esquema estável usando JSONEachRow, e JSONAsObject permite que os dados sejam ingeridos sem impor tipos rígidos, armazenando cada linha JSON inteira em uma única coluna. Por exemplo, observe como JSONEachRow falha no exemplo a seguir:
JSONAsObject pode ser usado neste caso, pois o tipo JSON aceita vários tipos para a mesma subcoluna.
Array de objetos JSON
JSONEachRow (inserindo os dados do arquivo list.json):
Chaves de objetos JSON
JSONObjectEachRow:
Especificando valores de chave de objetos pai
file():
id foi preenchida corretamente com os valores das chaves.
Arrays JSON
JSONCompactEachRow:
Importando colunas individuais de arrays JSON
JSONColumns para analisar dados formatados desta forma:
JSONCompactColumns:
Salvando objetos JSON em vez de analisá-los
String (ou JSON) em vez de analisá-los. Isso pode ser útil ao lidar com uma lista de objetos JSON com estruturas diferentes. Vamos usar este arquivo como exemplo, em que temos vários objetos JSON diferentes dentro de uma lista principal:
JSONAsString para preservar os objetos JSON em vez de interpretá-los:
JSONAsString funciona perfeitamente bem em casos em que temos arquivos formatados com um objeto JSON por linha (geralmente usados com o formato JSONEachRow).
Esquema para objetos aninhados
Array, JSON ou Tuple) para carregar dados:
Acessando objetos JSON aninhados
Ignorando colunas desconhecidas
month:
BSON
out.bson.