call_function

SQL işlevini çağır. Spark Connect'i destekler.

Sözdizimi

from pyspark.sql import functions as dbf

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

Parametreler

Parametre Türü Description
funcName str SQL tanımlayıcısı söz dizimini izleyen işlev adı (alıntı yapılabilir, nitelenebilir).
cols pyspark.sql.Column veya str İşlevde kullanılacak sütun adları veya Sütunlar.

İade

pyspark.sql.Column: yürütülen işlevin sonucu.

Örnekler

Örnek 1: Tamsayı sütunu olan bir işlevi çağırma

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()
+---------+
|intX2(id)|
+---------+
|        2|
|        4|
|        6|
+---------+

Örnek 2: Dize sütunuyla işlev çağırma

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()
+-----------+
|strX2(name)|
+-----------+
|         aa|
|         bb|
|         cc|
+-----------+

Örnek 3: Yerleşik bir işlevi çağırma

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()
+-------+
|avg(id)|
+-------+
|    2.0|
+-------+

Örnek 4: Özel SQL işlevini çağırma

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()

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

Örnek 5: Tam ada sahip bir özel SQL işlevini çağırma

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()
+------------------------------------+
|spark_catalog.default.custom_avg(id)|
+------------------------------------+
|                               102.0|
+------------------------------------+