pyspark.sql.functions.inline#
- pyspark.sql.functions.inline(col)[source]#
Explodes an array of structs into a table.
This function takes an input column containing an array of structs and returns a new column where each struct in the array is exploded into a separate row.
New in version 3.4.0.
- Parameters
- col
Column
or str Input column of values to explode.
- col
- Returns
Column
Generator expression with the inline exploded result.
See also
pyspark.functions.explode()
pyspark.functions.inline_outer()
Examples
Example 1: Using inline with a single struct array column
>>> import pyspark.sql.functions as sf >>> from pyspark.sql import Row >>> df = spark.createDataFrame([Row(structlist=[Row(a=1, b=2), Row(a=3, b=4)])]) >>> df.select(sf.inline(df.structlist)).show() +---+---+ | a| b| +---+---+ | 1| 2| | 3| 4| +---+---+
Example 2: Using inline with a column name
>>> import pyspark.sql.functions as sf >>> from pyspark.sql import Row >>> df = spark.createDataFrame([Row(structlist=[Row(a=1, b=2), Row(a=3, b=4)])]) >>> df.select(sf.inline("structlist")).show() +---+---+ | a| b| +---+---+ | 1| 2| | 3| 4| +---+---+
Example 3: Using inline with an alias
>>> import pyspark.sql.functions as sf >>> from pyspark.sql import Row >>> df = spark.createDataFrame([Row(structlist=[Row(a=1, b=2), Row(a=3, b=4)])]) >>> df.select(sf.inline("structlist").alias("c1", "c2")).show() +---+---+ | c1| c2| +---+---+ | 1| 2| | 3| 4| +---+---+
Example 4: Using inline with multiple struct array columns
>>> import pyspark.sql.functions as sf >>> from pyspark.sql import Row >>> df = spark.createDataFrame([ ... Row(structlist1=[Row(a=1, b=2), Row(a=3, b=4)], ... structlist2=[Row(c=5, d=6), Row(c=7, d=8)]) ... ]) >>> df.select(sf.inline("structlist1"), "structlist2") \ ... .select("a", "b", sf.inline("structlist2")).show() +---+---+---+---+ | a| b| c| d| +---+---+---+---+ | 1| 2| 5| 6| | 1| 2| 7| 8| | 3| 4| 5| 6| | 3| 4| 7| 8| +---+---+---+---+
Example 5: Using inline with a nested struct array column
>>> import pyspark.sql.functions as sf >>> from pyspark.sql import Row >>> df = spark.createDataFrame([ ... Row(structlist=Row(a=1, b=2, nested=[Row(c=3, d=4), Row(c=5, d=6)])) ... ]) >>> df.select(sf.inline("structlist.nested")).show() +---+---+ | c| d| +---+---+ | 3| 4| | 5| 6| +---+---+
Example 6: Using inline with an empty struct array column
>>> import pyspark.sql.functions as sf >>> from pyspark.sql import Row >>> df = spark.createDataFrame( ... [Row(structlist=[])], "structlist: array<struct<a:int,b:int>>") >>> df.select(sf.inline(df.structlist)).show() +---+---+ | a| b| +---+---+ +---+---+
Example 7: Using inline with a struct array column containing null values
>>> import pyspark.sql.functions as sf >>> from pyspark.sql import Row >>> df = spark.createDataFrame([Row(structlist=[Row(a=1, b=2), None, Row(a=3, b=4)])]) >>> df.select(sf.inline(df.structlist)).show() +----+----+ | a| b| +----+----+ | 1| 2| |NULL|NULL| | 3| 4| +----+----+