Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ö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_NAMEdeğişken için vecolumn_name:field_namedepolanan 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ı
NULLkodlar. 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 İşlevi (SQL veya Python), JSON dizesini VARIANT türüne 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.
SQL
SELECT parse_json('{"key": 1, "data": [2, 3, "str"]}');
Piton
spark.range(1).select(parse_json(lit('{"key": 1, "data": [2, 3, "str"]}'))).display()
parse_json JSON dizesi yanlış biçimlendirilmişse, değişken boyutu sınırını aşıyorsa veya geçersizse işlev bir hata döndürür. Ayrıştırma hatası oluştuğunda try_parse_json döndürmek için işlevini (SQL veya NULL) kullanın.
SQL
SELECT try_parse_json('{"a" : invalid, "b" : 2}');
Piton
spark.range(1).select(try_parse_json(lit('{"a" : invalid, "b" : 2}'))).display()
Ç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.
Çeşitlemeler, JSON dizelerinden farklı tür dönüştürme ve NULLs işlemlerini işler. Bkz . Değişken türü atama kuralları ve Değişken null kuralları.
Not
Bu işlevleri PySpark DataFrames ile kullanmak için, içinden pyspark.sql.functionsiçeri aktar ın.
| 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ış VARIANTbir NULL depolayıp depolamadığını denetler. Giriş ifadesinin olup is nullolmadığı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 elementTypeVARIANT olarak çıkarılabilir. |
| schema_of_variant_agg | schema_of_json_agg | En az ortak tür tanımlanmamışsa, tür olarak VARIANTtüretilir. |
| variant_explode | patlamak |
pos, keyve value sütunlarını çıktılar. Bir dizi patlarken, çıkış anahtarı her zaman null'tır. |
| variant_explode_outer | explode_outer |
pos, keyve value sütunlarını çıktılar. Bir dizi patlarken, çıkış anahtarı her zaman null'tır. |