Bagikan melalui


inline

Meledakkan array struktur ke dalam tabel.

Fungsi ini mengambil kolom input yang berisi array structs dan mengembalikan kolom baru di mana setiap struct dalam array meledak ke dalam baris terpisah.

Syntax

from pyspark.sql import functions as sf

sf.inline(col)

Parameter-parameternya

Pengaturan Tipe Description
col pyspark.sql.Column atau nama kolom Kolom input nilai yang akan meledak.

Pengembalian Barang

pyspark.sql.Column: Ekspresi generator dengan hasil yang meledak sebaris.

Examples

Contoh 1: Menggunakan sebaris dengan satu kolom array struct

import pyspark.sql.functions as sf
df = spark.sql('SELECT ARRAY(NAMED_STRUCT("a",1,"b",2), NAMED_STRUCT("a",3,"b",4)) AS a')
df.select('*', sf.inline(df.a)).show()
+----------------+---+---+
|               a|  a|  b|
+----------------+---+---+
|[{1, 2}, {3, 4}]|  1|  2|
|[{1, 2}, {3, 4}]|  3|  4|
+----------------+---+---+

Contoh 2: Menggunakan sebaris dengan nama kolom

import pyspark.sql.functions as sf
df = spark.sql('SELECT ARRAY(NAMED_STRUCT("a",1,"b",2), NAMED_STRUCT("a",3,"b",4)) AS a')
df.select('*', sf.inline('a')).show()
+----------------+---+---+
|               a|  a|  b|
+----------------+---+---+
|[{1, 2}, {3, 4}]|  1|  2|
|[{1, 2}, {3, 4}]|  3|  4|
+----------------+---+---+

Contoh 3: Menggunakan sebaris dengan alias

import pyspark.sql.functions as sf
df = spark.sql('SELECT ARRAY(NAMED_STRUCT("a",1,"b",2), NAMED_STRUCT("a",3,"b",4)) AS a')
df.select('*', sf.inline('a').alias("c1", "c2")).show()
+----------------+---+---+
|               a| c1| c2|
+----------------+---+---+
|[{1, 2}, {3, 4}]|  1|  2|
|[{1, 2}, {3, 4}]|  3|  4|
+----------------+---+---+

Contoh 4: Menggunakan sebaris dengan beberapa kolom array struct

import pyspark.sql.functions as sf
df = spark.sql('SELECT ARRAY(NAMED_STRUCT("a",1,"b",2), NAMED_STRUCT("a",3,"b",4)) AS a1, ARRAY(NAMED_STRUCT("c",5,"d",6), NAMED_STRUCT("c",7,"d",8)) AS a2')
df.select(
    '*', sf.inline('a1')
).select('*', sf.inline('a2')).show()
+----------------+----------------+---+---+---+---+
|              a1|              a2|  a|  b|  c|  d|
+----------------+----------------+---+---+---+---+
|[{1, 2}, {3, 4}]|[{5, 6}, {7, 8}]|  1|  2|  5|  6|
|[{1, 2}, {3, 4}]|[{5, 6}, {7, 8}]|  1|  2|  7|  8|
|[{1, 2}, {3, 4}]|[{5, 6}, {7, 8}]|  3|  4|  5|  6|
|[{1, 2}, {3, 4}]|[{5, 6}, {7, 8}]|  3|  4|  7|  8|
+----------------+----------------+---+---+---+---+

Contoh 5: Menggunakan sebaris dengan kolom array struct berlapis

import pyspark.sql.functions as sf
df = spark.sql('SELECT NAMED_STRUCT("a",1,"b",2,"c",ARRAY(NAMED_STRUCT("c",3,"d",4), NAMED_STRUCT("c",5,"d",6))) AS s')
df.select('*', sf.inline('s.c')).show(truncate=False)
+------------------------+---+---+
|s                       |c  |d  |
+------------------------+---+---+
|{1, 2, [{3, 4}, {5, 6}]}|3  |4  |
|{1, 2, [{3, 4}, {5, 6}]}|5  |6  |
+------------------------+---+---+

Contoh 6: Menggunakan sebaris dengan kolom yang berisi: array yang berisi null, array kosong, dan null

from pyspark.sql import functions as sf
df = spark.sql('SELECT * FROM VALUES (1,ARRAY(NAMED_STRUCT("a",1,"b",2), NULL, NAMED_STRUCT("a",3,"b",4))), (2,ARRAY()), (3,NULL) AS t(i,s)')
df.show(truncate=False)
+---+----------------------+
|i  |s                     |
+---+----------------------+
|1  |[{1, 2}, NULL, {3, 4}]|
|2  |[]                    |
|3  |NULL                  |
+---+----------------------+
df.select('*', sf.inline('s')).show(truncate=False)
+---+----------------------+----+----+
|i  |s                     |a   |b   |
+---+----------------------+----+----+
|1  |[{1, 2}, NULL, {3, 4}]|1   |2   |
|1  |[{1, 2}, NULL, {3, 4}]|NULL|NULL|
|1  |[{1, 2}, NULL, {3, 4}]|3   |4   |
+---+----------------------+----+----+