Aller au contenu principal

unwrap_udt

Désenvelopper la colonne de type de données UDT dans son type sous-jacent.

Syntaxe

Python
import pyspark.sql.functions as sf

sf.unwrap_udt(col=<col>)

parameter

parameter

Type

Description

col

pyspark.sql.Column OU str

La colonne UDT à déballer.

parameter

Type

Description

col

pyspark.sql.Column OU str

La colonne UDT à déballer.

Renvoie

pyspark.sql.Column: La représentation sous-jacente.

Exemples

Exemple 1 : Désencapsuler l'UDT spécifique au ML — VectorUDT.

Python
from pyspark.sql import functions as sf
from pyspark.ml.linalg import Vectors

vec1 = Vectors.dense(1, 2, 3)
vec2 = Vectors.sparse(4, {1: 1.0, 3: 5.5})
df = spark.createDataFrame([(vec1,), (vec2,)], ["vec"])
df.select(sf.unwrap_udt("vec")).printSchema()
Output
root
|-- unwrap_udt(vec): struct (nullable = true)
| |-- type: byte (nullable = false)
| |-- size: integer (nullable = true)
| |-- indices: array (nullable = true)
| | |-- element: integer (containsNull = false)
| |-- values: array (nullable = true)
| | |-- element: double (containsNull = false)

Exemple 2 : décompressez le UDT spécifique au ML - MatrixUDT.

Python
from pyspark.sql import functions as sf
from pyspark.ml.linalg import Matrices

mat1 = Matrices.dense(2, 2, range(4))
mat2 = Matrices.sparse(2, 2, [0, 2, 3], [0, 1, 1], [2, 3, 4])
df = spark.createDataFrame([(mat1,), (mat2,)], ["mat"])
df.select(sf.unwrap_udt("mat")).printSchema()
Output
root
|-- unwrap_udt(mat): struct (nullable = true)
| |-- type: byte (nullable = false)
| |-- numRows: integer (nullable = false)
| |-- numCols: integer (nullable = false)
| |-- colPtrs: array (nullable = true)
| | |-- element: integer (containsNull = false)
| |-- rowIndices: array (nullable = true)
| | |-- element: integer (containsNull = false)
| |-- values: array (nullable = true)
| | |-- element: double (containsNull = false)
| |-- isTransposed: boolean (nullable = false)