Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Ouverte
#1,701 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
Active
Stack technique
python, rust, sql
Domaine
databases

Piste de recherche

Commencez par datafusion::execution::context::FunctionFactory et suivez comment les définitions SQL de CREATE FUNCTION pourraient être reliées à l’exécution des UDF Python. Déterminez si LANGUAGE PYARROW basé sur les colonnes et LANGUAGE PYTHON basé sur les lignes sont concernés, puis validez le flux CREATE FUNCTION et SELECT présenté dans l’issue.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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

Langage dominant
Python
Étoiles
605
Forks
176
Merge moyen
1 j 23 h
PR mergées (30 j)
8

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/datafusion-python

Toutes les issues de apache/datafusion-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.