Compartilhar via


empilhar

col1Separa, ..., colk em n linhas. Usa nomes de coluna col0, col1 etc. por padrão, a menos que especificado o contrário.

Sintaxe

from pyspark.sql import functions as sf

sf.stack(*cols)

Parâmetros

Parâmetro Tipo Description
cols pyspark.sql.Column ou nome da coluna O primeiro elemento deve ser um int literal para o número de linhas a serem separadas e os demais são elementos de entrada a serem separados.

Exemplos

Exemplo 1: Pilha com 2 linhas

from pyspark.sql import functions as sf
df = spark.createDataFrame([(1, 2, 3)], ['a', 'b', 'c'])
df.select('*', sf.stack(sf.lit(2), df.a, df.b, 'c')).show()
+---+---+---+----+----+
|  a|  b|  c|col0|col1|
+---+---+---+----+----+
|  1|  2|  3|   1|   2|
|  1|  2|  3|   3|NULL|
+---+---+---+----+----+

Exemplo 2: Pilha com alias

from pyspark.sql import functions as sf
df = spark.createDataFrame([(1, 2, 3)], ['a', 'b', 'c'])
df.select('*', sf.stack(sf.lit(2), df.a, df.b, 'c').alias('x', 'y')).show()
+---+---+---+---+----+
|  a|  b|  c|  x|   y|
+---+---+---+---+----+
|  1|  2|  3|  1|   2|
|  1|  2|  3|  3|NULL|
+---+---+---+---+----+

Exemplo 3: Pilha com 3 linhas

from pyspark.sql import functions as sf
df = spark.createDataFrame([(1, 2, 3)], ['a', 'b', 'c'])
df.select('*', sf.stack(sf.lit(3), df.a, df.b, 'c')).show()
+---+---+---+----+
|  a|  b|  c|col0|
+---+---+---+----+
|  1|  2|  3|   1|
|  1|  2|  3|   2|
|  1|  2|  3|   3|
+---+---+---+----+

Exemplo 4: Pilha com 4 linhas

from pyspark.sql import functions as sf
df = spark.createDataFrame([(1, 2, 3)], ['a', 'b', 'c'])
df.select('*', sf.stack(sf.lit(4), df.a, df.b, 'c')).show()
+---+---+---+----+
|  a|  b|  c|col0|
+---+---+---+----+
|  1|  2|  3|   1|
|  1|  2|  3|   2|
|  1|  2|  3|   3|
|  1|  2|  3|NULL|
+---+---+---+----+