在DAX进行字符串大小比较

2023-05-16

昨天看到一个人在论坛上上求助,想找一个方法按照一定要求对数据进行分类。分类要求是查找原始数据中的BU Type隶属于分类依据中的哪个区间,然后输出该区间对应的Identifier值。其中AA-ZZ区间指的是所有两位字母组成的BU Type。而以两位数字组成的BU Type则被分成了两类,一类是位于30-39区间的,还有一类是剩余数字区间的。
在这里插入图片描述

分类要求比较明显,解决方法也有很多种。可以用SEARCH函数来解决,判断当前BU Type中是否包含数字3,如果是,输出的Identifier就是2,如果不是,看是否是数字,如果是数字,Identifier就是3,如果不是数字,那就输出1。这种方法比较直接,但是扩展性不好。如果字母也有分类,就无法很好的解决问题了。

Identifier =
IF (
    SEARCH ( "3", 'Type'[BU Type],, 0 ) = 1,
    "2",
    IF ( ISERROR ( VALUE ( 'Type'[BU Type] ) ), "1", "3" )
)

在这里插入图片描述

有一个小伙伴share了他的解决方案,方法就很好。先看一下他如何解决的,首先通过“输入数据”的方式把分类条件存储到Power BI中。在输入的时候,他做了数据转换,创建了两个列,一个是Lower,用来存储分类区间的其实值,另外一个是Higher,用来存储分类区间的结束值。
在这里插入图片描述
创建完毕表单后,在原始数据列上创建了一个计算列,调用下面公式就轻松的获得了分类值。

ID =
CALCULATE (
    VALUES ( Identifier[Identifier] ),
    FILTER (
        Identifier,
        'Type'[BU Type] >= Identifier[Lower]
            && 'Type'[BU Type] <= Identifier[Higher]
    )
)

在这里插入图片描述

ID这个表达式实际上利用的原理是比较两个表单特定列是否有相同值。首先利用CALCUALTE函数功能,将行上下文转换成筛选上下文,之后通过FILTER函数去基于 Identifier表单构造一个子表单,该子表单中只包含与当前行’Type’[BU Type] 值相对应的数据,最后再对应输出ID值。

这个表达式最根本点在于利用了字符串大小比较这一方法关系来判断’Type’[BU Type]位于哪个分类区间。数字类型的数据进行比较非常简单直观明了,但是字符串之间也可以进行大小比较,这个估计用到的情况就比较少见了。这里的字符串大小比较不是指字符串长度,而是比较字母A是否大于字母B,或者字母A是否大于字母DC这种判断。

从自然语言的意思是来说其实做这种字母直接的比较并不具备大小意义,但是在计算机语言中则可以进行比较。比较的原则就是利用对应字符串的ASCII来进行。比如大小字母A的ASCII码十进制是65,而小写d的ASCII码是100,这样A就比d大。而对于AC和AF这两组字符串的比较,则遵循从左向右比较的原则,先看比较两端第一个字符,如果相同,就看第二个字符,然后以第二个字符的比较结果作为最终结果。所以AC>AF。而对于abc和ab进行比较,则还是遵从从左到右的顺序,挨个比较对应位置字符,由于前两位都相同,而第三位上abc有数据,ab没有,所以abc>ab。

在Power BI当中,对于数字来说,如果当前列column的数据类型是文本text类型,则这种数字大写的比较也按照ASCII码规则进行。例如当文本列存储10和99这两个字符串是,比较的结果是10>99。因为1对应的ASCII码是49,而9的ASCII码则是57。

这样,利用CALCULATE + FILTER 进行求解的表达式就可以使用多种分类要求,有很强的扩展性。

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

