- 博客(238)
- 收藏
- 关注
原创 精品丨模型关系介绍
PowerBI中的模型关系相信小伙伴们都不会感觉到陌生,因为一份优秀的报表无法离开数据模型的支撑。对比其它BI类工具而言,白茶认为其建模功能才是最为突出的功能点。
2024-08-10 16:09:36
1368
1
原创 必看~计算组转义问题
场景介绍:PowerBI在使用计算组进行数据格式转化的时候,有时候逻辑明明是正确的,但是呈现的结果却差强人意。那么这个问题是如何产生的呢?又该如何规避么?
2024-07-28 11:18:18
422
原创 注意!避免计算组覆盖!
问题描述:PowerBI在实际使用中,针对于某些数据,需要呈现文本类型的标签,一般这类需求,都是通过计算组来解决的。但计算组在使用中,也会存在一些问题,就是一旦点击交互,就会影响到其它度量值。
2024-07-13 13:08:50
419
原创 计算组的妙用!!页面权限控制
需求描述:某些特殊的场景下,针对某页看板,需要进行数据权限卡控,但是又不能对全部的数据进行RLS处理,这种情况下可以利用计算组来解决这个需求。
2024-07-06 17:07:14
410
原创 干货!!SSAS模型刷新步骤
白茶在上一篇文章向小伙伴们介绍了如何将已经开发好的PowerBI模型迁移到SSAS整个操作过程,与此同时也带来了新的问题,那就是。
2024-06-22 12:45:58
777
原创 利用Python处理DAX多条件替换
小A:白茶,救命啊~~~白茶:什么情况?小A:是这样的,最近不是临近项目上线嘛,有一大波,一个两个倒没啥,600多个,兄弟,救命啊~~~白茶(假装沉思):兄弟,你这个事不好搞啊!小A(眼神暗示):放心 ,规矩我懂!白茶:开搞开搞!在实际业务场景中,上述情况产生的频率是非常高的,究其根本,其实有三种原因:业务逻辑在频繁的改动,牵一发而动全身数据来源驳杂而不唯一KPI指标过多,观察口径统一。
2024-06-02 08:22:17
544
原创 BI技巧丨个性化视觉对象
BOSS:那个,那个谁,最近用户反映了,说是你们做的报表不太行啊?!白茶:(???)老板,怎么说?BOSS:就是能不能让**用户在报表上自己调整某个可视化?**比如柱形图调整为环形图或者明细表啥的?(苍蝇搓手!白茶:(假装沉思…)老板,这个有点难啊…BOSS:放心,规矩我懂!(胸脯拍得啪啪作响)白茶:稍等,我研究研究。在报表使用过程中,用户经常会想着能不能自己动手,在当前报表的基础上,自己有一些个性化的DIY操作,来满足自助化分析的需求,毕竟报表开发者,有时候并不能百分百的Get到业务的痛点。
2024-03-23 12:19:06
586
原创 BI技巧丨钻取动态度量值
PowerBI自带的数据钻取功能,在实际应用中是用户使用度较高的功能之一,特别是需要实际操作的业务用户,往往需要根据汇总的结果定位到相关的明细数据,以便进行下一步的流程操作,这种场景下钻取功能显得尤为便利。两个度量值都可以满足钻取的需求,但是有一个严重的漏洞,实际上我们在设计报表时,明细表默认是不会选择隐藏的,是需要开放给用户进行明细数据导出的,而两个明细表默认进来的情况,都不太理想,需要我们处理一下。根据上面的业务形态,不难发现,其实用户想要的,就是动态度量值的切换,我们实现的办法有两种。
2023-12-16 15:03:27
891
原创 BI技巧丨RowNumber应用介绍
1.从结果上看,当OrderBy参数只有一个时,Rank会出现并列排名,而RowNumber则不会,会按照顺序依次打标签序号,这点其实和SQL中二者的区别是一致的;白茶在之前的文章中,给大家介绍过Rank函数的应用场景,其实与Rank函数同时推出的还有RowNumber函数,二者之间有一些差异,但是总体应用的场景基本类似。3.这里补充一下,Rank函数的第一参数ties如果省略,则默认为SKIP,排序结果为:1、2、2、4,如果设置为DENSE,则排序结果为:1、2、2、3;
2023-12-09 14:15:20
863
原创 BI技巧丨利用Rank函数排名
除了上述的3个问题之外,还有相关的绝对排名、相对排名以及组内排名等,白茶这里就不赘述了,感兴趣的小伙伴可以自己动手测试。擅长SQL的小伙伴不难发现,微软就是将SQL中的Rank函数移植到了DAX中,写法上有差异,其内核基本相同。微软新推出的开窗函数Rank,可以说是对排名问题的一次优化,也解决了一些之前Rankx函数的坑点。实际场景中,经常会出现并列排名的情况,一般情况的处理办法是发现并列排名,则进行加权处理。到这里,我们的准备工作完成,接下来我们来看看在不同的场景中,Rank函数的表现。
2023-10-28 07:37:41
816
原创 BI技巧丨Window应用之累计求和
除了上述累计求和场景应用之外,Window函数在处理同值累计和上期累计的获取上,都要比之前的方式更加灵活,感兴趣的小伙伴可以自行动手测试,白茶这里就不赘述了。③WINDOW的from参数,设定从第一个位置开始,绝对位置,to设定到当前位置,相对位置,即从最初的第一行累计到当前的每一行;核心在于Window的from和to参数的设定,可以将其设置为绝对位置和相对位置。①WINDOW的写法对比之前的写法简洁了很多,省略了获取行日期的操作;从性能分析器的结果来看,Window的写法对比变量的写法要优化很多。
2023-09-24 14:03:17
516
原创 BI技巧丨Window应用之移动平均
Values的写法本质上和Topn的写法是没差异的,区别就是上下文不同,而案例数据量级非常的小,所以Values的查询时间不具备参考价值。2.为了展示不同的上下文,Topn是借助日期表构建的逻辑,Values利用的是Fact表中的日期列;③.Allselected的用途是为了保证一些其他筛选的效果,在当前案例中使用All的效果是一样的;②.Window里面的REL代表的是相对的意思,即每行从向前平移2行的位置开始,截至到本行为止;④.Filter的用途,是为了过滤掉没有销售事实的日期,避免影响计算结果。
2023-09-10 10:39:32
211
原创 BI技巧丨Window应用之同环比
无论是对比之前的时间智能函数的写法,还是对比日期表加列的写法,包括本期对比WINDOW函数的写法,OFFSET在同环比计算上的速度都是最优的。relation:表表达式,后续参数orderby,partitionby,matchby的内部参数,都需要来自它或相关表。而WINDOW函数,因为有from和to两个定位值,因此性能上面对比OFFSET是有损耗的。from:表示窗口开始的位置,正负数均可,可以是固定值,也可以是DAX表达式。to:表示窗口结束的位置,正负数均可,可以是固定值,也可以是DAX表达式。
2023-08-26 12:39:36
218
原创 BI技巧丨利用Index计算半累计
在实际的业务场景中,特别是财务模块和库存管理模块,经常需要我们针对每个月的期初期末进行相关指标计算,这也是我们之前曾经提到的Calculate基础应用——半累计计算。relation:表表达式,后续参数orderby,partitionby,matchby的内部参数,都需要来自它或相关表。这是我们之前的处理方式,利用Lastdate函数或Filter+All+Max的组合,完成半累计计算,求出相关指标。没错,是这样的,除了函数功能有所区分以外,剩下的参数用途基本一致。orderby:可选项,排序依据。
2023-08-11 20:29:49
254
原创 BI技巧丨利用OFFSET计算同环比
partitionby的用途是为了进行分区,基本定义与SQL中是一致的,我们添加了年份字段进行分区,因为分区隔离的原因,向前偏移无法取到值,因此201801返回结果为空。从结果上我们不难看出,orderby更改了我们之前偏移的依据,原本我们是依据年月向前偏移的,orderby将其更改为参照销售数量。微软最近更新了很多开窗函数,其内部参数对比以往的DAX函数来说,多了很多,这就导致学习的时间成本直线上升。从结果上看,二者是一致的,都没有太大的问题,但是从写法上看,开窗函数的写法无疑是简洁了很多。
2023-08-05 15:02:19
358
1
原创 BI-SQL丨两表差异比较
EXCEPT是用来比较两个表之间的数据差,返回的结果集为在第一个表中存在且在第二个表中不存在的数据;INTERSECT是用来获取两个表之间的数据交集,返回的结果集为两个表中相同的部分。BOSS:哦,对了,差点忘记告诉你了,新系统没有进行过数据校验,所以切换之前,需要你处理一下,这个能整不?BOSS:哎,白茶,我们最近新上了一个系统,后续有一些数据要进行源切换,这个能整么?要知道,对于数仓来说,数据的准确性是非常重要的,也是衡量数仓是否可用的标准之一。3.被比较的两个表中不能存在不可被比较的数据类型。
2023-07-29 17:55:51
517
原创 BI-SQL丨XML PATH
通过WHERE关键字,我们可以将XML PATH的结果与表中原有UserName列进行自关联展示,但是会有很多的重复项,因此,我们需要通过GROUP BY来进行分组去重。通过上面的结果,我们不难理解,其实它就是将查询结果集以XML形式呈现,将多行的查询结果,合并在同一行展示。在上面的截图中,我们不难发现,每个结果前面都多了一个分隔符,很明显,从应用层来说,第一个分隔符是不需要的。而STUFF函数,可以在源字符中,删除给定长度的字符序列,并且从指定的起始位置,插入给定的字符序列。
2023-07-22 12:41:28
494
原创 BI-SQL丨XML
这个就要从SQL Server的应用开始说起了,众所周知,SQL作为计算机的通用语言之一,在各个领域都存在广泛的应用,也有着各式各样的开发规范要求,但是并不是所有的场景下,开发者都会遵循相关的规范。这种情况下,小A和小B之间接口的对接,就会出现很大的差异性。为了解决这一现状,SQL Server引入了XML类型的字段,这样不需要针对表结构进行更改,可以将差异化类型的数据,存储在XML类型的字段中。可以看到,实际上在结果的第一行,是存在多行数据的,而nodes的作用通常是将一行中多行的数据,拆分出来。
2023-07-15 11:24:50
1810
原创 BI-SQL丨WITH NOLOCK
数据库为了避免上述的三种情况,有4种特殊的隔离机制,分别是:Read uncommitted(读未提交),Read committed(读已提交),Repeatable read(可重复读),Serizable(序列化)。而同时B管理员也读取了这个数据,这种情况下,B读到的是未更新的数据,也被称为脏数据。**不可重复读:**指的是某个事务中,多次对某张表进行读取操作,在A事务进程还没结束的情况下,B事务对数据进行了修改,这样A事务两次读取到的数据不一致,这种情况就是不可重复读。
2023-07-01 16:27:11
748
原创 BI-SQL丨角色和用户
用来登录数据库的访问账号,例:有些时候,我需要赋予某些用户权限,只可以对某个数据库有操作,不能对服务器有操作,这种情况下就需要使用用户名。在数仓的运维工作中,经常需要为用户开通不同权限的账号,使用户可以正常访问不同的数据,那么这就需要我们了解SQL Server的权限体系。,且白茶可以在多家企业任职,所以在服务器层面,登录名和用户名的关系是一对多,落到具体的数据库层面,登录名和用户名的关系是一对一。除了负责园区以外,白茶也在这片园区里面开办了一家企业,或在里面的某家企业任职,这时候白茶的角色是。
2023-06-24 11:08:01
818
原创 BI-SQL丨行列转换
无论是搭建数仓,还是通过PowerBI进行数据分析,我们总会接触到各式各样的数据源,而在这些数据源中,除了标准的大型数仓外,我们很少能够拿到标准规范的数据表结构。接触最多的,往往是大宽表,这就需要我们将大宽表转换为标准的二维表结构,即实现表结构的降维操作,也就是PowerBI中的透视功能。PIVOT函数,通常用来将表结构从二维表转换为大宽表,而UNPIVOT则恰恰相反,通常是用来将大宽表转换为二维表。同理,除了UNPIVOT函数以外,列转行也是有其他办法的。将二维表,转换为大宽表。将大宽表,转换为二维表。
2023-06-17 20:21:53
362
原创 BI-SQL丨日志清理
毕竟,日志文件中记录着对数据库所执行的操作,有时候我们需要查看日志文件进行操作复盘的。而在我们日常运维过程中,偶尔会遇到数据库执行JOB的时候,报内存不足的错误,导致JOB无法正常运行,为了解决这一问题,就需要我们定期对数据库的日志进行清理。在使用SQL Server的过程中,随着时间的变化,后台日志文件的体量也是在不断增加的。点击OK,保存即可,这样就完成数据库日志的自动清理了,当然,我们也可以选择立即执行,查看一下JOB是否能够正常运行。当然,我们也可以通过执行下面的语句,来查看日志文件的相关信息。
2023-06-10 19:53:36
1164
原创 BI技巧丨度量值的动态格式字符串
2.如果你所在的组织,不仅使用了PowerBI相关的服务,还使用了VS Studio,甚至长远规划囊括了SSAS,那么白茶建议你还是采用之前的方式,使用计算组功能。按照之前的方式,我们会选择添加一张配置表,来进行单位的手动切换,并搭配计算组功能,将文字信息传入到图表中。在PowerBI功能栏中选择文件,找到选项和设置,在选项中找到预览功能,勾选度量值的动态格式字符串功能。当然,除了上面的例子,该功能还有很多其它的用法,白茶这里就不一一举例了,感兴趣的小伙伴可以自行尝试。这里,我们举一个简单的例子,
2023-05-25 22:01:11
851
原创 BI技巧丨计算组柱形图
但是在实际需求中,PowerBI原生的柱形图仅能展示一个数据标签,如果我们想要展示同环比的变化情况,往往需要将同环比的度量值放置到工具提示中。PowerBI中,我们经常使用柱形图来进行趋势对比分析,通过柱形图我们可以直观展示每个月之间的差异。这对用户来说,体验其实是很不友好的,用户期望的往往是一眼可以获取到所有想知道的关键信息。到这里,我们的准备工作完成,其实这也是不通过计算组功能所能实现的效果。3.当然,这个需求也可以深挖一下,进行同环比配色,这里就不进行展示了。这里是白茶,一个PowerBI的初学者。
2023-05-20 20:54:17
1206
2
原创 BI技巧丨矩阵甘特图
除了根据日期节点进行判断以外,我们也可以加一些其他元素做判断,例如:项目的状态、当前日期节点等。日常分析时,当我们需要针对某一个连续事件进行进度更新的时候,往往会采用甘特图来进行展示,这样肉眼看起来直观,方便一眼定位到目前的项目节点。除了使用应用市场的应用以外,还可以通过内置的矩阵,来实现甘特图的制作。白茶模拟的数据比较简单,但实际应用中,会存在项目中断重启的情况,因此为了能够在完整的维度下展示,我们需要构建一张日期表。BOSS:对了,不要那种点进来会有点卡,等半天的那种,要保持速度!
2023-05-14 20:36:40
1348
2
原创 BI技巧丨计算组单位切换
在计算组出来之前,我们习惯利用配置表的方式,将这种数据单位转换为符合我们习惯的方式;在计算组出来之后,我们还可以通过计算组,来进一步将数据单位传递到可视化图表中。对于用户侧来讲,虽然有切片器提示当前的数据单位,但是用户更期望的是,每一个可视化图表,展示的数据标签也带单位。PowerBI自带的数据显示单位有千、百万、十亿等,很明显这些数据单位有些时候是不太符合国人的使用习惯的。可以看到,目前已经通过配置表的方式,将数据单位进行了单位转化。将其导入到PowerBI中,通过以下代码,添加日期表。
2023-05-06 10:06:28
2240
2
原创 BI技巧丨计算组折线图
但是当数据类别过多的时候,需求也在进一步深入,往往还需要我们将用户关注的重要节点标注出来,例如:最大值和最小值。后续随着软件版本的迭代和计算组功能的推出,折线图最大值和最小值问题,也有了新的解决方案。除了可以通过Fx来标注折线图的最大值和最小值以外,我们还可以通过计算组功能,对此进行补充,例如:添加最大值最小值的文本信息。折线图我们需要将最大值最小值标记出来,那么我们需要求出当前上下文的最大值最小值,才能进行后续的操作。有了最大值和最小值,我们就可以通过度量值,来对颜色进行标注了。
2023-04-28 20:46:28
921
原创 BI技巧丨计算组环形图
当我们使用Power BI时,会发现其内置了许多可视化组件,这些组件可以帮我们快速地创建各种类型的报表和仪表板,这是非常方便的。但是,我们也会发现,有些组件的细节功能并不是很完善,这就导致了我们在平常使用中会遇到各种小问题。但是,在使用环形图点击右上角进行数据导出时,我们会发现环形图无法导出数据的百分比,这就导致使用上并不能满足日常的需求。当前我们查看环形图的数据,还是正常的,现在我们点击右上角的更多选项,导出数据查看一下。通过导出的数据可以看到,环形图中的百分比数据,并没有进行导出,这就非常不便利。
2023-04-16 13:50:52
624
原创 BI技巧丨DAX Studio
日常我们对DAX进行性能优化,都是在此页面进行调试的,一般优化的方向是优先使用FE公式引擎,尽可能减少SE缓存引擎的计算或增加SE缓存命中的数量。刷新模型数据,顾名思义,这里不做解释。DMV:DMV面板主要内嵌的是一些模型的系统用语,可以对模型执行一些系统的查询,例如查看当前模型的所有度量值信息。2.构建的DAX,需要自行构建相应的上下文,即构建一张表,通过添加度量值作为新列,才能查看相关的DAX。所有查询:点击后,下方会出现一个所有查询的结果栏,会记录我们执行的所有查询记录。
2023-04-01 21:09:32
811
原创 BI技巧丨计算组优先级
白茶添加了两个比较简单的计算组,这样方便大家观察执行顺序,一个是增加10000,一个是改变数值正负,这样观测结果更加明显。白茶在之前的文章中介绍了关于计算组在PowerBI中的两个用途,实际上除了这两个用途以外,还有一个细节的知识点,也是需要大家掌握的。优先级,顾名思义,相信各位小伙伴都不会陌生,就是平常我们经常说的执行顺序。注:阈值不是越大越好,Tabular Editor默认是按照升序进行的,所以值越小,越优先执行。我们需要重点了解的是优先级是如何设定和执行的,因此本期没有其他逻辑。
2023-03-25 11:15:43
420
原创 BI技巧丨计算组格式
用字段参数的方式当然也是可以的,但是在字段参数出现之前,计算组的方式更加便捷,而且,对比字段参数,计算组还有其他用途。可以看出来,我们虽然实现了动态切换度量值,但是从实际应用上来讲,切换的同时,也希望可以同时切换数据格式的。白茶在之前的文章中曾经介绍过,计算组的用途除了避免重复造轮子外,还可以用来自定义数据格式。这里大家也可以随便写一个度量值,什么都可以,用作占位即可,白茶稍后会解释原因。这里直接引用好我们构建的度量值即可,然后针对三个计算项,每个设定相应的格式。当然,有的小伙伴会说,我用字段参数也行啊。
2023-03-18 19:42:55
805
原创 BI技巧丨计算组
在安装好Tabular Editor后,我们会在面板导航上面,发现一个新的功能区”外部工具“(其他工具安装好后,也会出现在这里)。计算组这个名词,相信很多小伙伴都听过,但也有很多小伙伴其实并没有用过这个功能,本期我们来了解一下,计算组的用途以及使用方法。这样不仅费时费力,而且后续维护起来,也是一个巨大的麻烦,而计算组的出现,很好的解决了这一烦恼。在实际工作中,我们经常会遇到同一套逻辑,针对不同的KPI,我们需要重复写DAX的情况。这里,白茶为了更好阐述计算组的用途,特意使用了较为复杂的逻辑。
2023-03-11 12:10:06
880
原创 BI-SQL丨TRIM
但是也有一些特殊情况,比如SQL Server的上游数据,有一部分线下数据,是交由用户进行维护的,那么数据就非常容易出现前后空白字符的情况。2.一些较为特殊的情况,SQL或者其他上游无法对这部分数据进行处理,我们也可以在PowerBI中利用TRIM函数进行处理,由于函数较为简单,白茶这里就不赘述了。1.通常情况下,SQL数仓在抽取上游数据进入到DW层时,都会对数据进行一下清理,这种情况下,适用上述两个SQL函数;TRIM在不同的数据库中,对应的表现形式是不一样的,这里白茶只介绍SQL Server的函数。
2023-02-26 11:49:04
338
原创 BI-SQL丨ALL、ANY、SOME
ANY:类似于OR,语法上和IN有区别,IN通常不需要搭配比较符,ANY需要和比较符搭配使用,但是从结果上看用途基本一致,只要满足一个条件,就返回TRUE。在白茶本机的数据库中,存在名为“CaseData”的数据库,存在名为“Dim_Product”的维度表。SOME:与ANY有细微差距,但是作用基本上与ANY是相同的,常规用法看作与ANY一致即可。注:SQL中ALL的用法和DAX中ALL的用法是完全不同的,小伙伴不要混淆了。ALL:类似于AND,只有当满足所有条件时,才会返回TRUE。
2023-02-11 09:45:56
528
原创 BI技巧丨近两年及当年月份数据汇总
实际业务中,比较成熟的企业会有相应的市场团队,根据以往的营业情况和当下的市场行情为当年制定合理的销售目标,但是也会有一些小企业没有相应的业务团队,那么这种情况下,需要如何制定销售目标么?2.如何将新表和原本模型关系中的日期表关联起来,是问题的核心点,可以使用TREATAS函数,也可以使用IN或者INTERSECT函数,方式不唯一;BOSS:是这样的,能不能搞个柱形图,既展示近两年的数据,又展示当年所有月份的数据,要求年月在一个维度上?这是本期的数据,仅有两列,一列日期,一列销售数量。白茶:BOSS您吩咐!
2023-01-29 09:56:16
2556
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人