Aller au contenu principal

appel_fonction

Appelez une fonction SQL. Prend en charge Spark Connect.

Syntaxe

Python
from pyspark.sql import functions as dbf

dbf.call_function(funcName=<funcName>, *cols)

parameter

parameter

Type

Description

funcName

str

Nom de fonction qui respecte la syntaxe d'identificateur SQL (peut être entre guillemets, peut être qualifié).

cols

pyspark.sql.Column OU str

Noms de colonne ou colonnes à utiliser dans la fonction.

parameter

Type

Description

funcName

str

Nom de fonction qui respecte la syntaxe d'identificateur SQL (peut être entre guillemets, peut être qualifié).

cols

pyspark.sql.Column OU str

Noms de colonne ou colonnes à utiliser dans la fonction.

Renvoie

pyspark.sql.Column: résultat de la fonction exécutée.

Exemples

Exemple 1 : Appel d'une fonction avec une colonne d'entiers

Python
from pyspark.sql import functions as dbf
from pyspark.sql.types import IntegerType, StringType
df = spark.createDataFrame([(1, "a"),(2, "b"), (3, "c")],["id", "name"])
_ = spark.udf.register("intX2", lambda i: i * 2, IntegerType())
df.select(dbf.call_function("intX2", "id")).show()
Output
+---------+
|intX2(id)|
+---------+
| 2|
| 4|
| 6|
+---------+

Exemple 2 : Appel d'une fonction avec une colonne de chaîne

Python
from pyspark.sql import functions as dbf
from pyspark.sql.types import StringType
df = spark.createDataFrame([(1, "a"),(2, "b"), (3, "c")],["id", "name"])
_ = spark.udf.register("strX2", lambda s: s * 2, StringType())
df.select(dbf.call_function("strX2", dbf.col("name"))).show()
Output
+-----------+
|strX2(name)|
+-----------+
| aa|
| bb|
| cc|
+-----------+

Exemple 3 : Appel d'une fonction intégrée

Python
from pyspark.sql import functions as dbf
df = spark.createDataFrame([(1, "a"),(2, "b"), (3, "c")],["id", "name"])
df.select(dbf.call_function("avg", dbf.col("id"))).show()
Output
+-------+
|avg(id)|
+-------+
| 2.0|
+-------+

Exemple 4 : appel d’une fonction SQL personnalisée

Python
from pyspark.sql import functions as dbf
_ = spark.sql("CREATE FUNCTION custom_avg AS 'test.org.apache.spark.sql.MyDoubleAvg'")

df = spark.createDataFrame([(1, "a"),(2, "b"), (3, "c")],["id", "name"])
df.select(dbf.call_function("custom_avg", dbf.col("id"))).show()

Output
+------------------------------------+
|spark_catalog.default.custom_avg(id)|
+------------------------------------+
| 102.0|
+------------------------------------+

Exemple 5 : Appel d'une fonction SQL personnalisée avec un nom entièrement qualifié

Python
from pyspark.sql import functions as dbf
df = spark.createDataFrame([(1, "a"),(2, "b"), (3, "c")],["id", "name"])
df.select(dbf.call_function("spark_catalog.default.custom_avg", dbf.col("id"))).show()
Output
+------------------------------------+
|spark_catalog.default.custom_avg(id)|
+------------------------------------+
| 102.0|
+------------------------------------+