DAX基础 -- ISBLANK VS BLANK

article/2025/10/15 4:01:38

图片

28

满脑子的智慧,硬生生地撑大了我的脸

好久没更新了,今天来分享下两个很简单却很容易犯错的函数,ISBLANK和BLANK。

先来看语法

函数语法返回值
ISBLANKISBLANK ( <Value> )值为空则返回True,反之False
BLANKBLANK ( )任何类型的值

表面上看两个函数只有有无参数的区别,实际上是这样吗?

打开Dax studio,先来看一组结果,从结果上看是相同的,这也是为什么很多人会误以为它们是一样的。

图片

接下来看下面的例子,这时会发现结果很能和我们先前想的不一样了,ISBLANK将0和空字符判定为了False,而BLANK会认为它们是True,除非使用==。

图片

这时我们再来总结一下,

  • ISBLANK( ) 等效于 == BLANK()

  • ISBLANK认为0和空字符串并不为空

接下来在实际报表中来应用下上面的知识,先创建几个基础度量

Sales Amount = SUM( 'FactInternetSales'[SalesAmount])LM.Sales Amount = 
CALCULATE( [Sales Amount], DATEADD( 'DimDate'[FullDateAlternateKey], -1, MONTH))MOM%.Sales Amount = 
DIVIDE( [Sales Amount] - [LM.Sales Amount], [LM.Sales Amount] 
)

图片

表格中有两行的结果我们需要注意

  • 2011年1月的上期为空,即分母为空,所以结果也为空

  • 2014年3月本期为空,即分子为空,所以结果为-100%

接下来换另一种写法,从数学上讲(A-B)/B 是等价于 A/B - 1的,所以我们这样写同比

MOM%.Sales Amount 2 = 
DIVIDE( [Sales Amount], [LM.Sales Amount] ) - 1

图片

造成这个结果的原因是在加减法中BLANK会自动转换为0,0-1肯定是-1无疑了。所以为了让未发生的日期不显示负值,通常会做下判断

MOM%.Sales Amount 3 = IF(    NOT ISBLANK( [Sales Amount] ),    DIVIDE( [Sales Amount] - [LM.Sales Amount], [LM.Sales Amount] ))

图片

接下来再看另外一个例子,假设我们想统计产品数量

Products = 
COUNTROWS (  'DimProduct' )Product 2 = 
COUNTROWS ( VALUES ( 'DimProduct' ) )

图片

结果一样,也没什么问题,那么接下来,回去PQ页面,过滤到Product表中的Color为Black的数据,再来看结果

图片

结果不再相同,如果我们是求不同颜色的产品占所有产品的占比,那这里得到的结果也会不同。这里其实涉及到了一个概念,DAX中使用的表是扩展表。也就是说虽然我们删除了产品表中Color为Black的产品,但是Sales表是有这些产品的销售记录的,它们无法和现在的Product表的中记录相匹配,就会返回空,这也是很多时候我们会发现日期切片器有空白项的原因,事实表中的有无法和维度表匹配的记录。

每一个DAX函数看起来都很简单,但是当这些简单的DAX组合起来用时,也许会产生让我们难以理解的结果,这在写一些复杂地度量值是需要额外注意。


http://chatgpt.dhexx.cn/article/CHR9Wxs4.shtml

相关文章

StringUtils里面的 isEmpty方法和isBlank方法的区别

写在前面&#xff1a; 我是「扬帆向海」&#xff0c;这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录&#xff0c;如果您对 Java、算法 感兴趣&#xff0c;可以关注我的动态&…

isEmpty 和 isBlank 区别?

来源 | jianshu.com/p/98e7593ca0e2 org.apache.commons.lang.StringUtils 类提供了 String 的常用操作,最为常用的判空有如下两种 isEmpty(String str) 和 isBlank(String str)。 分析 我们通过源码来分析区别&#xff1a; public static boolean isEmpty(String str) {return…

isEmpty 和 isBlank 请别乱用了,小心把服务器搞崩!

大家好&#xff0c;我是老赵&#xff01; 大家好&#xff0c;我是程序汪&#xff0c;开发中经常有些小细节容易忽略&#xff0c;这些小细节往往容易导致代码缺陷&#xff0c;今天分享一波工具类的小细节 也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外…

java中isblank 方法_StringUtils中的isEmpty、isNotEmpty、isBlank和isNotBlank的区别详解

一、StringUtils中的isEmpty方法 1、StringUtils中的isEmpty方法中的源码如下: 注:由源码可知(判断某字符串是否为空,为空的标准是str==null或str.length()==0) 2、StringUtils中的isEmpty方法示例,如下代码 package com.rf.designPatterns.singleton; import org.apache.c…

isEmpty和isBlank的区别

isEmpty和isBlank的区别在于 isEmpty仅仅是判断空和长度为0字符串 isBlank判断的是空&#xff0c;长度为0&#xff0c;空白字符&#xff08;包括空格&#xff0c;制表符\t&#xff0c;换行符\n&#xff0c;换页符\f&#xff0c;回车\r&#xff09;组成的字符串。 比如&#…

Android studio模拟短信支付功能

需求&#xff1a; 模拟短信支付功能。创建两个Activity&#xff0c;功能分别为支付首页和短信验证Activity。用户在支付首页点击支付按钮&#xff0c;使用startActivityForResult()方法打开一个新的Activity&#xff0c;在短信验证Activity中模拟输入短信验证码&#xff0c;并…

沙箱-简单实现支付宝网页支付功能

