2016-09-06 66 views
1

我很难解决这个小场景的逻辑问题。基本上我有一个数据集,它存储在一年的几周,每周前一周的数据从数据集中删除。我需要做的是复制之前的星期数据,然后在删除数据集之后将其添加回去。因此,例如,如果今天是第33周,我需要保存此内容,然后下周将其添加回来。然后下周我需要花费34周的时间并在第35周内保存该内容以添加内容。图片说明的内容优于一千字所以在这里。使用临时表将已删除的数据重新插入数据集。 Qlikview

enter image description here

正如你可以看到我所需要的最小周从数据集之前,我添加了前周的数据。我发现的真正问题是数据集可能每周重新运行一次以上,因此我需要在提取最小星期数据集的同时将临时数据集保留到下一周。

这是更多的逻辑,我在这里...希望它是有道理的,并提前感谢。

回答

1

QVD的是前进的方向!虽然也许不是另一个(非常好的)回答状态。

--Load of data from system 
Test:  
Load * 
, today() as RunDate 
From SourceData 

--Load of data from QVD 
Test: 
Load * 
From Test.QVD 

--Store current load into QVD 
Store Test into Test.QVD 

这样你只有一个QVD的数据不断扩大。

某些警告

  • 你需要记住,报告要承担运行多次一个星期,所以你将需要满足在数据加载重复。
  • QVD加载没有加密,所以把你的数据放在安全的地方
  • 从QVD加载然后覆盖它,如果出现问题(加载失败),你需要恢复你的QVD,确保你的备份解决方案取决于任务。

我还添加了RunDate字段,以便您在阅读时更容易分开,因为这会为您提供与单独QVD中的存储相同的拆分。

1

听起来像是你应该出到每周QVD文件存储数据作为提取过程的一部分,然后加载在文件的结果。

逻辑将类似于下面...

第一运行(第34周一周33个数据):

  • 获取数据,此前一周
  • 存储到文件中正确日期 - 例如, 2016-33 2016年
  • 删除该表
  • 负载的33周的所有QVDs(在这种情况下只是1)

下周运行(35周为周33周& 34的数据):

  • 获取前一周的数据
  • 将文件存储到正确的日期 - 例如2016-34 2016年
  • 删除该表
  • 负载的34周的所有QVDs(在这种情况下2)

重复运行下周(35周为周33 & 34再次数据):

  • 获取上周的数据
  • 将文件存储到正确的日期 - 例如2016-34为2016年34周(此时将其覆盖)
  • 删除该表
  • 装载所有QVDs(在这种情况下,2)

明智的文件命名解决问题,但如果你真的实际需要检查数据以检查星期编号,您需要首先加载所有现有QVD,查询最小星期编号并从那里获取。

+0

欣赏响应。解决方案的问题在于它最终会积累到一个不理想的QVD山峰。另外我忘记提及的是,一周35周已经运行并且第34周增加,第33周的数据不再需要。 而且要抛出另一个扳手QVW理论上可以每周运行多次而不仅仅是一周。这是不正常的,但可以发生。 – TechCowboy

+0

如果您不想要前几周,可以使用“执行cmd/r c:\ path \ to \ qvd.qvd”轻松删除您不再需要的QVD,并保留所需的2。同样,如果它们被明确命名,那应该是非常简单的。我不确定你的意思是“每周运行多次,而不仅仅是一周”,对不起。 – x3ja

+0

我打算打字的是当我说“每周运行多次而不仅仅是一周”时,QVW可以每周运行多次,而不是每周运行一次。 – TechCowboy