DAX 度量:动态地仅首先考虑每个组,然后总体返回其计数

2024-03-22

我们正在努力解决一个可能比我想象的更简单的问题。我只是被困住了。

问题包括定义一个DAX Measure that 动态地仅计数first期间访问量对于每位患者。访问次数是不是第一期间必须是分配空白()价值。 在讨论目标之前,请让我介绍一下场景。

  1. 设想:
    我们有一个由一个事实表组成的模型(F_Visits)和二维(D_Customer; D_Calendar). F_Visits拥有 100 万条记录,包含顾客对服装店的所有访问。其字段有:
    Visit Id:递增唯一编号,即表的自然键
    Customer Fk:事实表中维度D_Customer的外键
    Calendar Fk:事实表中维度D_Calendar的外键
    Quantity:本次访问购买的布料数量
    Amount:访问中花费的美元金额
    Seller:为客户提供服务的员工姓名

  2. Goal:
    创建一个测量:

    • 动态(基于时间段选择)
    • 每个客户的每次访问返回值1如果这是所选时间段内该患者的第一个(期间最小访问 ID), 忽略每个客户在选定时间段内不是第一次的访问
    • 总体(总计)该措施需要返回总数第一次访问所有患者在选定时间段内进行的操作

过去两周我一直在在线社区进行搜索,但没有发现像我这样的问题。 类似(但不同)的一个如下:对 Power BI 中第一次出现的不同值求和 https://stackoverflow.com/questions/43547620/sum-distinct-values-for-first-occurance-in-power-bi与该问题相比的主要区别在于,对于在选定时间段内不是该患者的第一次就诊的情况,该问题的度量需要为 BLANK()。
3. 示例:

+----------+-------------+-------------+----------+--------+--------+
| Visit Id | Customer FK | Calendar FK | Quantity | Amount | Seller |
+----------+-------------+-------------+----------+--------+--------+
|        1 | John        |    20170101 |        1 |     10 | Rick   |
|        2 | John        |    20180101 |        2 |     15 | Morty  |
|        3 | John        |    20180101 |        3 |     17 | Eric   |
|        4 | John        |    20190101 |        2 |     17 | Eric   |
|        5 | Mark        |    20170101 |        1 |     17 | Eric   |
|        6 | Mark        |    20180101 |        3 |     12 | Eric   |
|        7 | Jack        |    20190101 |        0 |      0 | Rick   |
+----------+-------------+-------------+----------+--------+--------+
  1. 解决方案: 用户现在过滤日历 FK = 2018。这将排除一些访问 并且该度量是动态计算的,仅计算每个患者在选定时间段内的首次就诊:

明细表:

+----------+-------------+-------------+----------+--------+--------+---------+
| Visit Id | Customer FK | Calendar FK | Quantity | Amount | Seller | Measure |
+----------+-------------+-------------+----------+--------+--------+---------+
|        2 | John        |    20180101 |        2 |     15 | Morty  | 1       |
|        3 | John        |    20180101 |        3 |     17 | Eric   | BLANK() |
|        6 | Mark        |    20180101 |        3 |     12 | Eric   | 1       |
+----------+-------------+-------------+----------+--------+--------+---------+

Total:

+-------+
| Total |
+-------+
|     2 |
+-------+

卖家总计:

+--------+---------+
| Seller | Measure |
+--------+---------+
| Morty  | 1       |
| Eric   | 1       |
| Rick   | BLANK() |
+--------+---------+

该方法没有具体要求,只是需要在前端动态计算。

Update

请参考问题DAX:避免 ALL() 导致矩阵中维度属性的错误显示 https://stackoverflow.com/questions/58283254/dax-avoid-all-causing-incorrect-show-of-dimensional-attribute-in-matrix


First Visit =
// Make a table of all patients in context and their first visit id in context
VAR PatientFirstVisits =
  ADDCOLUMNS (
    VALUES ( 'F_Visits'[Customer Fk] ),
    "MinVisitId", CALCULATE (
        MIN ( 'F_Visits'[Visit Id] ),
        ALL ( 'F_Visits'[Visit Id], 'F_Visits'[Seller] ), // note: fragile
        ALLSELECTED ( 'D_Calendar' )
    )
  )
RETURN
  // Count the Visit Ids that are associated with one of the patient-visit pairs in
  // PatientFirstVisits
  CALCULATE ( 
    DISTINCTCOUNT ( 'F_Visits'[Visit Id] ),
    KEEPFILTERS ( TREATAS ( PatientFirstVisits, 'F_Visits'[Customer Fk], 'F_Visits'[Visit Id] ) )
  )

