使用临时表将已删除的数据插回到数据集中。 QlikView的

时间:2016-09-06 09:01:36

标签: database qlikview

我在制作这个小场景的逻辑时遇到了麻烦。基本上我有一个数据集,它存储在一年中的几周,每周从数据集中删除前几周的数据。我需要做的是复制前几周的数据,然后将其从数据集中删除,然后在删除之后再将其添加回来。因此,例如,如果今天是第33周,我需要保存这个,然后下周将其添加回来。然后下周我需要花费第34周并保存它以在第35周添加。一张图片说明了千言万语所以在这里。

enter image description here

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

这是我在这之后的更多逻辑......希望它有意义并且在事先感谢。

2 个答案:

答案 0 :(得分:1)

听起来你应该将数据存储到每周QVD文件中,作为Extract进程的一部分,然后加载生成的文件。

逻辑将如下所示......

首次运行(第33周数据第34周):

  • 获取上周的数据
  • 正确存储到文件中 - 例如2016年第33周2016-33
  • 删除此表
  • 加载所有QVD(在本例中仅为1)

下周运行(第33周和第34周的第35周):

  • 获取上周的数据
  • 正确存储到文件中 - 例如2016年第34周2016-34
  • 删除此表
  • 加载所有QVD(在本例中为2)

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

  • 获取上周的数据
  • 正确存储到文件中 - 例如2016年第34周2016-34(这次覆盖)
  • 删除此表
  • 加载所有QVD(在本例中为2)

明智的文件命名可以解决问题,但如果您确实需要检查数据以检查周数,则需要首先加载所有现有QVD,查询最小周数并从那里取出。

答案 1 :(得分: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中存储相同的拆分。