如何在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.
需要帮助,谢谢。
答案 0 :(得分:3)
在我发布答案后,想知道您的预期结果是否只按温度获得一个日期,换句话说,结果集中没有重复日期。
附注: select distinct([date]),Temperature from Device47A8F where Temperature>25
返回重复日期,因为DISTINCT
关键字评估SELECT
语句中指定的不同列值,它不会返回特定列中的不同值,即使用括号括起来也是如此。
现在是什么让我们来到这里。我在错误中看到的是,您尝试在仅接受table-valued
的度量中使用scalar-valued
(生成具有多列的表)表达式(仅计算一个值)。
假设你有一个这样的表:
运行SQL查询,您将以黄色行突出显示:
您可以看到重复01/09/2016
日期。如果要创建measure
,则必须定义要为温度显示的计算。即平均值,最大值或最小值等。
在下面的表达式中计算出每个日期的最高温度大于25:
MaxTempGreaterThan25 =
CALCULATE ( MAX ( Device47A8F[Temperature] ), Device47A8F[Temperature] > 25 )
在这种情况下,度量MaxTempGreaterThan25
按日期计算。
如果你不想制作一个小节而是一张桌子。在Power BI工具栏中,选择Modeling
标签,然后点击New Table
图标。
使用此表达式:
MyTemperatureTable =
FILTER ( Device47A8F, Device47A8F[Temperature] > 25 )
它应该像这样生成一个名为MyTemperatureTable
的新表:
我建议你学习一些关于DAX的基础知识,它与SQL
/ T-SQL
有很大的不同,根据你的模型和数据,你可以做些什么。
如果这有帮助,请告诉我。
答案 1 :(得分:1)
如果您的目标是在Power BI视觉效果中显示结果,则可能不需要编写任何代码。一张桌子。如果数据类型是数字(例如温度),Power BI会自然聚合数据。
我只需在Report页面上添加一个Table visual,并将Date和Temperature列添加到它。然后在可视化/字段/值中,我会点击温度字段上的小向下箭头并设置聚合,例如的最大即可。然后在可视化/字段/过滤器中,我会点击温度字段上的小向下箭头并设置过滤器,例如大于:25
硬编码解决方案不太可能在用户的下一个问题中存活,例如"但如果我想看温度> 24?还是20?还是30?"