1.在实现前我们得先了解支付宝支付功能-他是需要一个真实的软件 但我们没有真实的应用软件&#xff0c;所以支付宝给我们提供了一个沙箱的功能。沙箱就是一个虚拟的假的应用软件。了解沙箱可以看支付宝文档中心。----沙箱环境 &#xff5c; 开放平台 2.我们创建自己的沙箱账号…

uniapp实现支付功能

uniapp实现支付功能 详细参考&#xff1a; https://gitee.com/copperpeas/uniapp-payment uniapp-payment 介绍 uniapp支付 微信支付流程 测试接入的是uniapp官方预下单接口 APP应用首先去微信等开发平台申请开通支付&#xff0c;部分支付渠道需要配置支付目录&#xff0c;授…

微信小程序支付功能的实现

前言 最近需要在微信小程序中用到在线支付功能&#xff0c;于是看了一下官方的文档&#xff0c;发现要在小程序里实现微信支付还是很方便的&#xff0c;如果你以前开发过服务号下的微信支付&#xff0c;那么你会发现其实小程序里的微信支付和服务号里的开发过程如出一辙&#…

微信小程序前端微信支付功能 支付流程

小程序支付&#xff08;纯前端&#xff09; 前提&#xff08;实现微信小程序支付功能需要appid主体为企业&#xff0c;以及开通了微信商家服务的小程序才能实现&#xff0c;个人小程序是无法实现这个功能的&#xff09; 前期准备&#xff1a; 1.开通了微信支付&#xff0c;并…

微信小程序接入支付功能并实现支付

随着微信小程序越来越广泛的应用,现在小程序几乎无所不能(绝对啦,哈哈),那么就会有很多微信小程序需要有支付的需求,那么该文章将带领大家走一遍如何实现微信小程序的支付功能. 第一步,微信小程序管理后台 -> 微信支付->接入微信支付 及关联(设置)商户信息 如果是第一次…

软件测试之“支付功能”测试

测试思维 要分析测试点之前&#xff0c;我们先来梳理一下测试思维。总结来说&#xff0c;任何事物的测试思路都可以总结如下&#xff1a; 第一步&#xff1a;梳理产品的核心业务流程&#xff1a;明白这是个什么项目&#xff0c;实现了什么业务&#xff0c;以及是怎么实现的&a…

一步步教你如何在SpringBoot项目中引入支付功能

听说微信搜索《Java鱼仔》会变更强哦&#xff01; 本文收录于JavaStarter &#xff0c;里面有我完整的Java系列文章&#xff0c;学习或面试都可以看看哦 &#xff08;一&#xff09;引言 支付功能如今已经成为一个需要盈利的网站的基本功能了&#xff0c;如今的网站如果想要做…

支付功能怎么测试?

跳槽高峰期&#xff0c;作为测试&#xff0c;不管是面试还是笔试&#xff0c;必然要被考验到的就是”测试思维“。在面试中就是体现在如下面试题中&#xff1a; “说说你项目中的 xx 模块你是如何测试的&#xff1f;” “给你一个购物车&#xff0c;你要怎么测试&#xff1f;”…

面试题:支付功能怎么测试?如何回答?

文章末尾给大家准备了大量福利 前言 九月了&#xff0c;有很多的小伙伴已经全面武装好准备找工作了&#xff0c;九月和十月是黄金期——俗称”金九银十“。那么&#xff0c;作为测试&#xff0c;不管是面试还是笔试&#xff0c;必然要被考验到的就是”测试思维“。在面试中就…

支付功能测试用例(参考微信平台)

支付功能测试用例xmind&#xff0c;功能点以支付方式&#xff0c;支付手段&#xff0c;支付金额划分的 支付方式&#xff1a; 1.余额&#xff08;零钱&#xff09;支付 2.储蓄卡支付 3.第三方支付微信&#xff0c;支付宝&#xff0c;京东、百度、&#xff09; 4.信用卡支付…

vue项目支付功能

目录 1.支付宝方式&#xff1a; 代码&#xff1a; ​ 2.微信支付 二维码展示代码&#xff1a; ​请求后端的支付二维码接口 1.支付宝方式&#xff1a; 支付宝方式&#xff1a;点击支付宝支付, 调用后台接口(携带订单号)&#xff0c;后台返回一个form表单(HTML字符串结构)&am…

在线支付功能实现代码

我们都知道&#xff0c;在现在的网站中&#xff0c;基本上都会有支付功能&#xff0c;在线支付作为一个潮流已是现代化网站的必备功能模块&#xff0c;那么几天我就分享一下如果来做这个在线支付功能。 在线支付一般来说有两种实现方式&#xff0c;一种是调用各个银行提供的接口…

Java实现微信支付功能

微信实现支付功能与支付宝实现支付功能是相似的&#xff0c;接入前的准备工作&#xff0c;包括申请APPID、申请mchid、绑定APPID及mchid、配置API key、下载并配置商户证书等&#xff0c;具体可查看微信支付文档 接入前准备-APP支付 | 微信支付商户平台文档中心 (qq.com)正在上…

Java开发支付宝支付功能

之前做开发过程中&#xff0c;没有接触过支付相关的功能&#xff0c;最近做了一个支付相关功能的开发&#xff0c;包括支付宝和微信支付&#xff0c;为了避免以后忘记相关的流程&#xff0c;记录一下这次的开发经验&#xff0c;这里先介绍一下支付宝相关的开发。 首先在进行jav…