在DAX进行字符串大小比较 的相关文章

  • 在Power BI中用DAX新建列的方式进行累计求和

    在Power BI中用DAX新建列的方式进行累计求和 DAX 新建列来累计求和 累计求和 DAX 新建列 DAX函数 Filter DAX函数 EARLIER DAX函数 SUMX DAX 新建列来累计求和 Power BI有两种方式进行累
  • Power BI 上个月 DAX 滚动总计

    我正在 POWER BI 中工作 并尝试计算上个月滚动总计的 DAX 表达式 我有一个过滤器 我选择某个月份 我想计算上个月的滚动总数 下面的计算非常适合计算所选日期范围的滚动总计 如何计算前几个月的滚动总额 Rolling Total C
  • 另一个变量版本最高的总和(整个数据中没有最大版本)

    我正在努力让这项措施发挥作用 我想要一个度量 仅对每栋房屋的最大版本的值进行求和 因此 请遵循此示例表 House Id Version Id Value 1 1 1000
  • Power BI - 查找前后的匹配百分比(赏金 100)假设分析

    我有一个要求 我有一张这样的桌子 Role Skills Developer C Developer SQL Developer C Data Analyst R Data Analyst Python Data Analyst SQL B
  • 小计 <> 行总和

    我是 DAX 的新手 所以请耐心等待 用最简单的术语来说 我想将欧洲以外的所有区域的度量金额加倍 然后将结果相加 以下是 DAX 的一些示例 DEFINE measure Fact test CALCULATE IF SELECTEDVAL
  • PowerPivot:如何确定计算列中每组的最大值

    我正在 Power Pivot for Excel 2013 中构建数据模型 并且需要能够识别特定组的列中的最大值 不幸的是 我认为可行的内容以及我之前搜索的内容给了我一个错误或不适用 有一个类似的问题处理计算的度量而不是列 并且在 Pow
  • Power BI 字段参数过滤

    我有一个表 其中包含下面的社会经济切片器中显示的位列 少数族裔企业 小型企业等 我使用 字段参数 功能添加它们以完成下面的切片器 选择兽医拥有的小型企业 当前的行为是左侧的表将显示右侧选择的每一列 相反 我只想显示适用于兽医拥有的小型企业的
  • 如何将一个计算列的每一行除以另一个计算列的总和?

    我无法使用此示例数据得到正确的除法 Calculated column Another calc column 48 207 257 370 518 138 489 354 837 478 1 005 648 1 021 2 060 1 4
  • 对 Power BI 中第一次出现的不同值求和

    在 Power BI 中 我的数据中有一些重复的条目 其中只有 1 列不同 这是 详细信息 列 Name Value Details Item 1 10 Feature 1 Item 1 10 Feature 2 Item 2 15 Fea
  • 如何计算销售范围内的排名

    如何计算销售级别定义的类别内的排名 假设我们希望将销售额高于某个阈值的产品标记为 高 类别 将低于该阈值的产品标记为 低 类别 这是一个示例数据 let Source Table FromRows Json Document Binary
  • DAX 中的递归

    我不知道这是否可能 但我希望能够创建一个计算列 其中每行都依赖于其上方的行 一个典型的例子是斐波那契数列 https en wikipedia org wiki Fibonacci number 其中序列由递归关系定义F n F n 1 F
  • DAX 测试整数

    我有一个实际值列 如下所示 ID Airport A 98 4 B 98 0 C 95 3 我正在尝试将上面的数字格式化为前端报告的百分比 我将其写在 switch 语句中 为了方便起见 我将逻辑编写为 IF 布尔值 example mea
  • 无法从日期列进行测量

    我正在尝试计算 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
  • 桥接表 - DAX 还是 M?

    我们应该使用 DAX 还是 M 构建桥接表 图片盗自here https stackoverflow com questions 53320431 power bi weighted average yield across 2 table
  • 如何在运行总计矩阵 Power BI 中填写空白

    我正在 Power BI 中研究损失三角 其中AccidentYear是行和DevYear是列 表中的值为Running Total通过测量创建 Running Total Loss CALCULATE SUM fact Losses Pa
  • 在 DAX 或 Power Query 中自引用列

    我希望在 power query 或 DAX 中创建下表的 D 列 您可以在单元格中看到 Excel 公式 我需要从当前行添加列 并在上面添加先前计算的行 该专栏是自引用的 我被困住了 不知道如何继续 任何帮助 将不胜感激 您无法在 DAX
  • Power BI:如何动态更改货币

    我们要求允许用户选择他想在仪表板中看到的货币 如下例所示 默认情况下 它是GBP 如果用户更改为USD 我们需要以美元显示支出 在引擎盖下我们已经有了桌子InvoiceDetail其中包含预先进行货币转换的列 SpendInGBP Spen
  • Power Bi:如何参数化 Top N 视觉级别过滤器 [重复]

    这个问题在这里已经有答案了 Since PowerBI不支持Top N过滤page level 我想要使用 N 作为参数针对多个视觉效果立即更改它 是否可以 P S In 提供了更复杂情况的解决方案 最后本文 https www sqlbi
  • 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

