【发布时间】:2015-12-25 11:10:54
【问题描述】:
我的数据库中有这样的数据。我的报告将有 2 个参数,Start Date 和 End Date。
例如,如果用户选择Start Date = 1/1/2015 和End Date = 12/31/2015,则报告应返回用户TierCode = Privilege。
我已经使用存储过程实现了这一点。但是这里的性能是一个问题,因为我无法使用提取数据。
SELECT
m.MemberID,
ty.TierCode AS TierCodeTY,
ly.TierCode AS TierCodeLY
FROM
Tangs_dim_Member m LEFT JOIN
(
SELECT TierCode, MemberID, ROW_NUMBER() OVER(PARTITION BY MemberID ORDER BY SnapshotDate DESC) AS i
FROM dw_Tangs_MonthlySnapshot
WHERE SnapshotDate >= @StartDate AND SnapshotDate <= @EndDate
) ty
ON
ty.MemberID = m.MemberID AND ty.i = 1 LEFT JOIN
(
SELECT TierCode, MemberID, ROW_NUMBER() OVER(PARTITION BY MemberID ORDER BY SnapshotDate DESC) AS i
FROM dw_Tangs_MonthlySnapshot
WHERE SnapshotDate >= DATEADD(year,-1,@StartDate) AND SnapshotDate <= DATEADD(year,-1,@EndDate)
) ly
ON
ly.MemberID = m.MemberID AND ly.i = 1
如何在不使用存储过程的情况下实现上述报告。只要我可以使用视图/自定义查询/表格+提取数据,计算字段就可以了。因此,数据将在 Tableau 中过滤,而不是在数据库中。
【问题讨论】: