【问题标题】:Automation of SQL case statement with multiple conditions具有多个条件的 SQL 案例语句的自动化
【发布时间】: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


【解决方案1】:

由于数据来自 Excel,它们是(至少某种)结构化的。我会将这些上传到参考表并加入它(我阅读了您的评论,但也许正确的问题是关于健壮的加入)。 此外,我会将参考表设为临时表,这样您就可以轻松地随着时间的推移进行调试。使用 Teradata Studio 或一些小的 Python 脚本,您可以将上传到 ReferenceTable 甚至是业务,以简化您的生活。

几年前我有一些类似的任务,连接 + 参考表是最简单和稳定的方法。

【讨论】:

  • 感谢您的反馈和帮助。我会试一试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2021-12-23
  • 2020-12-13
  • 1970-01-01
  • 2019-05-22
  • 2013-02-26
  • 1970-01-01
相关资源
最近更新 更多