SQL到powerBI表达式?

时间:2016-09-21 05:46:11

标签: sql powerbi dax

如何在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.

需要帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

在我发布答案后,想知道您的预期结果是否只按温度获得一个日期,换句话说,结果集中没有重复日期。

附注: select distinct([date]),Temperature from Device47A8F where Temperature>25返回重复日期,因为DISTINCT关键字评估SELECT语句中指定的不同列值,它不会返回特定列中的不同值,即使用括号括起来也是如此。

现在是什么让我们来到这里。我在错误中看到的是,您尝试在仅接受table-valued的度量中使用scalar-valued(生成具有多列的表)表达式(仅计算一个值)。

假设你有一个这样的表:

enter image description here

运行SQL查询,您将以黄色行突出显示:

enter image description here

您可以看到重复01/09/2016日期。如果要创建measure,则必须定义要为温度显示的计算。即平均值,最大值或最小值等。

在下面的表达式中计算出每个日期的最高温度大于25:

MaxTempGreaterThan25 =
CALCULATE ( MAX ( Device47A8F[Temperature] ), Device47A8F[Temperature] > 25 )

在这种情况下,度量MaxTempGreaterThan25按日期计算。

enter image description here

如果你不想制作一个小节而是一张桌子。在Power BI工具栏中,选择Modeling标签,然后点击New Table图标。

enter image description here

使用此表达式:

MyTemperatureTable =
FILTER ( Device47A8F, Device47A8F[Temperature] > 25 )

它应该像这样生成一个名为MyTemperatureTable的新表:

enter image description here

我建议你学习一些关于DAX的基础知识,它与SQL / T-SQL有很大的不同,根据你的模型和数据,你可以做些什么。

如果这有帮助,请告诉我。

答案 1 :(得分:1)

如果您的目标是在Power BI视觉效果中显示结果,则可能不需要编写任何代码。一张桌子。如果数据类型是数字(例如温度),Power BI会自然聚合数据。

我只需在Report页面上添加一个Table visual,并将Date和Temperature列添加到它。然后在可视化/字段/值中,我会点击温度字段上的小向下箭头并设置聚合,例如的最大即可。然后在可视化/字段/过滤器中,我会点击温度字段上的小向下箭头并设置过滤器,例如大于:25

硬编码解决方案不太可能在用户的下一个问题中存活,例如"但如果我想看温度> 24?还是20?还是30?"