[Discussion] Define python UDF using `CREATE FUNCTION` SQL statement
還沒有人認領這個 Issue。
評估
研究方向
從 datafusion::execution::context::FunctionFactory 開始,追蹤如何將 SQL CREATE FUNCTION 定義與 Python UDF 執行連接起來。釐清以欄為基礎的 LANGUAGE PYARROW 和以列為基礎的 LANGUAGE PYTHON 是否在範圍內,然後驗證 issue 中所示的 CREATE FUNCTION 和 SELECT 流程。
由索引模型根據 Issue 內容生成。
描述
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
I would like to be able to define a python function using SQL CREATE FUNCTION statement.
Something like
let sql = r#"
CREATE FUNCTION to_miles(DOUBLE)
RETURNS DOUBLE
LANGUAGE PYARROW
AS '
import pyarrow.compute as pc
conversation_rate_multiplier = 0.62137119
def to_miles(km_data):
return pc.multiply(km_data, conversation_rate_multiplier)
'
"#;
ctx.sql(sql).await?.show().await?;
ctx.sql("select double_col, to_miles(double_col) from t")
.await?
.show()
.await?;
Describe the solution you'd like
datafusion provides pluggable datafusion::execution::context::FunctionFactory which could be wired to interpret python function definitions.
we could provide column based function definitions (LANGUAGE PYARROW) or row based (LANGUAGE PYTHON)
Describe alternatives you've considered
Additional context
- databricks has similar functionality
- 主要語言
- Python
- 星號
- 605
- 分支
- 176
- 平均合併
- 1 天 23 小時
- 30 天內合併 PR
- 8
貢獻指南
這個儲存庫沒有索引到貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
apache/datafusion-python 的其他 Issue
-
enhancement
難度 2/5 1-3 小時 新手友好度 70/100
apache/datafusion-python#1757 ·
-
documentation
難度 2/5 1-3 小時 新手友好度 72/100
apache/datafusion-python#1726 ·
-
難度 2/5 半天 新手友好度 88/100
apache/datafusion-python#1691 ·
-
bug
難度 2/5 1-3 小時 新手友好度 78/100
apache/datafusion-python#1644 ·
-
enhancement
難度 5/5 一週以上 新手友好度 30/100
apache/datafusion-python#1737 ·
查看 apache/datafusion-python 的全部 Issue
相似的 Issue
-
enhancement
難度 2/5 1-3 小時 新手友好度 70/100
canonical/paas-charm#368 · 1 則留言 ·
-
難度 2/5 1-3 小時 新手友好度 75/100
-
tech debt
難度 2/5 1-3 小時 新手友好度 75/100
-
難度 1/5 1 小時以內 新手友好度 90/100
StevenBlack/hosts#3256 ·
-
難度 1/5 1 小時以內 新手友好度 90/100
qualcomm/qai-appbuilder#275 ·