优化“where date Between”类型查询的 Dax 和模型

2024-01-24

我正在构建一个模型以允许报告两个单独的数据集,在本例中,我们将说学生数据集和员工数据集。

数据集非常独立,两者之间唯一真正的联系是日期,因此从模型的角度来看,有一个学生星型模式和一个员工星型模式。

显示的数据是快照类型数据,回答如下问题: - 对于选定的日期,显示所有在职员工 - 对于选定的日期,显示所有注册的学生

这意味着,当选择单个日期时,模型会查找所选日期在就业开始和结束日期内的所有员工,并查找所选日期在注册开始和结束日期内的所有学生。

这意味着我必须做出决定,如何使用单个日期维度从每个模式返回正确的数据。创建关系不起作用,因为表格中的关系不允许“之间”类型查询,因此我有一个不相关的日期维度,并且每个模型的 Dax 找到适用的行。

问题是它不是性能最好的。对于大约 50k 行,添加一个度量可能需要 5-10 秒。

我问是否有更好的方法来编写查询,或者更改模型以仍然让我执行“之间”样式查询但提供更好的性能。

以下是 dax 查询的示例,用于返回在特定日期注册的所有学生。

感谢您的任何建议。

All Enrolled Students:=IF (
HASONEVALUE ( 'Date'[Date] ),
CALCULATE (
    DISTINCTCOUNT ( 'Students'[StudentID] ),
    FILTER (
        'Students',
        'Students'[StudentStartDateID] <= MIN ( 'Date'[DateID] )
            && 'Students'[StudentEndDateID] >= MAX ( 'Date'[DateID] )
    )
),
BLANK ())

在某些情况下,不相关或“断开连接”的表非常适合为切片器、时间线和过滤器提供动力。正如您在问题中所说,您有两个优化选项:重新构建您的数据集 or 优化现有测量语法.

重构数据集

复制开始日期和结束日期之间每一天的每一行,并有一列表示该迭代日期。这可以通过多种方式完成,具体取决于您获取数据集的方式,但可能很乏味。然后,将表与该迭代日期相关联,并使用该关系从“日期”过滤到“事实”。如果这是一个定期报告和/或您正在使用 SQL 来提取数据,那么利用 PowerPivot 的关系计算能力可能是值得的。

优化DAX语句

如果这是一次性请求,或者数据集太繁琐而无法每天复制,那么请坚持使用断开连接的表方法并清理度量语法。由于您已经包含了 MIN() 和 MAX() 函数,并且您的 CALCULATE() 返回 DISTINCTCOUNT(),因此条件 HASONEVALUE() 函数是不必要的。我在模拟环境中运行了此程序并获得了良好的结果,但这可能会因计算机性能和数据集大小而异。请参阅下面的清理语法。

All Enrolled Students:=CALCULATE (
    DISTINCTCOUNT('Students'[StudentID]),
    FILTER(
        'Students',
        'Students'[StudentStartDateID]<= MIN('Date'[DateID]) &&
        'Students'[StudentEndDateID]  >= MAX('Date'[DateID])
    )
)

如果您的 StudentID 列是唯一的(这对我来说有意义),您可以进一步加快速度。

All Enrolled Students:=CALCULATE (
    COUNT('Students'[StudentID]),
    FILTER(
        'Students',
        'Students'[StudentStartDateID]<= MIN('Date'[DateID]) &&
        'Students'[StudentEndDateID]  >= MAX('Date'[DateID])
    )
)

如果 StudentID 不是数字,请将 COUNT() 替换为 COUNTA() 以获得所需的效果。

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