请注意脆弱部分,最佳实践是仅构建 FK 和可聚合事实的事实表,即事实表中没有任何描述性属性。注释部分脆弱的原因是您需要添加到ALL您添加到事实中的任何新的描述性列可能最终会出现在使用此度量的视觉效果中。如果你把卖家拉到暗淡的地方,你可以重构如下:

First Visit = 
VAR PatientFirstVisits =
  ADDCOLUMNS (
    VALUES ( 'F_Visits'[Customer Fk] ),
    "MinVisitId", CALCULATE (
        MIN ( 'F_Visits'[Visit Id] ),
        ALL ( 'F_Visits'[Visit Id] ),
        ALLSELECTED ( 'D_Calendar' ),
        ALL ( 'Seller' )
    )
  )
RETURN
  CALCULATE ( 
    DISTINCTCOUNT ( 'F_Visits'[Visit Id] ),
    KEEPFILTERS ( TREATAS ( PatientFirstVisits, 'F_Visits'[Customer Fk], 'F_Visits'[Visit Id] ) )
  )

根据我的经验,表中的列比模型中的表的波动性大约高一个数量级。我的意思是,我通常会看到列中的流失(以某种方式添加、删除、重构)比表中的流失更多。通过拉出“卖家”暗淡,您可以这样做ALL ( 'Seller' )并且您不必担心跟踪列。

以下是实际采取的措施:

Edit:基于询问我们是否可以做的评论的版本COUNTROWS版本而不是DISTINCTCOUNT。 VAR 是一样的,所以我只是显示了之后的计数RETURN.

...
RETURN
  // Count the Visit Ids that are associated with one of the patient-visit pairs in
  // PatientFirstVisits
  COUNTROWS ( 
    INTERSECT (
      GROUPBY( 'F_visits', 'F_visits'[Customer FK], 'F_visits'[Visit Id] ),
      PatientFirstVisits
    )
  )

