メインコンテンツまでスキップ

呼び出し関数

SQL 関数を呼び出します。Spark Connect をサポートします。

構文

Python
from pyspark.databricks.sql import functions as dbf

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

パラメーター

パラメーター

Type

説明

funcName

str

SQL 識別子構文に従う関数名 (引用符で囲むことも、修飾することもできます)。

cols

pyspark.sql.Column または str

関数で使用される列名または列。

戻り値

pyspark.sql.Column: 実行された関数の結果。

例1 : 整数列を持つ関数の呼び出し

Python
from pyspark.databricks.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|
+---------+

例2 : 文字列列で関数を呼び出す

Python
from pyspark.databricks.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|
+-----------+

例3 : 組み込み関数の呼び出し

Python
from pyspark.databricks.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|
+-------+

例4 : カスタムSQL関数の呼び出し

Python
from pyspark.databricks.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|
+------------------------------------+

例5 : 完全修飾名でカスタムSQL関数を呼び出す

Python
from pyspark.databricks.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|
+------------------------------------+