使用NBi测试DAX计算

NKD

我正在为SSAS表格项目的自动测试工具做一些研究。我找到了NBi,并认为它真的很酷。我试图进行设置并成功运行了一些基本测试。但是,当我尝试测试dax计算时,它显示“找不到函数”(请参见屏幕截图)。听起来好像它不支持SUM,但是鉴于SUM是基本功能,我想它应该可以工作。由于我是该工具的新手,因此我想再次检查是否做错了什么,或者仅仅是错误在说什么……(不支持的功能)。

我回头查看了NBi文档,并提到要检查他们的NCAL.dll以获取所有可用的表达式。不幸的是,我无法打开该dll文件的可读版本。任何帮助表示赞赏。

这是我要测试的公式:

= SUMX(FILTER(MyTable,AND(MyTable [Date] = EARLIER(MyTable [Date]),MyTable [Account] = EARLIER(MyTable [Account]))),MyTable [Amount])

在此处输入图片说明

XML代码(位)文件

 <test name="My second test: Calculated column compared to DAX formula">
  <system-under-test>
   <execution>
    <query connectionString="Provider=MSOLAP.7;Data Source...">
     <![CDATA[    
    EVALUATE
    SUMMARIZE (MyTable, MyTable[Date], MyTable[Account], MyTable[Amount], MyTable[CalculatedAmount])
     ]]>
    </query>
   </execution>
  </system-under-test>
  <assert>
    <evaluate-rows>
      <variable column-index="0">Date</variable>
      <variable column-index="1">Account</variable>
      <variable column-index="2">Amount</variable>
      <variable column-index="3">CalculatedAmount</variable>
      <expression column-index="3" type="numeric" tolerance="0.01"> = SUMX(FILTER(MyTable, AND(MyTable[Date] = EARLIER(MyTable[Date]), MyTable[Account] = EARLIER(MyTable[Account]))), MyTable[Amount])</expression>
    </evaluate-rows>
  </assert>
 </test>
塞德里克·查理(Cedric L.Charlier)

NBi支持在查询标记中而不是在表达式标记中评估DAX查询。表达式和评估行标记不旨在比较两个查询。为此,请更改测试以在两个查询之间使用断言equalTo。这将更容易并且会起作用。

我想一个更好的问题是,如何确保在设计表格模型时其他开发人员不会意外更改我输入的计算/表达式,如何测试度量和计算列?

我将在三个层次上回答:概念,逻辑和技术。

从概念上讲,您的测试是错误的:决不能在断言和被测系统中使用相同的实现。这不是针对NBi或任何框架的,而是针对所有自动化测试的。测试的作用不是确保某人不会更改某些内容,而是要确保某些内容给出正确的结果。即使您的实现错误,将工件与自身进行比较也始终会导致绿色测试。在这种情况下,您必须使用具体的静态结果更改断言,或者需要创建导致数据库计算相同的sql语句,或者在MDX中找到另一个查询导致相同的结果。

从逻辑上讲,以下句子是不正确的

这是我要测试的公式:

您已在中assert而不是在中定义了此公式system-under-test这意味着它不是您要测试的内容,而是您的参考(您可以100%确信它是正确的)。您正在测试的是查询EVALUATE SUMMARIZE (MyTable, MyTable[Date], MyTable[Account], MyTable[Amount], MyTable[CalculatedAmount])

在技​​术层面上,使用评估行是正确的选择。该断言不期望函数或查询,而是基于行变量(无DAX,无SQL等)的表达式。的使用EARLIER是一个明确的信号,表明它是不可能的。在您的情况下,您必须将两个查询进行比较:

