【问题标题】:Exchange Rate Return汇率回报
【发布时间】:2014-07-31 18:25:47
【问题描述】:

我正在为我们的 IT 部门构建一份月度许可证报告,它会收到一份以欧元为单位的许可证信息列表。我有一个每天提供汇率数据的 XML 提要,但该作业将仅设置为每月运行一次。

我在我的 SSIS 包中设置了条件拆分,它拆分美元汇率并丢弃其他所有内容。

我剩下要做的就是只返回每个月 1 日的汇率,我不需要每天只需要报表运行的那一天。

是否有一个 SSIS 表达式只会从 XML 提要中返回该行? 或者是否有一个只返回第一个月数据的 SQL-T 脚本?

日期格式为 MM/DD/YYYY,我有一系列派生列,为我的 [DIMDate] 创建了一个 [DateKey],格式为 YYYYMMDD。

【问题讨论】:

  • 编辑添加标签 - sql-server
  • 您可以使用 xpath 操作在 xml 任务中仅提取第一天的数据。如果您需要有关 xpath 查询的任何帮助,请发布 xml 示例和所需的输出,我们将为您提供帮助
  • 您不能在另一个条件拆分中添加条件以检查日期部分为 1 吗?
  • 我很想这样做,但我很难让它工作。我试过 DATEPART(dd,[Date])=="01" 它告诉我表达式有误。
  • @Jayvee,不幸的是,我正在将 XML 提要导入 Excel 表。 SQL Server 位于封闭网络上,无法访问外部 Internet,只能访问内部网络。我将 XML 输入到 Excel 电子表格中,该电子表格每月刷新并保存。我没有看到按第一天过滤的方法。这是 XML 链接ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml

标签: sql sql-server ssis


【解决方案1】:

你有一个昏暗的日期表?

select datekey
from dimdate
where day(datefield) = 1

这将为您提供每个月的第一天,该天在您的暗日期表中。将您现有的选择内部连接到此(此处的内部连接将有效地用作过滤器)。类似的东西

 inner join dimdate on dimdate.datefield = mainquery.datefield and day(dimdate.datefield) = 1

【讨论】:

  • 在现有的 SSIS 包中有没有办法做到这一点?只是好奇它是否超出了 SSIS 表达式的限制。
  • 你能在 SSIS 中创建一个到这个日期语句的连接吗?抱歉,我在这里回答你的时间太长了(从 DTS 开始)......我目前的 ETL 过程只不过是 SSIS 触发存储过程来完成这项工作;)
【解决方案2】:

对于发布的 XML,此 Xpath 查询将为您带来第一个元素(第一个日期的货币组):

 '//Cube/Cube[1]/.' 

如果您只需要携带美元部分,那么:

 '//Cube/Cube[1]/Cube[@currency="USD"]/.' 

在 SSIS 中,您可以通过控制流中的 XML 任务应用 Xpath 转换。

【讨论】:

    【解决方案3】:

    我实际上在网上找到了一个更简单的解决方案。我已经构建、测试并实施了它。

    我不得不与我们的网络人员联系并请求与互联网的外部连接以实现它(他不喜欢这样做)但是一旦我们解决了这个问题,它就像一个魅力。

    这是我使用的网站的链接。

    http://technet.microsoft.com/en-us/sqlserver/ff686773.aspx

    感谢大家提出的所有好主意。我相信它们会在其他项目中派上用场。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 2011-01-14
      • 2015-03-01
      • 1970-01-01
      相关资源
      最近更新 更多