SSRS 表达式不从查找中读取值

SSRS Expression Doesn't Read Value from Lookup

我的问题: 我有一份 SSRS 报告,该报告按指标、设施和 month_end dt 分组。该报告使用我拥有的分组显示每个月及其相应的计算值,但 YTD 不起作用。我第一次在组外有 YTD,我在组内尝试过。

我可以显示 YTD 值,但它一遍又一遍地重复第一个指标的 YTD 值,而不是区分不同的指标名称,尽管在数据集中有数据。 SSRS 将设施参数带入 运行,因此它一次仅 运行 一个设施,因此可能不需要该组。

YTD 有点复杂,因为我用于 YTD 的日期范围因指标名称而异,因此并非所有 12 个月都包括在内,所以我让它在 SQL 之前计算我需要的 YTD 值到 SSRS 数据集,但我认为与我的存储方式和分组方式有关的一些事情阻止我在表达式中获取它。

SSRS DESIGN

Data Structure

正如您在数据结构示例中看到的那样,我使用不同的 Agg_Type.

存储了 YTD 值

我在 YTD 测试和 YTD 表达式中试过这个:

Lookup("Y",Fields!ROW_AGG_TYPE.Value, Fields!DASH_VALUE.Value, "FIT_Dash_Data")

但它只是一遍又一遍地为我提供第一个指标的值,而不是区分指标,尽管行分组应该强制这样做??

我试过在主数据集上创建一个连接列,然后在第二个数据集上创建它只是过滤到 Y 值,然后对其进行查找,但是当我这样做时我没有得到任何数据。我觉得我应该能够从一个数据集中做到这一点,因为我可以完全控制我的 SQL 设计。

这个连接到第二个数据集以查找 Y 值,但 returns 没有。

=Lookup(Fields!JoinColumn.Value,Fields!JoinColumn.Value, Fields!DASH_VALUE.Value, "YTD")

这是在两个数据集中创建和存储 Join 列的方式:

=Fields!METRIC_NAME.Value & "||" & Fields!FAC_CD.Value & "||" & Fields!ROW_AGG_TYPE.Value

有没有什么事情让我无法从我的数据中获取价值?我对 SSRS 作为报告开发工具还很陌生,所以我确定我只是遗漏了一些东西。

您的 LOOKUP 总是返回第一个值的原因是 LOOKUP 检查任何带有“Y”的记录,并且总是找到第一个并停止。我认为您可以使用您提到的 JOIN 来修复它。

=Lookup(Fields!METRIC_NAME.Value & "||" & Fields!FAC_CD.Value & "||" & "Y", 
        Fields!METRIC_NAME.Value & "||" & Fields!FAC_CD.Value & "||" & Fields!ROW_AGG_TYPE.Value, 
        Fields!DASH_VALUE.Value, "FIT_Dash_Data")

这将检查具有匹配指标和设施的记录。

但我不明白为什么你不能从一个数据集中汇总你的当前值

=MAX(IIF(Fields!ROW_AGG_TYPE.Value = "Y", Fields!DASH_VALUE.Value, NOTHING)

这将检查组中的记录,并为 Y 的记录给出 MAX 值,而不是 Y 的记录为 NOTHING(对于 SSRS 为 NULL)。从数据来看,每个FAC只有一条Y记录。