Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Discussion] Define python UDF using `CREATE FUNCTION` SQL statement

未关闭
#1,701 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
功能
描述清晰度
需要澄清
活跃度
活跃
技术栈
python, rust, sql
领域
databases

调研方向

从 datafusion::execution::context::FunctionFactory 开始,跟踪如何将 SQL CREATE FUNCTION 定义与 Python UDF 执行连接起来。明确基于列的 LANGUAGE PYARROW 和基于行的 LANGUAGE PYTHON 是否在范围内,然后验证 issue 中所示的 CREATE FUNCTION 和 SELECT 流程。

由索引模型根据 Issue 内容生成。

描述

enhancement

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

主要语言
Python
星标
605
派生
176
平均合并
1 天 23 小时
30 天内合并 PR
8

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

apache/datafusion-python 的其他 Issue

查看 apache/datafusion-python 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。