Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở
#1,701 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Sôi nổi
Công nghệ
python, rust, sql
Lĩnh vực
databases

Hướng nghiên cứu

Bắt đầu từ datafusion::execution::context::FunctionFactory và theo dõi cách các định nghĩa SQL CREATE FUNCTION có thể được kết nối với việc thực thi UDF Python. Làm rõ liệu LANGUAGE PYARROW dựa trên cột và LANGUAGE PYTHON dựa trên hàng có nằm trong phạm vi hay không, sau đó xác thực luồng CREATE FUNCTION và SELECT được hiển thị trong issue.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

Ngôn ngữ chính
Python
Star
605
Fork
176
Merge trung bình
1 ngày 23 giờ
Pull request đã merge (30 ngày)
8

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/datafusion-python

Tất cả issue của apache/datafusion-python

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.