【问题标题】:ETL dataflow task - remain calculationETL 数据流任务 - 剩余计算
【发布时间】:2017-06-19 13:02:11
【问题描述】:

请帮助我理解数据流任务的主要逻辑。我正在使用 ETL 将数据加载到数据仓库(暂存和 dwh 部分)。现在我有一个任务来计算现有字段的数据,但必须通过库存数据来计算...

我需要正确的剩余数量、分配数量和进度数量。 (如图所示)。但目前我没有看到这个结果。得到它会很棒。 我在查找库存数据列表后进行了计算过程。

然后检查实际的临时数据另一个查找。当它在 temp by item 上不存在时,然后插入记录,否则只是一个简单的更新..使用这种方法我会做计算过程..我认为在下一个记录系统应该重新查询临时表并查询实际数据..我的意思是减少了数量。逐条记录。但是现在它在这两个查找之后我得到了每一行相同的结果。这对我来说意味着临时表不会在数据流内部重新查询。我应该使用其他数据流进行计算吗?或者我可以使用这个数据流中的临时表,它可能会被记录更新?因为我会通过记录重新查询实际库存数量..
..感谢阅读!

【问题讨论】:

  • 请重新格式化您的问题以便更好地解释,包括屏幕截图、您想要实现的目标、到目前为止您尝试过的内容以及为什么它不起作用。目前无法理解您想在这里问什么...
  • 对不起,你是对的。我更新了我的问题。感谢您的支持!

标签: sql-server etl theory dataflow


【解决方案1】:

我很困惑,但据我了解,您想使用查找转换重新查询,对吗?如果是这样,在查找转换编辑器中,在“常规”选项卡中,有 缓存模式 选项,默认情况下,它被标记为完全缓存。

  1. Full Cache 表示在数据流内部做任何事情之前 任务,数据库被查询一次并保存在内存中。所以当你 尝试在数据流任务中使用查找转换,它将 仅使用保存在内存中的数据。
  2. 第二个选项是Partial Cache,做之前先查询一些数据 一个转换,如果在其中找不到,则查询 再次找到数据库。
  3. 最后是无缓存模式,你可以在其中查询 每次处理一行时的数据库

您可以找到更多详细信息in this link

希望对你有帮助

【讨论】:

  • 感谢您的解决方案。我已经尝试过了,但没有解决我的问题。您能否看看我的项目中可能存在数据流问题的部分?见上图3。
  • 所以,我找到了下面的文章:link你怎么看,这是实现剩余数量计算的唯一可能方法吗?与 CTE? :) 如果可能的话,也许我可以使用可变数组。我的意思是更多的项目及其实际数量。
  • 我看不出图片中的逻辑有问题。虽然我不是 SSIS 方面的专家,但对我来说似乎很好。也许您正在使用某种包变量,在数据流任务中保存和使用新值?在数据流任务结束之前,变量不会更新。这可能是原因之一。您也可以像您说的那样将它们分成 2 个数据流,然后以这种方式找出问题所在
【解决方案2】:

Click here for picture! 大家好,我找到了解决方案并对ETL流程进行了更改。我已经分离了数据流任务并使用存储过程重新计算了临时表上的数据。然后下一个数据流能够从 temp 中查询更新的数据,并用正确的数量和价格填充事实表。那个时候我已经学习了控制流和数据流的过程。现在对我来说很清楚,应用程序运行良好。感谢支持!

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多