保持Python(例如Polars)函数和SQL(例如Redshift)UDF之间的一致性

问题描述 投票:0回答:1

我正在开发一个数据工程项目,该项目使用 Python 中的 Polars 和 Redshift 作为数据仓库来处理来自多个来源的数据。我需要一个强大的策略来保持 Python Polars 函数和用户定义函数 (UDF),这些函数旨在在两个环境中执行相同的操作。

考虑这个例子(实际上函数要长得多):

Python 极坐标函数:

def to_flatcase(sr: pl.Series): 
    sr = sr.str.to_lowercase().str.replace_all(r"[^a-z0-9]", "") 
    return sr

对应的Redshift SQL UDF:

CREATE OR REPLACE FUNCTION to_flatcase(title VARCHAR) 
RETURNS VARCHAR 
IMMUTABLE 
AS $$ 
    SELECT REGEXP_REPLACE( 
        LOWER($1), 
        '[^a-z0-9]',  
        '' 
    ) 
$$ LANGUAGE SQL;

我的挑战是:

  1. 如何确保 Redshift UDF 始终与未来的 Python 函数逻辑匹配?
  2. 面对第一个挑战,在存储库中管理和版本化这些功能的最佳方法是什么?
  3. 是否有任何工具或模式可以帮助自动执行此同步?
  4. 在 Redshift 中部署这些 UDF 的最易于维护的方法是什么?

我正在寻找能够最大限度地减少手动工作并降低两种实现之间不一致风险的策略。

python amazon-redshift user-defined-functions database-migration data-engineering
1个回答
0
投票

为了将 X 语言翻译成 Y 语言,您可以使用编译器。 Alfred Aho 和 Jeffrey Ullman 所著的《编译器:原理、技术和工具》一书是您想要开始学习的地方。

使用编译器的词法分析部分,您可以创建一个系统,在创建标记时,您可以根据数据库对其进行分析。如果标记的完整长度匹配,则调用该函数。否则继续其他编译器步骤。

© www.soinside.com 2019 - 2024. All rights reserved.