Teilen über


string_agg_distinct

Aggregatfunktion: Gibt die Verkettung unterschiedlicher Nicht-Null-Eingabewerte zurück, getrennt durch das Trennzeichen. Ein Alias von listagg_distinct.

Syntax

import pyspark.sql.functions as sf

sf.string_agg_distinct(col=<col>)

# With delimiter
sf.string_agg_distinct(col=<col>, delimiter=<delimiter>)

Die Parameter

Parameter Typ Description
col pyspark.sql.Column oder str Zielspalte, für die berechnet werden soll.
delimiter pyspark.sql.Column, stroder bytes Wahlfrei. Das Trennzeichen zum Trennen der Werte. Der Standardwert ist None.

Rückkehr

pyspark.sql.Column: die Spalte für berechnete Ergebnisse.

Examples

Beispiel 1: Verwenden string_agg_distinct Funktion.

import pyspark.sql.functions as sf
df = spark.createDataFrame([('a',), ('b',), (None,), ('c',), ('b',)], ['strings'])
df.select(sf.string_agg_distinct('strings')).show()
+----------------------------------+
|string_agg(DISTINCT strings, NULL)|
+----------------------------------+
|                               abc|
+----------------------------------+

Beispiel 2: Verwenden string_agg_distinct Funktion mit einem Trennzeichen.

import pyspark.sql.functions as sf
df = spark.createDataFrame([('a',), ('b',), (None,), ('c',), ('b',)], ['strings'])
df.select(sf.string_agg_distinct('strings', ', ')).show()
+--------------------------------+
|string_agg(DISTINCT strings, , )|
+--------------------------------+
|                         a, b, c|
+--------------------------------+

Beispiel 3: Verwenden string_agg_distinct Funktion mit einer binären Spalte und einem Trennzeichen.

import pyspark.sql.functions as sf
df = spark.createDataFrame([(b'\x01',), (b'\x02',), (None,), (b'\x03',), (b'\x02',)],
                           ['bytes'])
df.select(sf.string_agg_distinct('bytes', b'\x42')).show()
+---------------------------------+
|string_agg(DISTINCT bytes, X'42')|
+---------------------------------+
|                 [01 42 02 42 03]|
+---------------------------------+

Beispiel 4: Verwenden string_agg_distinct Funktion für eine Spalte mit allen None-Werten.

import pyspark.sql.functions as sf
from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField("strings", StringType(), True)])
df = spark.createDataFrame([(None,), (None,), (None,), (None,)], schema=schema)
df.select(sf.string_agg_distinct('strings')).show()
+----------------------------------+
|string_agg(DISTINCT strings, NULL)|
+----------------------------------+
|                              NULL|
+----------------------------------+