美文网首页DAX从入门到精通
DAX从入门到精通 1-2-1 DAX针对SQL开发者

DAX从入门到精通 1-2-1 DAX针对SQL开发者

作者: PowerBI入门到实践 | 来源:发表于2019-06-13 23:53 被阅读0次

    DAX针对SQL开发者

    如果你熟悉SQL,那么你应该已经通过不同列之间建立关系,来处理问题很了解了。从这点来看,对于新的DAX环境,你不会感到很陌生,因为计算DAX也是在多个表之间建立关系,从而来建立查询获取汇总值。

    介绍关系的处理

    SQL和DAX的第一个区别是模型中关系的工作方式。在SQL中,你可以通过声明外键来表之间的关系,但是数据引擎不会使用这些外键来进行计算,除非你特别的写出来。例如,你有个Customer 表和Sales表,CustomerKey是customer表的主键,也是sales表的外键,可以按如下的方式写一个查询。

    SELECT
    Customers.CustomerName,
    SUM ( Sales.SalesAmount ) AS SumOfSales
    FROM
    Sales
    INNER JOIN Customers
    ON Sales.CustomerKey = Customers.CustomerKey
    GROUP BY
    Customers.CustomerName
    

    即使在数据模型中申明了对应的外键,在查询的时候,依然需要特别的重新写一次关联条件。虽然这样使查询显得啰嗦,但是这个又挺有帮助,使你可以灵活的使用关联条件进行查询,自由度得到很好的拓展。
    在DAX中,关系是是数据模型的组成部分,它们全部相当于是left outer关联。一旦在模型中定义了数据模型,就不必再查询中再次特别关联类型,DAX自动设置为左关联,因此,之前的sql语句可以等价于如下的写法:

    EVALUATE
    SUMMARIZE (
    Sales,
    Customers[CustomerName],
    "SumOfSales", SUM ( Sales[SalesAmount] )
    )
    

    因为DAX知道sales和customers间的关系,它会自动按照模型建立关系。最终,summarize按照Customers[CustomerName]进行了聚合,不需要其他的关键字来说明聚合的条件。

    相关文章

      网友评论

        本文标题:DAX从入门到精通 1-2-1 DAX针对SQL开发者

        本文链接:https://www.haomeiwen.com/subject/ivryfctx.html