Aracılığıyla paylaş


Karmaşık veri türlerini dönüştürme

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.

Karmaşık veri türlerini dönüştürme Python not defteri

Dizüstü bilgisayar al

Karmaşık veri türlerini dönüştürme Scala not defteri

Dizüstü bilgisayar al

Karmaşık veri türlerini dönüştürme SQL not defteri

Dizüstü bilgisayar al