Udostępnij za pośrednictwem


Przekształcanie złożonych typów danych

Podczas pracy z zagnieżdżonymi typami danych usługa Azure Databricks optymalizuje pewne przekształcenia gotowe do użycia. W poniższych przykładach kodu przedstawiono wzorce pracy ze złożonymi i zagnieżdżonym typami danych w usłudze Azure Databricks.

Notacja kropkowa na potrzeby uzyskiwania dostępu do danych zagnieżdżonych

Możesz użyć notacji kropkowej (.), aby uzyskać dostęp do zagnieżdżonego pola.

Python

df.select("column_name.nested_field")

SQL

SELECT column_name.nested_field FROM table_name

Zaznacz wszystkie zagnieżdżone pola

Użyj operatora gwiazdki (*), aby wybrać wszystkie pola w danym polu.

Uwaga

To tylko rozpakowywanie zagnieżdżonych pól na określonej głębokości.

Python

df.select("column_name.*")

SQL

SELECT column_name.* FROM table_name

Tworzenie nowego zagnieżdżonego pola

struct() Użyj funkcji , aby utworzyć nowe zagnieżdżone pole.

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

Zagnieżdżanie wszystkich pól do kolumny

Użyj operatora gwiazdki (*), aby zagnieżdżać wszystkie pola ze źródła danych jako jedną kolumnę.

Python

from pyspark.sql.functions import struct

df.select(struct("*").alias("column_name"))

SQL

SELECT struct(*) AS column_name FROM table_name

Wybieranie nazwanego pola z kolumny zagnieżdżonej

Użyj nawiasów kwadratowych [] , aby wybrać pola zagnieżdżone z kolumny.

Python

from pyspark.sql.functions import col

df.select(col("column_name")["field_name"])

SQL

SELECT column_name["field_name"] FROM table_name

Eksploduj zagnieżdżone elementy z mapy lub tablicy

explode() Użyj funkcji , aby rozpakować wartości z ARRAY kolumn i MAP wpisz je.

ARRAY kolumny przechowują wartości jako listę. Po rozpakowaniu z wartością explode()każda wartość staje się wierszem w danych wyjściowych.

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 kolumny przechowują wartości jako uporządkowane pary klucz-wartość. Po rozpakowaniu z elementem explode()każdy klucz staje się kolumną, a wartości stają się wierszami.

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

Tworzenie tablicy na podstawie listy lub zestawu

Użyj funkcji collect_list() lub collect_set() , aby przekształcić wartości kolumny w tablicę. collect_list() zbiera wszystkie wartości w kolumnie, a jednocześnie collect_set() zbiera tylko unikatowe wartości.

Uwaga

Platforma Spark nie gwarantuje kolejności elementów w tablicy wynikającej z żadnej operacji.

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;

Wybieranie kolumny z mapy w tablicy

Możesz również użyć notacji kropkowej (.), aby uzyskać dostęp do pól w mapach zawartych w tablicy. Zwraca tablicę wszystkich wartości dla określonego pola.

Rozważmy następującą strukturę danych:

{
  "column_name": [
    { "field1": 1, "field2": "a" },
    { "field1": 2, "field2": "b" }
  ]
}

Możesz zwrócić wartości z field1 tablicy przy użyciu następującego zapytania:

Python

df.select("column_name.field1")

SQL

SELECT column_name.field1 FROM table_name

Przekształcanie danych zagnieżdżonych do formatu JSON

to_json Użyj funkcji , aby przekonwertować złożony typ danych na format JSON.

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

Aby zakodować całą zawartość zapytania lub ramki danych, połącz je z elementem struct(*).

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

Uwaga

Usługa Azure Databricks obsługuje to_avro również i to_protobuf przekształca złożone typy danych w celu współdziałania ze zintegrowanymi systemami.

Przekształcanie danych JSON na złożone dane

from_json Użyj funkcji , aby przekonwertować dane JSON na natywne złożone typy danych.

Uwaga

Należy określić schemat danych JSON.

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

Notes: przekształcanie złożonych typów danych

Poniższe notesy zawierają przykłady pracy ze złożonymi typami danych dla języków Python, Scala i SQL.

Przekształcanie złożonych typów danych w notesie języka Python

Pobierz notes

Przekształcanie złożonych typów danych w notesie Scala

Pobierz notes

Przekształcanie złożonych typów danych w notesie SQL

Pobierz notes