Aracılığıyla paylaş


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

Azure Databricks, iç içe veri türleriyle çalışırken kullanıma sunulan bazı dönüştürmeleri iyileştirir. 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

Select tüm iç içe alanlar

Belirli bir alan içindeki tüm alanların select edilmesi 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 column içine yerleştir

Veri kaynağındaki tüm alanları tek bir columnolarak 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 yerleştirilmiş bir column adlandırılmış alanı Select

column'den gelen iç içe alanlar için []'dan select'e kadar 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

ARRAY ve MAP türü columns'ten values'i açmak için explode() işlevini kullanın.

ARRAY columns values listolarak depolayın. 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 columns values sıralı anahtar-değer çiftleri olarak depolar. explode()ile paketten çıkarıldığında her anahtar bir column olur ve values satır olur.

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

list veya set'den bir dizi oluşturun

Bir column'in values'sini diziye dönüştürmek için collect_list() veya collect_set() işlevlerini kullanın. collect_list() columniçindeki tüm values toplarken collect_set() yalnızca benzersiz valuestoplar.

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;

Dizideki bir haritadan Selectcolumn

Ayrıca, bir dizi içinde yer alan haritalardaki alanlara erişmek için noktalı gösterimi (.) de kullanabilirsiniz. Belirtilen alan için tüm values elemanlarını 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'den values 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

Sorgunun veya DataFrame'in tüm içeriğini kodlamak için, bunu ile struct(*)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 schema 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

Get not defteri

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

Get not defteri

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

Get dizüstü bilgisayar