要解释为文本的环绕数字
Surround Number to interpret as Text
我有一个 CSV 文件,其中一个名为 period
的字段存储了数字。现在在 SSRS 中,我需要使用一个多值参数,因为 SSRS 的工作原理是将它与我需要做的 CSV 一起使用 Join(Parameters!Period.Value, ",")
。
这个问题是我的数据集有以下查询:
="SELECT WarehouseZone, RevenueStream,ClientID,CONVERT(varchar(10),Period) FROM BudgetCSV.csv
WHERE WarehouseZone IN ('" & Join(Parameters!Warehouse.Value,"', '") & "')
AND (RevenueStream IN ('" & Join(Parameters!AnalysisCode.Value,"', '") & "'))
AND (ClientID IN ('" & Join(Parameters!Customer.Value,"', '") & "'))
AND (CONVERT(varchar(10),Period) IN ('"& Join(Parameters!Period.Value, "','") & "'))"
此代码适用于区域、流和客户端,但我发现句点数据类型不匹配。
有什么方法可以使用 Powerquery 让 csv 认为 period
是文本。我在某处看到,通过使列显示 ="1"
,它会将其解释为文本而不是整数。
您可以使用 Text.From or Number.ToText 将数字值转换为文本。
Text.From(Period)
或
Number.ToText(Period)
编辑:以下方法不起作用 - 使用此方法仅适用于个人层面,幸运的是有更好的解决方案
所以我在之前的 post 中提到我可以通过为每个周期创建一个参数来绕过使用 Join,但这会导致一个问题,如果我选择 10,1 也会是 return 因为,字符串。
这是因为我对每个参数都使用了以下代码
=iif(Join(Parameters!Period.Value,",").ToLowerInvariant().Contains("10"), "10",-999)
将该代码简单地更改为以下内容
=iif(Join(Parameters!Period.Value,",") = 1, 1,-999)
因此问题已解决,但任何有关我如何获得更动态的解决方案的意见都将非常有用,因为将来有时我需要使用更长的数字列表。
添加为后人看到我的错误的另一个答案。
实际上有一种更简单的方法可以实现这一点。
通过将上述过滤器添加到数据集,您无需任何 SQL 或任何额外参数即可实现此目的。对于长期使用 SSRS 的任何人来说,这可能是显而易见的,但我自己还是个新手。
我有一个 CSV 文件,其中一个名为 period
的字段存储了数字。现在在 SSRS 中,我需要使用一个多值参数,因为 SSRS 的工作原理是将它与我需要做的 CSV 一起使用 Join(Parameters!Period.Value, ",")
。
这个问题是我的数据集有以下查询:
="SELECT WarehouseZone, RevenueStream,ClientID,CONVERT(varchar(10),Period) FROM BudgetCSV.csv
WHERE WarehouseZone IN ('" & Join(Parameters!Warehouse.Value,"', '") & "')
AND (RevenueStream IN ('" & Join(Parameters!AnalysisCode.Value,"', '") & "'))
AND (ClientID IN ('" & Join(Parameters!Customer.Value,"', '") & "'))
AND (CONVERT(varchar(10),Period) IN ('"& Join(Parameters!Period.Value, "','") & "'))"
此代码适用于区域、流和客户端,但我发现句点数据类型不匹配。
有什么方法可以使用 Powerquery 让 csv 认为 period
是文本。我在某处看到,通过使列显示 ="1"
,它会将其解释为文本而不是整数。
您可以使用 Text.From or Number.ToText 将数字值转换为文本。
Text.From(Period)
或
Number.ToText(Period)
编辑:以下方法不起作用 - 使用此方法仅适用于个人层面,幸运的是有更好的解决方案
所以我在之前的 post 中提到我可以通过为每个周期创建一个参数来绕过使用 Join,但这会导致一个问题,如果我选择 10,1 也会是 return 因为,字符串。
这是因为我对每个参数都使用了以下代码
=iif(Join(Parameters!Period.Value,",").ToLowerInvariant().Contains("10"), "10",-999)
将该代码简单地更改为以下内容
=iif(Join(Parameters!Period.Value,",") = 1, 1,-999)
因此问题已解决,但任何有关我如何获得更动态的解决方案的意见都将非常有用,因为将来有时我需要使用更长的数字列表。
添加为后人看到我的错误的另一个答案。
实际上有一种更简单的方法可以实现这一点。
通过将上述过滤器添加到数据集,您无需任何 SQL 或任何额外参数即可实现此目的。对于长期使用 SSRS 的任何人来说,这可能是显而易见的,但我自己还是个新手。