这里我们只是将 VAR 表和事实中的值相交。该相交为 1 行或对于详细信息行为空,并且它是未经“F_Visits”[访问 ID] 过滤的总数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DAX 度量:动态地仅首先考虑每个组,然后总体返回其计数 的相关文章

  • Power BI 矩阵中的多种数据类型

    我在 10 个位置有大约 20 个不同的指标 并且想要创建一个矩阵 其中指标作为行 位置作为不同的列 我遇到的问题是指标是不同的数据类型 有些是整数 有些是 s 有些是 s 有没有办法像 Excel 一样将每一行自定义格式为不同的数据类型
  • DAX 条件运行总计

    我有一个包含 2 列的表 ID and Numbers 我想创建一个新专栏Result与数字列的运行总计 但每次运行总计超过 20 时 应重新启动运行总计 此外 如果运行总计低于 20 则不应显示结果 这必须仅使用 DAX 来完成 谢谢指教
  • 使用 Power BI 中的编辑查询和 R 对多个表/数据集进行操作

    我有两张桌子tbl A and tbl B在我想使用以下命令进行转换和分析的 Power BI 文件中Run R Script功能在Edit Queries 这将包括处理缺失值和连接表 然而 当启动 R 时 似乎我一次只能对一张表进行操作
  • Power BI 嵌入 URL - 多个过滤器

    我一直在尝试使用过滤器查询语法来过滤嵌入的 PBI 报告 filter tableName fieldName eq fieldValue 这对我有用 但是 当我应用多个过滤器时 PBI 报告仅根据最后一个 filter 进行过滤 而其他过
  • 如何计算销售范围内的排名

    如何计算销售级别定义的类别内的排名 假设我们希望将销售额高于某个阈值的产品标记为 高 类别 将低于该阈值的产品标记为 低 类别 这是一个示例数据 let Source Table FromRows Json Document Binary
  • 无法从日期列进行测量

    我正在尝试计算 completionDate 列中的日期与今天之间的天数 表名称为 事件 2 我有一个名为 事件 的模拟器表 它正在工作 代码 DaysClosed DATEDIFF Incidents 2 completionDate D
  • DAX 测量计算平均值及其内部参数

    我有这样的数据 App Num Days Price A1 10 100 A1 11 150 A2 11 200 A3 12 250 A3 12 300 A4 20 350 A4 21 400 天数的平均值在卡片视觉上显示为 13 857
  • 切片器同时管理表中的多个列

    我有一个报告页面 其中包含有关汽车和自行车的表格 它们每个都是一个单独的表 例如 Cars Id CarName Time1 Bikes Id BikeName Time2 这些表之间没有关系 但它们必须显示在同一页面中 我怎样才能使用Sl
  • 将 JSON 数组转换为

    我正在 Microsoft Power BI 中创建自定义视觉对象 创建 api 使用 typescript 和 d3 库 我也在使用jquery 我正在尝试创建一个分层树来表示拖入视觉对象的字段 因此树的深度是在运行时决定的 所以它不知道
  • DAX 条件总和

    如何构造返回 A 或 B 之和的 DAX 度量 逻辑是如果 A 为空 则取 B 所以预期的结果如下所示 A B Expected 1 1 1 1 2 2 1 2 1 2 2 3 6 7 当我使用测量时 Measure IF ISBLANK
  • 在 DAX 或 Power Query 中自引用列

    我希望在 power query 或 DAX 中创建下表的 D 列 您可以在单元格中看到 Excel 公式 我需要从当前行添加列 并在上面添加先前计算的行 该专栏是自引用的 我被困住了 不知道如何继续 任何帮助 将不胜感激 您无法在 DAX
  • 在 DAX 中进行测量以计算仅适用于 Power BI 的选定月份的年初至今

    如何构建 DAX 度量来计算特定月份的 YTD 值总和 这里我们有按月份分组的事实表 FactTable 填充了实际数据和预测数据 了解实际结束时间的唯一方法是 截止日期 列 年初至今 中的信息 在表 截止日期 列 YTD 结束 中 这是一
  • 如何按幂 bi 矩阵的降序对列日期进行排序

    我需要按日期降序对矩阵列进行排序 我还有什么选择吗 检查这个图像matrix https i stack imgur com sj9Et png我需要从 1 月 20 日到 1 月 19 日订购 此列已按日期列排序 提前致谢 一种解决方案是
  • Power BI:如何动态更改货币

    我们要求允许用户选择他想在仪表板中看到的货币 如下例所示 默认情况下 它是GBP 如果用户更改为USD 我们需要以美元显示支出 在引擎盖下我们已经有了桌子InvoiceDetail其中包含预先进行货币转换的列 SpendInGBP Spen
  • DirectQuery 模式下的 AAS 表格模型性能优势

    假设您有 10 个相当大的事实表 每个 50 100 GB 应该使用 Power BI 进行查询 它们不适合 Azure Analysis Services RAM 价格合理 因此 为了使用表格模型和 AAS 您必须使用以下模式 1 Pow
  • 在 Power BI/Power Query 中添加缺失的日期行并获取上面行的值

    假设我正在将以下内容导入 PowerBI Date Quantity 1 1 2018 22 1 3 2018 30 1 4 2018 10 其中外部源表是一系列日期 值行 其中缺少一些日期值 我想执行一些 DAX M 将任何缺失的日期行添
  • 在两个表中使用 OR 条件进行计算

    为了对蓝色产品或属于鞋子类别的产品的销售额求和 我使用以下 DAX 表达式 CALCULATE SUM Table SalesAmount FILTER Table Table Color Blue Table Category Shoes
  • 在 Power BI 自定义视觉对象中使用 d3.js 库绘制一条线

    我正在努力在 Power BI 自定义视觉对象中绘制一条单线 Power BI 中的报表是使用 TypeScript 和 d3 js v 3 0 编写的 我可以用轴绘制图表 但没有出现线条 在 HTML 文件中使用纯 d3 js 确实很容易
  • DAX/PowerBI - 平均集团价值

    我在 PowerBI 中有一个类似于以下内容的表 Table1 Name Group GroupScore Jim 1 75 Al 1 75 Becky 1 75 Ann 2 10 Cody 2 10 Zack 3 90 Jane 4 90
  • 如何使用 C# 以编程方式编辑 Power BI Desktop 文档参数或数据源?

    我有一个在 Power BI Desktop 中内置的报告模板 并保存为 pbix 或 pbit 文件 该模板使用DirectQuery SQL数据库作为数据源 而服务器地址和数据库名称被提取到参数中 还有一个参数包含一个ReportId

