【问题标题】:How to Combine multiple files in BizTalk?如何在 BizTalk 中合并多个文件?
【发布时间】:2017-05-03 06:49:59
【问题描述】:

我有多个平面文件 (CSV)(包含多条记录),其中的文件将被随机接收。我必须将它们(记录)与唯一的 ID 字段结合起来。

如果所有文件都没有共同的唯一字段,并且我不知道会先收到哪个文件,我该如何组合它们?

以下是一些文件示例:

实际上有 16 个文件。 字段和记录比本示例中的要多得多。

【问题讨论】:

  • 我是否正确假设至少一个文件包含相关性?文件会在特定时间范围内送达吗?
  • 没有一个文件包含相关性。我们有文件链和相关性链。文件在 1-15 分钟内到达(我们使用并行车队来获取它们)。我们正在尝试使用“map”连接文件,但找不到根据逻辑执行此操作的方法(通过唯一字段相互链接并在输出中获取一个文件)。

标签: biztalk


【解决方案1】:

我会避免尝试仅在 XSLT/BizTalk 编排/C# 代码中执行此操作。这些是相当简单的平面文件。将它们加载到 SQL 中,并创建一个视图来连接您的数据。

您仍然可以使用 BizTalk 拾取/加载文件。您还可以使用 BizTalk 执行将数据连接起来并发送最终消息的视图或过程。

有几个问题可能有助于指导此处的工作方式:

  1. 您希望何时将数据连接在一起?是什么触发了它(一天中的某个时间、收到的一定数量的消息、某种类型的消息、特定记录等)? BizTalk 如何知道它何时收到足够/正确的数据来加入?
  2. 此数据的规范版本是什么样的?所有这些文件中的所有数据是否真正关联到一个实体(例如“交易”或“转移”等)?

我可能会从定义我的规范实体开始,然后寻找通过在这种情况下使用 SQL 来获取该规范实体的“完整”图片的路径。

【讨论】:

  • 这也是我要提出的答案。 +1
  • 感谢您的回复。 1. 数据必须在获得最后 16 个文件后立即加入。每个文件都有自己的模式,现在我们使用“Parallel convoy”来等待所有文件。 2.是的,所有数据都关联到一个实体中(但我们有链式关联)在这个精确的时刻,我们想要提出的是 biztalk 合适的工具来解决这类任务或者编写我们自己的解决方案会更好。那是为什么我们不想使用显然可以简单地解决问题的 SQL 过程或视图
  • 您可以在 XSLT 中或使用 C# 中执行此操作,但它需要自定义 XSLT(BizTalk 映射器不提供对分组/连接数据的非常支持)或自定义 C# 代码。 SQL 会更容易维护和理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 2014-01-07
  • 2018-07-04
  • 2020-01-30
  • 2021-05-17
  • 2018-09-17
相关资源
最近更新 更多