从数据到信息
从信息到洞察

向我提问

你可以在这里提出和 Power BI 相关的各种问题,所有提问我都会看,无法保证全部解决,但会尽可能帮助你

什么样的提问更有可能被回答,或者说如何提出一个合格的问题,已经是一个老生常谈的话题了,其实它和你对所提问领域的理解并没有直接关系,也就是说即使你对一个领域知之甚少,也不妨碍你提出一个高质量的问题。与之相关的方法论有很多,比如:

  • 图文并茂,描述具体
  • 增加约束性条件以减少问题的歧义
  • 以旁观者身份换位思考能否理解自己提出的问题

回答问题最怕遇到的就是描述含混不清的提问,这说明提问者还没有搞明白自己遇到的问题。让我们举一个例子

请问如何计算下单客户的平均年龄

尽管这看起来是一个普通的不能再普通的需求,但它的描述并不完整。我们关心的是他们现在的年龄还是他们在购买时的年龄?如果一个客户购买了三次,应该计算一个事件还是三个事件的平均值?如果他们在不同的年龄购买过三次呢?所以我们必须像这样更精确的描述问题:「计算在销售发生时客户的平均年龄,如果他们在同一年龄进行了多次购买,则只计算一次」

 

注意:

  • 可以在留言中上传图片以提供完整信息。
  • 评论需要填写用户名和邮箱,其中邮箱可以接收回复通知,邮箱地址仅管理员可见
  • 评论提交后可能会延迟几秒钟显示,请耐心等待。所有留言都需要审核之后才能放出

853
说点什么

1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
237 评论数
657 被回复的评论
118 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
游客
跑//

老师,这个月书能出么?

成员
♚L先堔

请问下dax或者M函数有没有类似SQL中case的函数,新增一个自定义列,实现SQL中的功能(tableau已更新case函数)
自定义列(仅举例无实际意义)的内容为:
case

when 销售记录[客户省份] in (’四川’) and 销售记录[产品名称] like ‘%自行车%’
then ‘四川自行车’

esle ‘其他’
end

成员
hzykelvin

老师 12月了 书呢~!!!

成员
cat

