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.
Azure Databricks, iç içe veri türleriyle çalışırken bazı dönüşümleri kutudan çıktığı gibi optimize eder. Aşağıdaki kod örnekleri, Azure Databricks'te karmaşık ve iç içe veri türleriyle çalışmaya yönelik desenleri gösterir.
İç içe verilere erişmek için nokta gösterimi
İç içe yerleştirilmiş bir alana erişmek için nokta gösterimi (.) kullanabilirsiniz.
Python
df.select("column_name.nested_field")
SQL
SELECT column_name.nested_field FROM table_name
İç içe tüm alanları seçme
Belirli bir alan içindeki tüm alanları seçmek için yıldız işlecini (*) kullanın.
Not
Bu yalnızca belirtilen derinlikte iç içe yerleştirilmiş alanları açar.
Python
df.select("column_name.*")
SQL
SELECT column_name.* FROM table_name
Yeni iç içe alan oluşturma
İşlevi struct() kullanarak yeni bir iç içe alan oluşturun.
Python
from pyspark.sql.functions import struct, col
df.select(struct(col("field_to_nest").alias("nested_field")).alias("column_name"))
SQL
SELECT struct(field_to_nest AS nested_field) AS column_name FROM table_name
Tüm alanları bir sütuna yerleştirme
Veri kaynağındaki tüm alanları tek bir sütun olarak iç içe yerleştirmek için yıldız işlecini (*) kullanın.
Python
from pyspark.sql.functions import struct
df.select(struct("*").alias("column_name"))
SQL
SELECT struct(*) AS column_name FROM table_name
İç içe sütundan bir adlandırılmış alan seçin
Sütundan iç içe alanları seçmek için köşeli parantez [] kullanın.
Python
from pyspark.sql.functions import col
df.select(col("column_name")["field_name"])
SQL
SELECT column_name["field_name"] FROM table_name
Bir harita veya diziden iç içe öğeleri patlatma
explode() ve ARRAY tür sütunlarından değerleri açmak için MAP işlevini kullanın.
ARRAY sütunlar değerleri liste olarak depolar. ile explode()paketten çıkarıldığında, her değer çıktıda bir satıra dönüşür.
Python
from pyspark.sql.functions import explode
df.select(explode("array_name").alias("column_name"))
SQL
SELECT explode(array_name) AS column_name FROM table_name
MAP sütunlar değerleri sıralı anahtar-değer çiftleri olarak depolar.
explode()ile paketten çıkarıldığında her anahtar bir sütuna, değerler de satırlara dönüşür.
Python
from pyspark.sql.functions import explode
df.select(explode("map_name").alias("column1_name", "column2_name"))
SQL
SELECT explode(map_name) AS (column1_name, column2_name) FROM table_name
Listeden veya kümeden dizi oluşturma
Bir sütunun değerlerini diziye dönüştürmek için collect_list() veya collect_set() işlevlerini kullanın.
collect_list() sütundaki tüm değerleri toplarken collect_set() yalnızca benzersiz değerler toplar.
Not
Spark, her iki işlemden de kaynaklanan dizideki öğelerin sırasını garanti etmez.
Python
from pyspark.sql.functions import collect_list, collect_set
df.select(collect_list("column_name").alias("array_name"))
df.select(collect_set("column_name").alias("set_name"))
SQL
SELECT collect_list(column_name) AS array_name FROM table_name;
SELECT collect_set(column_name) AS set_name FROM table_name;
Bir dizideki bir haritadan sütun seçin
Ayrıca, bir dizi içinde yer alan haritalardaki alanlara erişmek için noktalı gösterimi (.) de kullanabilirsiniz. Bu, belirtilen alan için tüm değerleri içeren bir dizi döndürür.
Aşağıdaki veri yapısını göz önünde bulundurun:
{
"column_name": [
{ "field1": 1, "field2": "a" },
{ "field1": 2, "field2": "b" }
]
}
Aşağıdaki sorguyla field1 değerlerini dizi olarak döndürebilirsiniz:
Python
df.select("column_name.field1")
SQL
SELECT column_name.field1 FROM table_name
İç içe verileri JSON'a dönüştürme
to_json Karmaşık bir veri türünü JSON'a dönüştürmek için işlevini kullanın.
Python
from pyspark.sql.functions import to_json
df.select(to_json("column_name").alias("json_name"))
SQL
SELECT to_json(column_name) AS json_name FROM table_name
Sorgu veya DataFrame'in tüm içeriğini kodlamak için bunu struct(*) ile birleştirin.
Python
from pyspark.sql.functions import to_json, struct
df.select(to_json(struct("*")).alias("json_name"))
SQL
SELECT to_json(struct(*)) AS json_name FROM table_name
Not
Azure Databricks, tümleşik sistemlerle birlikte çalışabilirlik için karmaşık veri türlerinin dönüştürülmesini de destekler to_avroto_protobuf .
JSON verilerini karmaşık verilere dönüştürme
from_json JSON verilerini yerel karmaşık veri türlerine dönüştürmek için işlevini kullanın.
Not
JSON verileri için şemayı belirtmeniz gerekir.
Python
from pyspark.sql.functions import from_json
schema = "column1 STRING, column2 DOUBLE"
df.select(from_json("json_name", schema).alias("column_name"))
SQL
SELECT from_json(json_name, "column1 STRING, column2 DOUBLE") AS column_name FROM table_name
Not defteri: karmaşık veri türlerini dönüştürme
Aşağıdaki not defterleri Python, Scala ve SQL için karmaşık veri türleriyle çalışmaya yönelik örnekler sağlar.