优化“where date Between”类型查询的 Dax 和模型 的相关文章

  • 如何在 Power BI 中按度量筛选结果

    我需要能够按度量进行筛选 以便在 Power BI 中显示更精细的结果 我希望能够选择百分比在某个范围内的位置 或者 100 我对度量的计算是这样的 每列只能是 1 或 0 errorPercentage CALCULATE SUM mis
  • 对 Power BI 中第一次出现的不同值求和

    在 Power BI 中 我的数据中有一些重复的条目 其中只有 1 列不同 这是 详细信息 列 Name Value Details Item 1 10 Feature 1 Item 1 10 Feature 2 Item 2 15 Fea
  • Firebase 的喜欢/不喜欢功能

    该系统本身很容易理解 但实施起来却很棘手 此外 安全原因让我思考如何做到这一点 我正在考虑让该功能在前端 Firebase 脚本中工作 只需执行所有操作即可检查该用户是否已经发布了喜欢 不喜欢的内容 并在用户单击时删除 添加 切换 问题在于
  • Firebase“符号链接”到另一个节点

    关于我关于建模真实的面向用户的树结构的另一个问题 使用firebase树结构直接表示 文档大纲 结构 https stackoverflow com questions 39112792 using firebase tree struct
  • Excel 中具有多个条件的 CUBESET() 函数

    我正在尝试在 Excel 中创建 CUBESET 函数 但我不知道如何使用多个条件过滤它同一维度内 这就是我迄今为止所遵循的一个标准 示例1 CUBESET ThisWorkbookDataModel Facebook Bucket C A
  • 用于简单消息传递应用程序的 Cassandra 数据模型

    我正在尝试学习 Cassandra 并且总是发现最好的方法是从创建一个非常简单且小型的应用程序开始 因此 我正在创建一个基本的消息应用程序 它将使用 Cassandra 作为后端 我想做以下事情 用户将使用用户名 电子邮件和密码创建一个帐户
  • 无法从日期列进行测量

    我正在尝试计算 completionDate 列中的日期与今天之间的天数 表名称为 事件 2 我有一个名为 事件 的模拟器表 它正在工作 代码 DaysClosed DATEDIFF Incidents 2 completionDate D
  • MongoDB:使用不同的值进行更新和插入

    一些背景信息 我为每个用户都有一个文档 其中包含一个数组 其中包含与用户相关的最新 20 个事件 由于 MongoDB 没有此功能 限制文档内的数组 我将推送我的事件并弹出最新的事件 我的问题 初始化文档 又名用空值填充数组 我想原子地 创
  • 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
  • 关系数据建模与非关系数据建模

    我有一个用户数据库 每个用户具有以下属性 user id name zip city In a 关系型数据库我会在表格中对其进行建模user user id name 位置 ID 并有第二个表称为location location id z
  • 使用 powershell 刷新 Excel 工作表

    我在一个名为 test 的文件夹中有 10 个不同的 Excel 工作表 我想使用 Windows Power shell 脚本刷新数据连接和数据透视表中的数据 该过程使用 for 每个循环打开每个文件 然后在文件中选择 powerpivo
  • Power Bi:如何参数化 Top N 视觉级别过滤器 [重复]

    这个问题在这里已经有答案了 Since PowerBI不支持Top N过滤page level 我想要使用 N 作为参数针对多个视觉效果立即更改它 是否可以 P S In 提供了更复杂情况的解决方案 最后本文 https www sqlbi
  • 购物车和各种折扣。将折扣存储在数据库中并将其应用于订单计算

    目前 我正在寻找对购物车 订单 应用折扣 的最佳实践 因此 我计划实施此类折扣 固定用户折扣 例如 我想给我最喜欢的客户 10 的折扣 商品数量折扣 例如 您购买 10 支不同颜色的钢笔 您将获得 1 5 的折扣 优惠券折扣 例如 在促销活
  • YANG:如何在没有键的情况下对嵌套列表配置数据进行建模

    我正在尝试为这个配置文件构建 YANG 模型 该文件具有没有键的列表 然而 由于 YANG 列表中密钥的必要性 我无法构建精确的 YANG 模型 有没有什么想法如何在 YANG 中表示没有键的列表列表 该文件包含acl 其中可以有很多acl
  • 从 CREATE TABLE SQL 生成图形模式表示

    我有一个包含许多 CREATE TABLE 语句的 sql 文件 没有参考规范 MyISAM 的东西 但我喜欢创建不同的表框 然后手动组成表关系 我正在使用Mac 有免费的程序可以做到这一点吗 是的MySQL工作台 http dev mys
  • DAX 平均发行

    I have this table 这是我必须计算平均值的测量值 已交易合约 MTD TOTALMTD SUM 已交易合约 TestTable 交易日期 平均值 已成交合约 MTD SUM 交易天数 目前平均值的结果在每日水平上是正确的 当
  • 概念数据建模:RDF 是正确的工具吗?其他解决方案?

    我正在规划一个系统 该系统结合了各种数据源 并允许用户对这些数据源进行简单的查询 系统的一部分需要充当抽象层 了解所有连接的数据源 用户不应该 需要 了解底层数据 提供者 数据提供者可以是任何东西 关系 DBMS 错误跟踪系统 气象站 它们
  • PowerBI区分空白值和0值

    有没有办法区分列中的空白值和列中的 0 值 当我使用 if 语句进行测试时 它们被视为相同的值 有什么建议吗 就在这里 在计算列中 首先测试值是否为空 然后测试是否为零 因此 创建一个标志并通过它过滤您的总和度量 即 No blanks s
  • Firestore 数据建模文章和类别

    Context 我正在用 Angular 创建一个类似 wiki 的页面 wiki 页面的文章总数可能不会超过 5000 篇 我想获得最有效的 页面加载 方式 但我认为我对此太陌生 无法监督一种选择相对于另一种选择的后果 当然我也想遵守惯例

随机推荐