随机推荐

  • 在 Java Servlet 中生成 HTML 响应

    如何在 Java servlet 中生成 HTML 响应 通常 您会将请求转发到 JSP 进行显示 JSP 是一种视图技术 它提供了一个用于编写普通 HTML CSS JS 的模板 并提供了借助标签库和 EL 与后端 Java 代码 变量进
  • 折线百分比的纬度

    如何沿折线返回给定百分比的 latLng 值 我花了一天时间使用插值和单个节点来完成此任务 他们是不是有一个更简单的函数可以让 grunt 工作 谷歌地图 API v3 谢谢 http www geocodezip com scripts
  • 是否可以在 java jit 上使用 Final boolean 删除跳转?

    正如我们所知 有些人说 java JIT 比 C 更快 我有一些想法 可以利用 JIT 并在运行时代码中删除一些指令 这是我尝试过的示例代码 Created by kadirbasol on 4 6 14 public class Remo
  • jqplot 不同折线图的荧光笔

    我有一系列折线图jqPlot图表 我想要做的是关闭所有图表的突出显示 除了我想要突出显示的一张图表 我怎样才能做到这一点 我还没有一个很好的例子来说明如何做到这一点 也没有时间做一个 但我会在完成时更新 在所有事件中 荧光笔插件都会为每个系
  • PrestaShop:生产前删除所有测试数据

    我正在搜索一个在 MySql 上运行的脚本 以删除 截断表 PrestaShop 数据库版本 1 4 9 上的所有测试数据 客户 订单 购物车等 感谢 帕斯卡 安装 Prestashop Cleaner 并在配置中您可以选择删除目录 订单和
  • RestAssured:如何禁用 PreAuthorize

    我正在使用 RestAssured 测试 API 我调用的方法使用下一个注释 PreAuthorize hasAnyRole ROLE1 ROLE2 ROLE3 我的测试类包含用于测试的活动配置文件 对于测试配置 我们使用 yaml 文件
  • 在 AngularJS 中使用“scope”从另一个控制器调用一个控制器的方法

    我试图通过使用在第一个控制器中调用第二个控制器的方法scope多变的 这是我的第一个控制器中的方法 scope initRestId function var catapp document getElementById SecondApp
  • Haskell 中的字符串格式化

    Haskell 相当于什么 string str string Format 0 1 10 20 C 有一个Printf https hackage haskell org package base docs Text Printf htm
  • 如何制作多列无序列表?

    我正在尝试创建一个如下所示的项目列表 主要要求是列表应该灵活 可以在不接触代码的情况下添加或删除列表项 到目前为止我发现的最好的解决方案是将所有列表项 包括标题 放入 li 标记并使用本文中介绍的技术之一对其进行样式设置分开列出文章 htt
  • 重写 URL 并使新 URL 显示在地址栏中

    我使用下面的代码来重写一些 URL RewriteEngine On Options FollowSymlinks RewriteBase RewriteRule New Hampshire a zA Z0 9 s html NH 请记住
  • 如何在 DLL 边界上公开 STL 列表?

    我有一个 DLL 需要访问主机应用程序中 STL 容器中存储的数据 因为 C 没有标准的 ABI 而且我想支持不同的编译器 所以应用程序和 DLL 之间的接口基本上必须保持普通旧数据 对于向量来说 这相对简单 您可以简单地返回向量的内存块
  • 如何在Python中的setup.py中包含并安装本地依赖项?

    我正在创建一个setup py分发我的应用程序 该应用程序有许多可以通过 pip 安装的依赖项 它还有一些无法从 PyPI 安装的自定义依赖项 所以 我创建了一个custom package 0 1 whl它将包含在发行版中 并且必须在之后
  • XMPP - 名册订阅说明

    假设我的 Jabber 服务器上有 2 个用户 Alice 和 Bob 添加到名册中并订阅为both 我需要执行以下步骤 Alice 向 Bob 发送订阅请求 当 Bob 收到请求时 他会批准该请求 Bob 可能也对 Alice 的存在感兴
  • 将 2 个参数 Lambda 表达式转换为 1 个参数 Lambda 表达式(指定一个参数)

    我有表情 Expression
  • PHP-从字符串中删除所有制表符

    我可以从字符串中删除所有单个选项卡 Copying and pasting the tab directly txt str replace txt 这只会删除单个选项卡 但不会删除双选项卡 然后我尝试了这个 认为 t 足以找到选项卡 tx
  • Django Rest Framework 不允许我拥有多个权限

    我的 Django Rest 框架和权限有问题 例如 DRF 不允许我对我的观点拥有多个权限 如果我以管理员用户身份登录 API 我可以使用此 mixin 进行访问 class PermissionMixin object permissi
  • 博客中最常见的 3 页序列

    给定一个由字段 用户 页面 url 组成的网络日志 我们必须找出用户最常使用的 3 页序列 有一个时间戳 并且不能保证单个用户访问将按顺序记录 它可能像 user1 Page1 user2 Pagex user1 Page2 User10
  • 如何通过telnet发送POST请求

    我想知道如何向服务器 例如 Google 搜索 发送 POST 请求 我已经知道如何发送 GET 请求 例如 GET http www google com 我尝试这样做 POST wikipedia or POST wikipedia o
  • 用于编译程序的 G++ -I 选项

    这里有一个小问题 对于我这样一个Linux程序新手来说是无法解决的 现在我有一个需要编译的main cpp程序 有一个 include Down h 在文件的前面 实际上 这个头文件存在于另一个目录中 位于 include目录 另外 Dow
  • DAX 度量:动态地仅首先考虑每个组,然后总体返回其计数

    我们正在努力解决一个可能比我想象的更简单的问题 我只是被困住了 问题包括定义一个DAX Measure that 动态地仅计数first期间访问量对于每位患者 访问次数是不是第一期间必须是分配空白 价值 在讨论目标之前 请让我介绍一下场景