随机推荐

  • 高并发场景下,python各web框架的优劣对比与示例分析

    高并发场景下 xff0c python各个web框架的优劣对比与示例分析 Python有许多适合高并发场景的Web框架 xff0c 下面是其中几个 xff1a Flask Flask是一个轻量级的Web框架 xff0c 由Werkzeug和
  • 6. fastApi文件上传请求处理示例

    需求 xff1a 开发文件上传功能接口 接口路径 files 请求类型 post 响应结果 返回文件的大小 单位bytes 实现方案 使用post类型处理方法 xff0c 指定参数类型为bytes或UploadFile 使用File 方法处
  • 7. fastApi表单数据处理详解与示例

    需求 前端通过表单数据的形式发送用户名与密码到后端 xff0c 后端通过用户信息校验 xff0c 过滤出合法用户 xff0c 并为用户设置cookie 超时时间为24h xff09 接口路径 login 请求类型 post方法发送的文件 响
  • C语言结构体字节对齐规则

    C语言结构体字节对齐规则 基本规则 规则1 xff1a 结构体 xff08 struct xff09 的数据成员 xff0c 第一个数据成员放在offset为0的地方 xff0c 以后每个数据成员存放在offset为该数据成员大小的整数倍的
  • 如何处理C++构造函数中的错误

    用C 43 43 写代码的时候总是避免不了处理错误 xff0c 一般来说有两种方式 xff0c 通过函数的返回值或者抛出异常 C语言的错误处理一律是通过函数的返回值来判断的 xff0c 一般是返回0 NULL 或者 1 表示错误 xff0c
  • 改进后的A星三维路径规划完整算法(matlab语言),包括障碍物模型优化

    改进后的A星三维路径规划完整算法 matlab语言 xff0c 包括障碍物模型优化 xff0c 平滑处理 xff0c 启发函数的改进 xff0c 环境地图可以根据自己的实际情况进行改进 xff0c 算法包含了非常详细的代码注释 ID 695
  • 8. fastApi请求错误处理方式与示例

    请求错误处理 某些情况下 xff0c 需要向客户端返回错误提示 需要向客户端返回错误提示的场景主要如下 xff1a 客户端没有执行操作的权限客户端没有访问资源的权限客户端要访问的项目不存在服务器内部错误 遇到这些情况时 xff0c 通常要返
  • 9. fastApi的json编码器使用示例

    JSON 编码器 有时 xff0c 我们要把 Pydantic 模型等数据类型转换为字典 列表等与 JSON 兼容的格式 例如 xff0c 把 Pydantic 模型存入数据库时就要进行转换 为此 xff0c FastAPI 提供了 jso
  • 10. fastApi数据更新方法

    用 PUT 更新数据 把输入数据转换为 JSON 数据 xff08 例如 xff0c 使用 NoSQL 数据库时 xff09 xff0c 可以使用 jsonable encoder 例如 xff0c 把 datetime 转换为 str P
  • 写在前面--(与各位读者聊聊)

    xff61 xff65 xff65 xff89 xff9e 嗨 xff01 我是jesse xff0c 欢迎来到我的Python爬虫博客专栏 xff01 在本专栏中 xff0c 我将分享Python爬虫技术的各个方面 xff0c 包括基础知
  • 爬虫示例一【简单爬虫实现】

    爬虫构建 回顾以上的接口分析过程 xff0c 整个对我们有用的请求过程是 xff0c 浏览器发送一个GET请求 xff0c 直接获取到了我们想要的数据页面 那么如何通过python代码复现以上的请求过程呢 xff1f 对于这样的简单爬虫 x
  • 第一节 请求与响应

    请求 由客户端发往服务器 xff0c 分为四个部分 xff1a 请求头 xff0c 请求方法 xff0c 请求网址URL 请求体 当我们在浏览器中输入一个网址或点击一个链接时 xff0c 浏览器会向服务器发送请求 xff0c 请求获取指定的
  • 第二节 Web网页基础

    网页的组成 网页需要通过 HTML CSS JavaScript 和各种媒体资源的组合 xff0c 实现多种功能和呈现效果的页面 一个网页通常由以下几个组成部分构成 xff1a HTML标记语言 xff1a 定义网页的结构 内容和格式 xf
  • 第三节 爬虫基本原理

    爬虫概述 爬虫是指通过程序自动化地获取互联网上的信息 xff0c 从而达到快速 大量地获取数据的目的 Python语言有着丰富的爬虫库和框架 xff0c 因此成为了编写爬虫程序的主流语言之一 Python写爬虫的优势 xff1a 语法简洁
  • 第四节 Session和Cookie

    静态页面和动态页面 静态页面是指服务器上存储的固定页面 xff0c 每次用户访问时返回的内容都是一样的 xff0c 内容不会根据用户的操作或者其他因素发生改变 静态页面通常由 HTML CSS 和 JavaScript 等静态文件组成 xf
  • 案例四 ajax动态加载页面数据爬虫

    需求 xff1a 爬取https spa3 scrape center 电影名称 xff0c 电影分类 xff0c 上映时间和评分 接口分析 直接在浏览器请求https spa3 scrape center xff0c 并查询网页源码 xf
  • python数据持久化总结

    数据持久化 数据持久化通常指将数据保存到磁盘或其他永久存储介质中以便以后使用 以下是一些在Python中进行数据持久化的常用方法 xff1a 文件操作 xff1a 可以使用Python内置的文件操作来将数据保存到文本文件中 xff0c 例如
  • MongoDB查询综合

    数据库操作 选择数据库 use lt 数据库名 gt 展示当前所在数据库 db 在选择数据库后 xff0c 可以进行该数据库的相关操作 xff0c 例如创建集合 插入文档等 查询语法 查询全部文档 db lt 集合名 gt find 指定条
  • c++如何编译

    include lt iostream gt 预处理指令 xff0c include是找一个文件 xff0c 一般引出头文件 int main main函数不用从主函数返回任何数据 std cout lt lt 34 Hello World
  • 在DAX进行字符串大小比较

    昨天看到一个人在论坛上上求助 xff0c 想找一个方法按照一定要求对数据进行分类 分类要求是查找原始数据中的BU Type隶属于分类依据中的哪个区间 xff0c 然后输出该区间对应的Identifier值 其中AA ZZ区间指的是所有两位字