我有一个表result_slalom,其中数据通过Pentaho的ETL Jobs填充。 当ETL第一次运行时,它会创建版本-1。
现在,如果在新计算后更改数据,它将成为版本-2。
我只需要在计算版本-2中进行更改,并且表result_slalom中不应该有超过2个版本。 (版本1和版本-2)
所以逻辑是: 检查表
中是否存在数据o
When data exists and existing version is 1, then set the version of new data=2
--> Insert new dataset
o When data exists and existing version is 2, then set the version of new data=2
--> Update existing dataset
o When no data exists, then set version = 1
--> Insert new dataset
如何为此逻辑制作Pentaho公式?
目前是:
if([VersionInDB]=1;[Calculationversion];[VersionInDB]+1)
答案 0 :(得分:0)
dimension lookup/update
是一个完全正确的步骤。
此外它还有有效日期:在创建版本2时,版本1接收现在的结束日期,版本2接收现在的开始日期。它可以使用date between start-date and end-date
检索历史信息。另外,您只需一个按钮即可为您写create/alter table
和create index
。
另一个简洁的解决方案是在表格上设置一个触发器。
忘记在那个方向重新发明轮子。虽然我通常喜欢发明轮子,但是重新开发逻辑会导致你进行无数次的测试和错误。