回忆是一座桥
却是通往寂寞的牢

06、查询与新建表

  本篇文章将简单介绍新建表与查询两个功能的使用,并指出一些注意事项。


  新建表与查询非常相似,它们的返回结果都是一张表,而且它们所处的外部计值环境均无任何筛选上下文与行上下文。这两个功能的区别有两个,一个是使用的位置或工具不一样,另一个则是返回的结果是否存储进DAX引擎。

  先来介绍一下新建表,新建表顾名思义就是新建一张表,需要通过返回表的表函数来构造。在Power Pivot与Power BI这两个工具中,只有Power BI有新建表功能,在Power Pivot中则没有这个功能,但也可以通过链接回表的形式达到一样的效果。新建表功能在Power BI上方的工具栏里的多个位置都存在着按钮,单击该按钮后即可激活公式输入栏,然后输入新建表的DAX表达式即可返回一张表并且将结果存储进DAX引擎中,由新建表所得到的表在功能上是与基础表一致的。如下图所示的就是一个简单的新建表例子:

  由于新建表或查询这两个功能都需要通过返回表的表函数来构造,所以,如果你是初学者,那么可以先简单了解一下这两个功能,等到后续掌握了更多的表函数时,彻底掌握这两个功能也就不在话下了。

  下面再来看一下查询,查询与新建表最大的区别就是新建表得到的结果会存储进DAX引擎,而查询所得到的结果则是虚拟表,并不会存储进DAX引擎中(在Power Pivot中内置的查询功能会把结果存放到Excel工作表中,但也不会存储进DAX引擎)。因此,查询一般都是在调试DAX表达式或者有临时性地获取一些特定数据的需求时才会用到。此外,在Power BI中并没有提供查询的功能按钮,因为已经有类似的新建表功能了,通过新建表功能来返回我们需要的表,然后用完就删掉刚新建的表,这样虽然麻烦一点,但也可以达到查询的目的。而在Power Pivot中,则内置有了查询功能,但使用起来比较隐秘。

  无论是Power Pivot还是Power BI,一般我们使用查询功能都是在DAX Studio这个外部工具上进行的,这个外部工具是必备的,它不仅可以做查询,还可以调试与格式化DAX表达式,此外还能分析表达式的性能与查看DAX引擎的内部查询计划,总之非常强大。关于它的使用我就不再赘述,你们可以自行找资料学习。言归正传,下面我们来看一个在DAX Studio中的简单查询例子,如下图所示:

  通过对比新建表与查询的两个例子,我们可以看到,在查询里只需要声明查询关键字:EVALUATE,然后输入返回表的表达式即可,这个查询关键字是必须要声明的,不可省略,更多的查询关键字将在后续文章中介绍。

  下面介绍一下在Power Pivot中如何使用查询功能,首先,在Excel界面下的数据选项卡中的现有连接按钮里找到DAX引擎中的任意一个表,然后以表的形式将数据返回到Excel中,然后在返回的表中的任意单元格里右键选择【表格】,再选择【编辑DAX】按钮,即可调出查询编辑框,然后输入查询的DAX表达式即可。具体见下图:

  上文中说过在Power Pivot中没有新建表功能,但可以通过链接回表的形式达到一样的效果。那么这个链接回表的操作就是在上面Power Pivot里实现查询的基础上完成的,只需要把查询返回在Excel工作表中的结果再导入到Power Pivot中即可。这样,当原始的基础表数据有变动时,只需要刷新一下,那么查询所得到的结果也会跟着刷新,又由于查询所得到的表又被导入到了Power Pivot中,使得DAX引擎中由链接回表所导入的表也跟着刷新,从而实现了与新建表一样的功能。


  下面来看一下查询与新建表的一些注意事项:

  • 查询与新建表的最终结果必须为表
  • 查询必须先声明查询关键字:EVALUATE
  • 查询返回的结果并不存储进DAX引擎,而新建表返回的结果会存储进DAX引擎,且消耗内存
  • 由于查询的结果不需存储进DAX引擎,因此运算速度较快,常用于调试代码性能
  • 查询与新建表所处的计值环境无任何初始筛选上下文与行上下文

  DAX系列文章中涉及到的案例文件,均已上传到QQ群:344353627,若有需要,可自行加群获取。

未经允许不得转载:夕枫 » 06、查询与新建表
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论