【发布时间】:2020-03-24 13:48:36
【问题描述】:
我的任务是自动化一段相当长/复杂的 SQL 代码 (Teradata),它有一个相当长的 case 语句,用于跨多个列识别多个条件。
此案例陈述的标准会根据分析要求不断变化,并根据促销优惠跟踪客户购买情况以进行营销。它处理与旅行相关的数据。
这个语句有时看起来的一个简短示例是(想象一下它长 10 倍):
CASE
WHEN ORIGIN_LOCATION = 'X' AND DESTINATION = 'Y' AND TRAVEL_DATE BETWEEN '2019-01-02' AND '2020-01-02'
AND CAR_TYPE = 'A' THEN 'PROMO'
WHEN DESTINATION = 'X' AND ORIGIN_LOCATION = 'Y' AND TRAVEL_DATE BETWEEN '2019-01-02' AND '2020-01-02'
AND CAR_TYPE = 'A' AND RETURN_INDC = 'Y' THEN 'PROMO'
ELSE 'NON-PROMO' END AS PROMO_INDC
我需要能够自动执行此案例语句,以便具有最少 SQL 经验的分析师可以运行代码,而不必每次都手动编写此案例语句。
我尝试了许多不同的解决方案,例如将条件(它作为 excel 文件传递给我们)存储在临时表中,然后对源数据使用 JOIN 条件,但这不起作用。我还研究了宏和存储过程,但我没有使用这些函数的权限 - 所以这也行不通。
有没有人对我如何能够自动化这样的事情有任何想法或想法?很高兴使用 Python 等其他编程语言,如果这样可以解决问题 - 但实际上只是在寻找想法/想法。
谢谢。
【问题讨论】:
-
“(它以 excel 文件的形式交付给我们)”所以在运行任何查询之前对其进行处理?这与数据库无关,只是数据
-
Excel文件中的数据长什么样子?
-
很乱 - 所以需要清理一下。但本质上它是几列。出发地、目的地、旅行开始日期、旅行结束日期、租车名称,有时还会有其他变量,例如需要满足的国家或地区数据或客户属性。
标签: python sql automation teradata case-statement