首页 > 解决方案 > 使用 SQL Server 或 Vertica 将按日期范围的记录转换为按日/月的记录

问题描述

我可以使用 SQL Server 或 Vertica 作为数据库,使用 Tableau 作为报告工具。在任何这些媒介中的解决方案都会有所帮助。

数据资源:我有一个包含 100 条记录和结构的表(userActivity):用户、开始日期、结束日期

需要:我有兴趣按天和月准备显示“总活跃天数”的报告,这意味着如果 User1 的范围为“20180101”到“20180331”,他们将在 1 月、2 月和 3 月的每一天贡献一天或如果按月汇总,则为 31、28 和 31 天。

目标:我最终将汇总所有用户的总活跃天数作为输出,以实现每天/每月的单一总数。

该报告将跨越永久性,因此我更喜欢不按天/月对 CASE/IF-THEN 语句进行硬编码的解决方案。

谢谢!

标签: sqlsql-servertsqltableau-apivertica

解决方案


虽然递归 CTE 非常适合这种情况,但它可以单独使用 tableau 来处理。假设您有这些数据,以下是生成视图所需的步骤。

在此处输入图像描述

  1. 创建一个包含所有预期天数的参考表。即使您需要涵盖从 01/01/2018 到 01/01/2043 的 25 年,这仍然少于 10k 行。

在此处输入图像描述

您需要两个日期完全相同的列,因为 Tableau 不允许在同一列上有多个连接条件。

  1. 使用以下标准在参考日历和数据之间创建内部联接。 在此处输入图像描述

  2. 构建视图

    在此处输入图像描述


推荐阅读