【问题标题】:Datediff with Blended Data SourcesDatediff 与混合数据源
【发布时间】:2015-09-18 23:55:25
【问题描述】:

我有两个来自两个不同数据源的日期字段。一个来自事件记录的 CSV 文件“打开时间”,另一个来自 SharePoint 列表“上线”。这两个数据源混合在一个共同的字符串值上,称为“数据库名称”。

此外,SP 列表“数据库名称”字段与 CSV 中的事件记录具有一对多的关系。

对于我想用作过滤器的计算列,我需要找出“开放时间”和“上线”之间的天数差异。基本上,如果“开放时间”是“上线”日期后 30 天或更短的时间,我希望包含事件记录。

我无法弄清楚如何使用 Tableau 似乎强制执行的聚合逐个记录地执行此操作。有人有这方面的代码示例吗?

我必须在 Tableau 8.2 中执行此操作,我无法更改任一数据源中的数据。

提前感谢您的帮助。

【问题讨论】:

  • 由于 SharePoint 列表不是受支持的 Tableau 数据源,您如何连接到 SP 列表?您在使用 OData 吗?定期提取 Excel 转储?使用 MS Access 作为中间层?
  • 我正在使用 Odata 连接。

标签: tableau-api


【解决方案1】:

最好的解决方案是实际加入这些来源。但如果这不是一个选项,那么混合有一些技巧,但也有限制

如果您有一对多的关系,您应该使用“多”部分作为主要数据源。这样,当你这样做时

DATEDIFF('day',MAX([Open Time]),MAX([SharePoint].[Go Live]))

关系将是多对一,而不是一对多,MAX() 什么也不做。

限制是这仅在您明确工作表上的 [Open time] 时有效,否则它将仅采用 MAX 值。

【讨论】:

  • 谢谢你的回复,你能解释一下关于“明确开放时间”的部分吗?
  • 您需要在工作表上添加[开放时间]字段。 Tableau 将始终聚合工作表中可用的最低详细级别。如果您没有在工作表上明确 [Open time],它将聚合到任何其他字段
  • 确认一下,在这种情况下,[Go Live] 是一个,[Open Time] 是多个。是否仍应格式化为DATEDIFF('day',MAX([Open Time]),MAX([SharePoint].[Go Live]))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2013-08-01
相关资源
最近更新 更多