<assert>
  <equalTo>
    <column index="0" role="key" type="dateTime"/>
    <column index="1" role="key" type="numeric"/>
    <column index="2" role="value" type="numeric"/>
    <column index="3" role="value" type="numeric" tolerance="0.01"/>
    <query>
      EVALUATE SUMMARIZE (MyTable, MyTable[Date], MyTable[Account], MyTable[Amount], SUMX(FILTER(MyTable, AND(MyTable[Date] = EARLIER(MyTable[Date]), MyTable[Account] = EARLIER(MyTable[Account]))), MyTable[Amount])
    </query>
  </equalTo>
</assert>

PS:我显然不是DAX的专家,并且从语法的角度来看,我不确定上面的查询是否有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 dax 查询计算 PowerBI 中的方差

来自分类Dev

DAX在Power BI中计算票证的使用期限

来自分类Dev

如何使用DAX查询在Power BI中计算增量值?

来自分类Dev

使用AVERAGE()计算的DAX度量值的MDX语法

来自分类Dev

使用DAX实现Power BI中的动态字段计算

来自分类Dev

DAX:使用多个过滤器计算总和的问题

来自分类Dev

使用一个 DAX 公式创建多个计算列

来自分类Dev

DAX测试整数

来自分类Dev

Excel PowerPivot DAX计算字段

来自分类Dev

DAX 中的项目收入计算

来自分类Dev

使用Powerpivot中的DAX计算今天到特定日期之间的天数

来自分类Dev

DAX测量以使用其内部的参数计算平均值

来自分类Dev

DAX查询(使用FIlter和MAX函数),计算最近30天的销售总额

来自分类Dev

在Power BI中使用DAX计算每一行的“下降因子”

来自分类Dev

如何在Power BI中使用DAX中的过滤器计算百分比?

来自分类Dev

DAX中的运行/累积总计,仅使用度量,不计算列

来自分类Dev

使用(DAX,Powerpivot,Powerquery)在Excel 2019中计算每周平均值

来自分类Dev

DAX测量以使用其内部的参数计算平均值

来自分类Dev

如何使用 DAX 计算 Power BI 中的百分比

来自分类Dev

PowerBI:如何使用 DAX/Measure 计算/转换时间为百分比

来自分类Dev

使用Robolectric时如何计算测试覆盖率

来自分类Dev

使用 dynogels 的 AWS DAX

来自分类Dev

DAX:计算“没有”当前行的度量

来自分类Dev

Power BI - DAX - YTD 计算的异常行为

来自分类Dev

Dax 查找日期基于 Criteria 计算列

来自分类Dev

DAX 计算列考虑多行生成结果

来自分类Dev

为计算列循环工作 DAX 函数

来自分类Dev

仅使用DAX中的度量来计算每个产品的平均变化百分比中位数

来自分类Dev

如何使用DAX计算Power BI中每个类别和仅选定项目的百分比

Related 相关文章

  1. 1

    使用 dax 查询计算 PowerBI 中的方差

  2. 2

    DAX在Power BI中计算票证的使用期限

  3. 3

    如何使用DAX查询在Power BI中计算增量值?

  4. 4

    使用AVERAGE()计算的DAX度量值的MDX语法

  5. 5

    使用DAX实现Power BI中的动态字段计算

  6. 6

    DAX:使用多个过滤器计算总和的问题

  7. 7

    使用一个 DAX 公式创建多个计算列

  8. 8

    DAX测试整数

  9. 9

    Excel PowerPivot DAX计算字段

  10. 10

    DAX 中的项目收入计算

  11. 11

    使用Powerpivot中的DAX计算今天到特定日期之间的天数

  12. 12

    DAX测量以使用其内部的参数计算平均值

  13. 13

    DAX查询(使用FIlter和MAX函数),计算最近30天的销售总额

  14. 14

    在Power BI中使用DAX计算每一行的“下降因子”

  15. 15

    如何在Power BI中使用DAX中的过滤器计算百分比?

  16. 16

    DAX中的运行/累积总计,仅使用度量,不计算列

  17. 17

    使用(DAX,Powerpivot,Powerquery)在Excel 2019中计算每周平均值

  18. 18

    DAX测量以使用其内部的参数计算平均值

  19. 19

    如何使用 DAX 计算 Power BI 中的百分比

  20. 20

    PowerBI:如何使用 DAX/Measure 计算/转换时间为百分比

  21. 21

    使用Robolectric时如何计算测试覆盖率

  22. 22

    使用 dynogels 的 AWS DAX

  23. 23

    DAX:计算“没有”当前行的度量

  24. 24

    Power BI - DAX - YTD 计算的异常行为

  25. 25

    Dax 查找日期基于 Criteria 计算列

  26. 26

    DAX 计算列考虑多行生成结果

  27. 27

    为计算列循环工作 DAX 函数

  28. 28

    仅使用DAX中的度量来计算每个产品的平均变化百分比中位数

  29. 29

    如何使用DAX计算Power BI中每个类别和仅选定项目的百分比

热门标签

归档