Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ż wszystkie pola w kolumnie
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
Wybierz nazwane pole z zagnieżdżonej kolumny
Użyj nawiasów kwadratowych [], aby wybrać zagnieżdżone pola 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
Użyj funkcji explode(), aby rozpakować wartości z kolumn typu ARRAY i MAP.
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 w uporządkowanych parach 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 jako tablicę 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.