老师,有个度量值想请教一下。
度量值 1:=
SUMX(
—-KEEPFILTERS(ALL(‘地区'[地区])),
—-CALCULATE([销售金额],ALLSELECTED(‘地区'[地区])))
结果在第一张表,它每一行返回的值为 销售金额总计行*6,不知道它怎么计算出来的。

以第一个单元格为例(地区=东北),我以为ALLSELECTED返回的的是所有地区,通过KEEPFILTERS使外部筛选上下文形成交集,那结果应该是东北地区的当前金额*6才对啊,但结果显然不对。

然后我尝试用以下查询表达式模拟一下第一个单元格(地区=东北)的过程:
CALCULATETABLE(
—-ADDCOLUMNS(
——–KEEPFILTERS(ALL(‘地区'[地区])),
——–“测试金额”,
——–CALCULATE([销售金额],ALLSELECTED(‘地区'[地区]))),
—-‘地区'[地区]=”东北”)

结果在第二张表,而这张表才是我预期的结果。该查询表的合计金额(233464*6)与透视表东北地区的金额(8545220)不一样,为什么会出现这种差异呢?是不是我这个查询表达式不足以完全表达度量值1的计值逻辑?

表在下面的回复

成员
138****2037

请问老师,我有个数据要求出,不同客单区间段的销售额汇总,应该怎么写DAX函数,我的客单区间是写的IF函数得出来的
calculate 和filter,好像都不能写,可能是我不懂,请问老师这个函数怎么写

QQ截图20201129211107.jpg
成员
cat

还有一个差不多的问题想请教老师:
度量值 1:=
SUMX(
—–VALUES(‘日历表'[年份季度] ) ,
—–CALCULATE(
———SUM(‘销售数据表'[数量] ) ,
———FILTER(‘门店信息表’ , CALCULATE(SUM(‘销售数据表'[数量] ) ) ) ) )
此度量值的计值过程
1、初始筛选上下文为:日历表[年份季度]=2015Q1

2、计算SUMX第一参数,此时 VALUES(‘日历表'[年份季度])=2015Q1

3、在SUMX的迭代部分中,先计算CALCULATE(..,FILTER(‘门店信息表’,CALCULATE(…))中的FILTER部分。

4、由于FILTER迭代中使用CAL函数,所以它会将所有的活动中行上下文转换为相应的筛选上下文。也就是包括“门店信息表”以及SUMX第一参数的 VALUES(‘日历表'[年份季度])所生成的表均被转换了。
所以此时,FILTER(‘门店信息表’,CALCULATE(…))中CAL的筛选上下文为:
2015Q1以及各个门店

5、步骤4新的筛选上下文与初始筛选上下文含有相同列( 日历表[年份季度] ),所以步骤4的2015Q1会替换初始筛选上下文的2015Q1。因为替换后结果也一致,所以他的最终筛选上下文与步骤4一致。

6、FILTER返回的表实际是该年份季度下有销售数量的门店

7、然后计算SUMX(…,CALCULATE(SUM(‘销售数据表'[数量]),FILERE(…))中CAL第一参数。此时他的筛选上下文为:
FILTER生成的门店表以及2015Q1
以上思路是否正确?主要步骤4、5不知道有没有错。

IOJ@73FO_2BG4}Z8N[O[)EJ.png
成员
sankingg

power pivot for excel2019在使用度量值的时候,为什么不能用VAR?

VAR.jpg
游客
Zoro

高老师你好,遇到一个问题,新建列用于切片器,来调整度量值( calculate(count(ID),all(表[地区])) ,发现这样产生的度量值在各地区做行的表里,数值不一样,新建列按地区分箱后,数值就变成一样的了,这是怎么回事呢? 捂脸 捂脸 捂脸

游客
185****1466

老师,请教一个公式
比如,统计产品销售数量排名10~20之间的中位数以及名次
麻烦您写个伪公式参考下,谢谢

游客
Cui-K

高老师你好,想请教下关于插件Drilldown Choropleth的进阶使用问题:
1、该插件上面可以想办法显示文字信息吗?
2、该插件与页面内的书签联动时,可以保持不动吗?(就是同一页面内,点击书签实现模块的跳转,但地图插件维持上一次选择结果不变)

成员
cat

有几个问题想请教老师,谢谢:
疑问一:有以下查询表达式:
CALCULATETABLE(
ADDCOLUMNS(
KEEPFILTERS(ALL(‘Product'[Brand])),
“金额ALL”,
CALCULATE(
[Sales Amount],
ALLSELECTED(‘Product'[Brand]))),
‘Product'[Brand]=”Tailspin Toys”||’Product'[Brand]=”Contoso”)

结果如图A,为什么每个产品都返回同样的数值(”Tailspin Toys”+”Contoso”合计)
我的想法是这样的:
1)初始筛选上下文为 ‘Product'[Brand]=”Tailspin Toys”||’Product'[Brand]=”Contoso”
2)由于行上下文转换时带有KEEPFILTERS函数,此时’Product'[Brand]子集的可见行只有 “Tailspin Toys”以及”Contoso”
3)所以ALLSELECTED激活的影子筛选上下文为 “Tailspin Toys”以及”Contoso”
思路正确吗?

疑问二:以下度量值
度量值 1:=CALCULATE([Sales Amount],KEEPFILTERS(ALL(‘Product'[Brand])))
结果返回每个品牌的销售金额,All函数不是已经清除外部筛选上下文了吗?为什么KEEPFILTERS还能起作用?

度量值 2:=CALCULATE([Sales Amount],KEEPFILTERS(FILTER(ALL(‘Product'[Brand]),[Sales Amount])))
以及
度量值 3:=CALCULATE([Sales Amount],KEEPFILTERS(FILTER(ALL(‘Product'[Brand]),1)))
为什么结果会不一样?两个度量值FILTER产生的表不都是整列’Product'[Brand]吗?

4RR)I[}GVB6$HL4IU0)%449.png
`HU{5TG3F6L7]_{7Z6N@(KT.png
游客
Zoro

高老师,你好,我遇到一个问题,想把结果作为X轴,统计每个结果有多少比例,公式为 Divide(count(表’姓名’),calculate(count(表’姓名’),all(表’分数’)) 直接能显示,但是加了一个以分数的切片器就不行了,比例都变成了100% 捂脸
姓名 分数 结果
张三 46 不及格
赵四 65 及格
罗五 85 良好
李二 95 优秀
王七 75 及格
吴八 10 不及格

游客
zhidong

你好,想做一个客户购买行为分析的表。下面的是数据表。

客户 月份 商店
111 一月 C
222 一月 B
333 一月 A
111 二月 A
222 二月 A
333 二月 C
111 三月 A
222 三月 B
333 三月 C
111 四月 C
222 四月 C
333 四月 C

想实现的功能是动态选择月份和商店,比如 2月A店,表格可以给出2月A店的客户(2个)在其他时间的店的分布,类似下表。
一月 二月 三月 四月
A 2 1
B 1 1
C 1 2

或是如果选择四月C店(3个客户), 表格显示如下,
一月 二月 三月 四月
A 1 2 1
B 1 1
C 1 1 1 3

我有做两个独立的表格(店(A/B/C)和月份(1/2/3/4))来作为选择项。

想请教一下这个如何用DAX来实现,谢谢!

游客
huang

高老师好,我想问下,哪里能找到Powerbi Report Server 2019.5版的安装文件?我百度搜了,没结果;您当前网站提供的链接,是直接连到微软官网的,官网上现在是2020.5版,也不行。

游客
熊猫4000

想要添加Web数据源,https登陆需要用户名/密码,导入时提示“DataSource.Error: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系”

成员
185****1466

老师,问下
我在透视表中,为了不显示A字段(维度字段)相关内容,应用了外部筛选器A=1。
在某个度量值中,又需要把A筛选器去掉,所以用了 ALL(A),但同时,我还需要强制应用另一个筛选条件,B=2,另外还有透视表本身的行列筛选。
A和B属于同一张物理表的2个维度字段,这个表达式应该怎么写。
//以下公式是不能通过验证的。
CALCULATE([销售金额],filter(ALL(‘表'[A]),’表'[B]=2))

成员
ligaryrandom

老师, 您好, 请教一个问题, 背景是: 目前有一个时间表(2000-01-01到2020-10-28), 还有一个事实表(是一些股市指数), 我写了一个Dax表达式:
firstDateYear2020 = CALCULATE(MIN(‘SP Index 20201028′[Date]),FILTER(ALL(‘SP Index 20201028′[Date]),YEAR(‘SP Index 20201028′[Date])=2020)), 目的是想得到2020年有指标的第一天(SP Index 20201028 是事实表, 是一些股市指数), 理论上这个表达式返回应该是2020/01/02(因为1月2号才有股市指标), 当我在报表视图加入一个时间表的切片器,时候, 选择开始时间2000~2020/01/0之间, DAX表达式返回时对,2020第一天就是2020/01/02, 但如果选择如果选择开始时间大于2020/01/01, 那么DAX返回2020第一天就是我选择开始时间, 问题是我已经在DAX表达式里面用ALL函数忽略了切片器, 怎么切片还会影响到呢? 为什么开始时间选择小于2020/01/01, DAX表达式输出结果是对的, 而时间选择大于2020/01/01后, DAX输出结果就不一样了呢?(截图如下)

Dax 问题.png
游客
teamowu

想请教一下企业有在用powerBI这一套BI的大佬们,一般是用PBI的服务还是报表服务器?从0部署一般要什么样的团队分工,成本和效益如何?请问老师有没有相关的文章介绍,比如最小可行化的部署方案?感觉PBI目前还不是很普及(从外面招聘的JD来看),大部分都是个人使用,且当作可视化工具,没能发挥他的价值。

但个人着手学习,也不知道到底要掌握的方向是怎样的(看PBI的文档牵涉到的知识面很广,对微软的生态即感到庞大又复杂,不知道选哪一块专精),假如有PBI的相关招聘,会考察什么基本功?个人是目前即使掌握一部分DAX,但每次基于SQL提取的EXCEL数据源,再从desktop建模操作,最终也没能很好有的效益解放双手(比如没能实现自动化报表)。

成员
139****7660

高老师,请教一个问题。PBIX文件除了通过PowerBI Pro权限发布以外,是否可以发布到国内的空间。就像以下链接
http://jiaopengzi.com:9999/Reports/powerbi/Demo/139

游客
Zoro

老师好,遇到一个问题,使用rankx()产生一个排名列,比如1,2,3,4,4,6,7,7,9。有什么方式可以使得产生的是依次递增的,变成:1,2,3,4,5,6,7,8,9,谢谢老师。