我有一个etl作业,它将原始文件处理成mysql数据库。在做一些分析时,我意识到我需要一个月内所有日子的数据,而我的数据提要只有工作日的值。
我需要一种方法来插入记录失踪的日子,从最后一天的数据。e、 对于周六和周日,我想用周五的数据。星期三不见了,我可以用星期二的数据。
从视觉上看,这就是我所看到的:
**Day****Old Table****New Table**
Monday Record 1 Record 1
Tuesday Record 2 Record 2
Wednesday Record 3 Record 3
Thursday Record 4 Record 4
Friday Record 5 Record 5
Saturday Record 5
Sunday Record 5
Monday Record 8 Record 8
Tuesday Record 9 Record 9
Wednesday Record 10 Record 10
Thursday Record 11 Record 11
Friday Record 12 Record 12
Saturday Record 12
Sunday Record 12
Monday Record 15 Record 15
有人能给我推荐一条路吗?
我模糊的想法集中在处理三个数据集上:
1) 包含所有日期值的临时数据集(例如从年初到年底)
2) 包含丢失记录的原始数据(dtst 1)
3) 包含所有值的新数据(dtst 2)
我不知道怎么做,但如果我能循环遍历temp数据集中的所有值(dtst1),从原始数据中提取日期对应的值,并将其推送到新的数据集中(dtst2)。如果在dtst1中没有标识值,则使用从dtst1获取的最后一行并将其推入dtst2。在循环执行结束时,我将拥有dtst2中所有日期的数据,稍后我可以使用这些数据进行分析。
2条答案
按热度按时间iih3973s1#
您可以将tjavarow放在mysql组件之前,然后检查当前行中的空数据,同时还可以将以前传输的值保存在globalmap变量中,以填充空值。
4nkexdtk2#
tmemorizerows就是你要找的!
tmemorizerows以逐行顺序临时存储传入数据的数组,并通过索引0中每个存储的行来示例化此数组。在任何给定时间要记忆的最大行数在“基本设置”视图中定义。
在组件设置中,指定要记住的行数和要记住的列数。在一个
tMap
,可以检查当前行值,如果为空,则检索tMemorizeRows
.您可以参考以下列:
<columnName>_tMemorizeRows_1[0]
对于当前值,<columnName>_tMemorizeRows_1[1]
前一行…等等。