SQL 到 powerBI 表达式?
SQL to powerBI expression?
如何在 PowerBI 中编写此表达式
select distinct([date]),Temperature from Device47A8F where Temperature>25
对 PowerBI 完全陌生。是否有任何工具可以将查询从 sql 更改为 PowerBI 表达式?
我尝试了很多不同类型的表达式,但都出现错误,大多数时候我得到的是:
The expression refers to multiple columns. Multiple columns cannot be converted to a scalar value.
需要帮助,谢谢。
在我发布我的答案后,想知道你的预期结果是否是按温度只得到一个日期,换句话说,你的结果集中没有重复的日期。
旁注: select distinct([date]),Temperature from Device47A8F where Temperature>25
returns 自 DISTINCT
关键字以来的重复日期评估 [=14= 中指定的不同列值] 语句,它不会 return 特定列中的不同值,即使您用括号括起来也是如此。
现在是什么把我们带到了这里。我在你的错误中看到的是你试图在一个只接受 scalar-valued
(只计算一个值)的度量中使用 table-valued
(产生一个包含多列的 table )表达式.
假设你有一个像这样的 table:
运行 您的 SQL 查询将以黄色行突出显示:
可以看到01/09/2016
日期重复了。如果要创建 measure
,则必须定义要显示的温度计算。即平均值、最大值或最小值等
在下面的表达式中计算每个日期的最高温度大于 25:
MaxTempGreaterThan25 =
CALCULATE ( MAX ( Device47A8F[Temperature] ), Device47A8F[Temperature] > 25 )
在这种情况下,度量 MaxTempGreaterThan25
是按日期计算的。
如果您不想生成度量而是 table。在 Power BI 工具栏 select Modeling
选项卡中单击 New Table
图标。
使用这个表达式:
MyTemperatureTable =
FILTER ( Device47A8F, Device47A8F[Temperature] > 25 )
它应该会生成一个新的 table,名称为 MyTemperatureTable
,如下所示:
我建议你学习一些关于 DAX 的基础知识,它与 SQL
/ T-SQL
有很大不同,根据你的模型和数据,有些事情你不能做。
如果有帮助请告诉我。
如果您的 objective 是在 Power BI 视觉对象中显示结果,您可能不需要编写任何代码,例如一个table。如果数据类型为数字(例如温度),Power BI 自然会聚合数据。
我只想在报告页面上添加一个 Table 视觉对象,并向其中添加日期和温度列。然后在 Visualizations / Fields / Values 中,我会单击 Temperature 字段上的小向下箭头并设置聚合,例如最大。然后在 Visualizations / Fields / Filters 中,我会单击温度字段上的小向下箭头并设置过滤器,例如大于:25
硬编码解决方案不太可能在用户提出的下一个问题中幸存下来,例如"but what if I want to see Temperature > 24? Or 20? Or 30?"
如何在 PowerBI 中编写此表达式
select distinct([date]),Temperature from Device47A8F where Temperature>25
对 PowerBI 完全陌生。是否有任何工具可以将查询从 sql 更改为 PowerBI 表达式?
我尝试了很多不同类型的表达式,但都出现错误,大多数时候我得到的是:
The expression refers to multiple columns. Multiple columns cannot be converted to a scalar value.
需要帮助,谢谢。
在我发布我的答案后,想知道你的预期结果是否是按温度只得到一个日期,换句话说,你的结果集中没有重复的日期。
旁注: select distinct([date]),Temperature from Device47A8F where Temperature>25
returns 自 DISTINCT
关键字以来的重复日期评估 [=14= 中指定的不同列值] 语句,它不会 return 特定列中的不同值,即使您用括号括起来也是如此。
现在是什么把我们带到了这里。我在你的错误中看到的是你试图在一个只接受 scalar-valued
(只计算一个值)的度量中使用 table-valued
(产生一个包含多列的 table )表达式.
假设你有一个像这样的 table:
运行 您的 SQL 查询将以黄色行突出显示:
可以看到01/09/2016
日期重复了。如果要创建 measure
,则必须定义要显示的温度计算。即平均值、最大值或最小值等
在下面的表达式中计算每个日期的最高温度大于 25:
MaxTempGreaterThan25 =
CALCULATE ( MAX ( Device47A8F[Temperature] ), Device47A8F[Temperature] > 25 )
在这种情况下,度量 MaxTempGreaterThan25
是按日期计算的。
如果您不想生成度量而是 table。在 Power BI 工具栏 select Modeling
选项卡中单击 New Table
图标。
使用这个表达式:
MyTemperatureTable =
FILTER ( Device47A8F, Device47A8F[Temperature] > 25 )
它应该会生成一个新的 table,名称为 MyTemperatureTable
,如下所示:
我建议你学习一些关于 DAX 的基础知识,它与 SQL
/ T-SQL
有很大不同,根据你的模型和数据,有些事情你不能做。
如果有帮助请告诉我。
如果您的 objective 是在 Power BI 视觉对象中显示结果,您可能不需要编写任何代码,例如一个table。如果数据类型为数字(例如温度),Power BI 自然会聚合数据。
我只想在报告页面上添加一个 Table 视觉对象,并向其中添加日期和温度列。然后在 Visualizations / Fields / Values 中,我会单击 Temperature 字段上的小向下箭头并设置聚合,例如最大。然后在 Visualizations / Fields / Filters 中,我会单击温度字段上的小向下箭头并设置过滤器,例如大于:25
硬编码解决方案不太可能在用户提出的下一个问题中幸存下来,例如"but what if I want to see Temperature > 24? Or 20? Or 30?"