我可以将SQL Server或Vertica用作数据库,将Tableau用作报告工具。这些介质中的任何一种的解决方案都是有帮助的。

数据资源:
我有一个包含100条记录的表(userActivity),其结构为:User,StartDate,EndDate

需要:
我对按日期和月份显示“总活动天数”的报告感兴趣,这意味着,如果User1的范围为“ 20180101”至“ 20180331”,则他们将在1月,2月和3月的每一天贡献一天,或31如果按月汇总,则为28天和31天。

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

该报告将涉及永久性,因此,我希望解决方案不要按日/月对CASE / IF-THEN语句进行硬编码。

谢谢!

最佳答案

尽管递归CTE在这种情况下是不错的选择,但可以单独使用tableau处理。假设您有此数据,以下是生成视图所需的步骤。

sql - 使用SQL Server或Vertica将按日期范围的记录转换为按日/月的记录-LMLPHP


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


sql - 使用SQL Server或Vertica将按日期范围的记录转换为按日/月的记录-LMLPHP

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


使用以下条件在参考日历和数据之间创建内部联接。
sql - 使用SQL Server或Vertica将按日期范围的记录转换为按日/月的记录-LMLPHP
建立视图

sql - 使用SQL Server或Vertica将按日期范围的记录转换为按日/月的记录-LMLPHP

08-26 11:50