【问题标题】:SQL Query to DAX (in Power BI) with multiple joins, count, group by具有多个联接、计数、分组依据的对 DAX(在 Power BI 中)的 SQL 查询
【发布时间】:2019-03-25 15:02:54
【问题描述】:

我是 Power BI 的新手,在接触过 SQL 后,我正在尝试学习 DAX。我在 Power BI 中使用 Group by 函数搞砸了,但是当您在 select 语句和多个联接中有计数时,我不确定它是如何工作的。我还尝试了从 SQL Server 导入数据并粘贴此查询的选项,并且该选项有效,但是当我从另一个表添加日期切片器时,它使其独立于 Power BI 中的其他数据可视化。

我的目标是将这个查询变成饼图。然后我想要一个日期切片器用于日期/PTO 日期,以便您可以指定一个时间范围,并且饼图将按状态更新为正确的计数。

SQL 查询:

SELECT
    state,
    Count(ptodate) AS TotalPTO 
FROM
    solar.solar.accounts AS sa 
    JOIN
        solar.solar.systems AS ss 
        ON sa.systemid = ss.systemid 
    JOIN
        solar.solar.addresses AS sad 
        ON sa.addressid = sad.addressid 
    JOIN
        solar.solar.customerassociatedepccalculations AS sepc 
        ON sa.customerid = sepc.customerid 
    JOIN
        solar.reference.merchants AS rm 
        ON sa.merchantid = rm.merchantid 
WHERE
    sepc.active = 1 
    AND rm.merchantid = 4 
GROUP BY
    state;

【问题讨论】:

  • 您能澄清一下您的具体问题是什么吗?写的不清楚。
  • 如何用DAX语言编写SQL查询
  • 只有当您的数据存储在多维数据集(例如 SQL Server 分析服务)中时,DAX 才能用作查询语言。如果您的数据在 SQL 数据库中,则必须使用 SQL 来查询数据。一旦数据在 Power BI 中,您就可以使用 DAX 创建自定义度量和列。

标签: sql powerbi dax


【解决方案1】:

因此,DAX 用于在您已经导入数据后对数据进行计算;不是用来查询的。

对于查询,您可以做以下三件事之一:

使用 PowerQuery 的 GUI(即转到“获取数据”并点击)

自己编写 M 代码(这是与 DAX 不同的语言 - 老实说,通常不值得这样做)

或者像现在一样使用 SQL 获取数据 > SQL Server > 高级选项,然后粘贴到您的查询中

【讨论】:

  • 是的,我尝试了获取数据选项并粘贴了我的查询。我为它创建了一个饼图,但是当我尝试使用 PTOdate 的日期切片器时,饼图没有更新。也许我将查询连接到其他 SQL 表的数据模型不正确,或者我遗漏了什么?
  • 您必须在 Power BI 模型视图中连接表,但是...查看您的查询,您没有生成日期列。只是一个状态列,带有日期计数。由于该查询没有生成日期列......所以你不能按日期过滤。所以,除非我有误解,否则您可能首先需要 SQL 查询方面的帮助,而不是 Power Bi 部分?
  • 我同意你的看法。我将如何生成日期列?当我使用聚合计数函数并按状态分组时,您的查询中如何包含任何其他列? State 和 count(ptodate) 是我在 SELECT 语句中生成的唯一列。如何生成日期列?谢谢
  • 好的,我已经更正了我的代码,现在可以使用 Power Bi 中的饼图更新日期切片器。选择状态,count(PtoDate) 作为 TotalPTO,来自 solar.solar.accounts 的 ptodate 作为 sa 加入 solar.solar.systems 作为 ss on sa.systemid=ss.systemid 加入 solar.solar.addresses 作为 sa.addressid = sad 上的悲伤。 addressid join solar.solar.CustomerAssociatedEpcCalculations as sepc on sa.customerid =sepc.customerid join solar.reference.merchants as rm on sa.merchantid =rm.merchantid where sepc.active =1 and rm.merchantid =4 group by state, ptodate ;
猜你喜欢
  • 2016-07-04
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
相关资源
最近更新 更多