【发布时间】:2022-01-26 17:15:18
【问题描述】:
我刚开始使用 SSIS 工具,我需要快速帮助来按季度加载数据
这是我的场景:
我想出了一个查询(源数据库:DB2),它将提取 2010-01-01 到 2021-12-31 的数据,(11 年的数据)但是数据量太大(大约 300 M) ,所以我想拆分数据源查询以按季度加载数据。 我逐年尝试,但仍然获得了我的 SSIS 服务器无法处理的更多数据量。 我创建了一个年循环来循环它,在其中创建了一个脚本任务,然后是一个数据流任务。
例如,
select * from tab1 where start_date >= '2010-01-01' and end_Date <= '2010-12-31'
我想将其循环为(4 次加载,每季度 1 次)
select from tab1 where start_date >= '2010-01-01' and end_Date <= '2010-03-31'
select from tab1 where start_date >= '2010-04-01' and end_Date <= '2010-06-30'
select from tab1 where start_date >= '2010-07-01' and end_Date <= '2010-09-30'
select from tab1 where start_date >= '2010-10-01' and end_Date <= '2010-12-31'
按年完全可以正常工作,但是,我不知道如何将数据加载到季度中。 我想将每个季度的参数作为参数传递给源查询,所以总的来说我需要循环到 48 次(2010 年到 2021 年 = 11 年 * 4 个季度) 任何帮助是极大的赞赏。 我可以发送我为年度循环创建的屏幕截图,效果非常好。
【问题讨论】:
-
“数据量太大...我的 SSIS 服务器无法处理” - 基于什么指标?我之前通过 SSIS 一次性汇集了数十亿行,没有出现任何问题。
-
你确定你必须过滤开始和结束日期,两者都在同一年/季度,否则你会错过一些行吗?我认为使用限制/偏移是一个更好的解决方案,但您可以使用 DB2 过滤四分之一,例如
this_quarter(start_date) = date '2018-04-01' -
通常您会针对单个列来获取范围内的值。 [@start] 和 [@end] 之间的 updateDate 之类的东西
标签: sql sql-server ssis db2 etl