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_NAMEecolumn_name:field_nameprocuram 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 
NULLde 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 NULLs de forma diferente das strings JSON. Consulte Regras de conversão do tipo variante e Regras nulas da variante.