Değişken, JSON dizelerinden ne kadar farklıdır?
Önemli
Bu özellik Genel Önizlemededir.
Bu makalede, değişken veri türüyle çalışırken söz dizimi ve semantikteki davranış değişiklikleri ve farklılıklar açıklanmaktadır. Bu makalede, Azure Databricks'te JSON dize verileriyle çalışmayı bildiğiniz varsayılır. Azure Databricks'i kullanmaya yeni başlayan kullanıcılar için, değişen veya bilinmeyen şema için esneklik gerektiren yarı yapılandırılmış verileri depoladığınızda JSON dizeleri üzerinden değişken kullanmanız gerekir. Bkz. Yarı yapılandırılmış verileri modelleme.
Databricks Runtime 15.3 ve üzerinde, yarı yapılandırılmış verileri kodlamak ve sorgulamak için değişken veri türünü kullanabilirsiniz. Databricks, JSON dizelerini kullanarak yarı yapılandırılmış verileri depolamak için değişken kullanılmasını önerir. Değişken için geliştirilmiş okuma ve yazma performansı, bazı kullanım örneklerinde yapılar ve diziler gibi yerel Spark karmaşık türlerinin yerini alabilmesini sağlar.
Değişken verileri nasıl sorgularsınız?
Değişken veriler alanları, alt alanları ve dizi öğelerini sorgulamak için aynı işleçleri kullanır.
Bir alanı sorgulamak için kullanın :
. Örneğin, column_name:field_name
.
Bir alt alanı sorgulamak için kullanın .
. Örneğin, column_name:field_name.subfield_name
.
Dizi öğesini sorgulamak için [n]
kullanın; burada n
öğenin tamsayı dizin değeridir. Örneğin, dizideki ilk değeri sorgulamak için. column_name:array_name[0]
Aşağıdaki farklar, JSON dizelerinden değişkene yükseltirken var olan sorguları bozabilir:
- Tüm değişken yol öğeleri büyük/küçük harfe duyarlı bir şekilde eşleştirilir. JSON dizeleri büyük/küçük harfe duyarlı değildir. Bu,
column_name:FIELD_NAME
değişken için vecolumn_name:field_name
depolanan verilerde farklı alanlar aramak anlamına gelir. - Söz
[*]
dizimi, dizideki tüm öğelerin tanımlanmasını veya paketten çıkarılmasını desteklemez. - Değişken, değerleri JSON dizelerinden farklı
NULL
kodlar. Bkz . Değişken null kuralları. - Değişken sütunlarında bazı işlemler için sınırlamalar vardır. Bkz. Sınırlamaları.
JSON dizelerini değişkene ve değişkenden dönüştürme
Databricks Runtime 15.3 ve üzerinde işlevin to_json
türleri JSON dizelerine dönüştürmeye VARIANT
yönelik ek işlevleri vardır. JSON dizesine dönüştürülürken VARIANT
seçenekler yoksayılır. Bkz. to_json.
parse_json
işlevi bir JSON dizesini yazacak şekilde VARIANT
dönüştürür. mantıksal tersi parse_json(json_string_column)
olsa to_json(variant_column)
da, aşağıdaki dönüştürme kuralları bunun neden tam ters olmadığını açıklar:
- Boşluk mükemmel bir şekilde korunmaz.
- Anahtarların sıralanması rastgeledir.
- Sayılarda sondaki sıfırlar kesilebilir.
JSON dizesi yanlış biçimlendirilmişse veya değişken boyut sınırını aşıyorsa parse_json
işlevi bir hata döndürür.
try_parse_json
Bunun yerine ayrıştırma hatası oluştuğunda bir NULL
döndürmek için işlevini kullanın.
Çeşitlemelerle çalışmaya yönelik SQL işlevleri nelerdir?
Databricks Runtime 15.3 ve üzerinde kullanılabilen Apache Spark SQL işlevleri, değişken verilerle etkileşime yönelik yöntemler sağlar. Aşağıdaki tabloda yeni işlev, karşılık gelen JSON dizesi işlevi ve davranış farklılıklarına ilişkin notlar yer almaktadır.
Not
Bu işlevleri PySpark DataFrames ile kullanmak için, içinden pyspark.sql.functions
içeri aktar ın.
variant_explode
ve variant_explode_outer
PySpark'ta desteklenmez.
Variant işlevi | JSON dize işlevi | Notlar |
---|---|---|
variant_get | atama ve get_json_object | bir ifade, yol ve tür alır. Değişken yolları, atama ve null değerleri için tüm kuralları izler. |
try_variant_get | try_cast ve get_json_object | bir ifade, yol ve tür alır. Değişken yolları, atama ve null değerleri için tüm kuralları izler. |
is_variant_null | null | İfadenin kodlanmış VARIANT bir NULL depolayıp depolamadığını denetler. Giriş ifadesinin olup is null olmadığını denetlemek için kullanınNULL . |
schema_of_variant | schema_of_json | bir ARRAY<elementType> için şema belirlenirken, verilerde çakışan türler varsa elementType VARIANT olarak çıkarılabilir. |
schema_of_variant_agg | schema_of_json_agg | En az ortak tür tanımlanmamışsa, tür olarak VARIANT türetilir. |
variant_explode | patlamak |
pos , key ve value sütunlarını çıktılar. Bir dizi patlarken, çıkış anahtarı her zaman null'tır. |
variant_explode_outer | explode_outer |
pos , key ve value sütunlarını çıktılar. Bir dizi patlarken, çıkış anahtarı her zaman null'tır. |
Çeşitlemeler, JSON dizelerinden farklı tür dönüştürme ve NULL
s işlemlerini işler. Bkz . Değişken türü atama kuralları ve Değişken null kuralları.