Qual é a diferença entre a variante e o site JSON strings?
Visualização
Esse recurso está em Public Preview.
Este artigo descreve as alterações de comportamento e as diferenças de sintaxe e semântica ao trabalhar com o tipo de dados variante. Este artigo pressupõe que o senhor esteja familiarizado com o trabalho com os dados das cadeias de caracteres JSON em Databricks. Para os usuários que não conhecem o site Databricks, é recomendável usar a variante em vez de JSON strings sempre que armazenar dados semiestruturados que exijam flexibilidade para alterar ou desconhecer o esquema. Consulte Modelo de dados semiestruturados.
Em Databricks Runtime 15.3 e acima, o senhor pode usar o tipo de dados variante para codificar e consultar dados semiestruturados. Databricks recomenda a variante como um substituto para o armazenamento de dados semiestruturados JSON strings. O desempenho aprimorado de leitura e gravação da variante permite que ela substitua os tipos complexos nativos do Spark, como structs e arrays, em alguns casos de uso.
Como você consulta dados de variantes?
Variante uso de dados os mesmos operadores para consultar campos, subcampos e elementos de matriz.
Para consultar um campo, use :
. Por exemplo, column_name:field_name
.
Para consultar um subcampo, use .
. Por exemplo, column_name:field_name.subfield_name
.
Para consultar um elemento de matriz, use [n]
em que n
é o valor do índice inteiro do elemento. Por exemplo, para consultar o primeiro valor em uma matriz, column_name:array_name[0]
.
As diferenças a seguir podem interromper as consultas existentes ao atualizar de strings JSON para variantes:
- Todos os elementos do caminho variante são combinados de forma que diferencia maiúsculas de minúsculas. JSON strings não diferenciam maiúsculas de minúsculas. Isso significa que, para a variante,
column_name:FIELD_NAME
ecolumn_name:field_name
procuram campos diferentes nos dados armazenados. - A sintaxe
[*]
não é compatível com a identificação ou descompactação de todos os elementos em uma matriz. - A variante codifica os valores
NULL
de forma diferente de JSON strings. Consulte Regras nulas da variante. - As colunas de variantes têm limitações para algumas operações. Consulte Limitações.
Converter strings JSON de e para variantes
Em Databricks Runtime 15.3 e acima, a função to_json
tem funcionalidade adicional para converter tipos VARIANT
para JSON strings. As opções são ignoradas na conversão de VARIANT
para JSON strings. Veja to_json.
A função parse_json
transforma uma cadeia de caracteres JSON em um tipo VARIANT
. Embora parse_json(json_string_column)
seja o inverso lógico de to_json(variant_column)
, as regras de conversão a seguir descrevem por que não é exatamente o inverso:
- O espaço em branco não está perfeitamente preservado.
- A ordem das chaves é arbitrária.
- Os zeros à direita em números podem ser truncados.
A função parse_json
retornará um erro se as cadeias de caracteres JSON estiverem malformadas ou excederem o limite de tamanho da variante. Em vez disso, use a função try_parse_json
para retornar NULL
quando ocorrer um erro na análise.
Quais são as funções SQL para trabalhar com variantes?
Apache Spark SQL As funções disponíveis em Databricks Runtime 15.3 e acima fornecem métodos para interagir com dados de variantes. A tabela a seguir inclui a nova função, a função correspondente das cadeias de caracteres JSON e observações sobre as diferenças de comportamento.
Para usar essas funções com o PySpark DataFrames, importe-as de pyspark.sql.functions
. variant_explode
e variant_explode_outer
não são compatíveis com o PySpark.
Função variante | JSON função de cadeias de caracteres | Notas |
---|---|---|
Usa uma expressão, um caminho e um tipo. Segue todas as regras para caminhos de variantes, conversão e valores nulos. | ||
Usa uma expressão, um caminho e um tipo. Segue todas as regras para caminhos de variantes, conversão e valores nulos. | ||
Verifica se a expressão está armazenando um | ||
Ao determinar o esquema para um | ||
Quando nenhum tipo menos comum é identificado, o tipo é derivado como | ||
Produz as colunas | ||
Produz as colunas |
As variantes tratam a conversão e NULL
s de forma diferente das strings JSON. Consulte Regras de conversão do tipo variante e Regras nulas da variante.