您的位置:首页 > 其它

Power BI中使用DAX生动展现人员头像、动态标签——销售数据里的那些商业智能

2019-02-14 16:17 423 查看

目录

  • 总结
  • 背景介绍

    Power BI 作为一款强大的、生动的、且非常友好的商业智能软件,能帮助用户快速了解和分析数据。报表是可视化组件有机组合形成的一张张画布,数据展示了这些画布背后的根本来源,而关系显示出了数据与数据之间的联系。三者共同协作,为用户勾勒出商业智能应该是什么模样。

    本文介绍如何用头像来表示每位经理(或者销售人员、BD、负责人、大堂经理……);并在不同筛选条件下,动态展示销售数据标签。
    主要的技术为:
    -1.生动展示头像:建模→数据分类→图像URL

    -2.动态展示标签:DAX函数(VAR、HASONEVALUE、SELECTEDVALUE)

    图中红色框内的内容均会随着筛选条件的变化而变化。

    主要内容

    数据预览

    • 数据表
      本文同样分析梁山泊好汉近日的销售情况。之前已有一篇文章分析过销售情况,可见:Power BI 中 解释此下降/增长 功能详细分析——Power BI正在走向真正的商业智能
      销售数据表Sales:日期 day、销售产品 Product (A和B两种)、销售大区 Area 、销售经理 Manager 以及销售金额 Sales。

      头像表URL:销售经理 Manager和一一对应的头像 URL地址。

      两张表通过Manager字段关联,形成Sales表与URL表多对一的关系。
    • BI报表

    实现方案

    头像展示

    在画布右侧字段中,点击URL表里的URL字段:

    在菜单栏的建模中,依次选择数据分类图像URL,即把URL地址归类为图像的URL,在筛选器、列表、矩阵的展示中,该列数据则会自动转化为每个好汉的头像。

    头像的地址来源:一百单八将
    如果同学们有图像但是没有图像地址,可先将图像上传至某一网站,再复制图像对应的链接。
    最后再将URL表中的URL列放入筛选器中,便得到了如上所示的BI效果。由于同销售数据表Sales进行了关联,该筛选器可以与其他可视化组件进行交互

    动态标签

    动态标签的最终效果是,当用户选定了特定时间、经理、产品、大区时,标签能将这些信息同步展示出来,并将该条件下的总销售金额一并展示;当不选择任何筛选器时,默认展示所有数据。
    比如,当选择2019/1/28~2019/1/30日期下、李逵、A产品时,标签变为:

    2019/1/28~2019/1/30期间,李逵的A产品,在重庆的销售金额是:3015.71万两白银。

    直接上DAX代码:

    动态标题 =
    VAR Manager = IF(HASONEVALUE('Sales'[Manager]),SELECTEDVALUE('Sales'[Manager]),"所有好汉")VAR Product = IF(HASONEVALUE('Sales'[Product]),SELECTEDVALUE('Sales'[Product]),"所有")
    VAR Area = IF(HASONEVALUE('Sales'[Area]),SELECTEDVALUE('Sales'[Area]),"所有地区")
    VAR First_Day = FIRSTDATE('Sales'[day])
    VAR Last_Day = LASTDATE('Sales'[day])
    VAR Amt = FORMAT(SUM('Sales'[Sales])/10000,"0.00")
    RETURN
    First_Day & "~" & Last_Day & "期间," &  Manager & "的" & Product & "产品,在" & Area & "的" & "销售金额是:" & Amt & "万两白银。"

    别看这么长,很多都是相似的内容 4000 …… 代码这么长,一步步分析。

    1). HASONEVALUE
    如果 columnName 的上下文筛选为只剩下一个非重复值时,将返回 TRUE;否则为 FALSE。

    HASONEVALUE(<columnName>)

    函数名称的组成:Has + One + Value,这个函数基本上都是和IF函数连用,用于判断目前选择的内容是不是一个,如果是一个,则为真,不是则为假,很好理解。
    详细解释见官网:HASONEVALUE 函数 (DAX)

    2). SELECTEDVALUE
    过滤器选中的唯一值。

    SELECTEDVALUE(<columnName>[,<alternateResult>)

    如果columnName有个唯一值,那么该函数返回的就是这个值;如果不是唯一值,默认返回空
    详细解释见:Using the SELECTEDVALUE function in DAX

    3). VAR
    给某个变量赋予某个值,该值受到筛选器和前后文的影响。

    VAR <name> = <expression>

    详细解释见官网:VAR

    综合以上,举个栗子,比如:

    VAR Manager = IF(HASONEVALUE('Sales'[Manager]),SELECTEDVALUE('Sales'[Manager]),"所有好汉")

    含义:如果用户在某处(筛选器或者其他可视化组件均可)选择了Sales表里的某个Manager如"李逵",那么等式右边将会返回"李逵",并将它赋给变量Manager;如果未选择某个Manager,此时默认返回"所有好汉"。

    这样一来,便将变量Manager、Product、Area、First_Day(起始日期)、Last_Day(终止日期)、Amt(销售金额),都赋予了随筛选条件变化的值

    值得一提的是,变量Amt用了FORMAT函数,它是将数据进行一定格式的调整,比如本文是将销售金额按照两位小数的形式展示。详细内容可见:学习DAX中的FORMAT函数

    最后就是返回RETURN的值了:

    RETURN
    First_Day & "~" & Last_Day & "期间," &  Manager & "的" & Product & "产品,在" & Area & "的" & "销售金额是:" & Amt & "万两白银。"

    将用户想要的内容用&连接符连接,最后将该度量值放入卡片图中即可。

    总结

    • 头像展示的效果代入感更强,嗯,容易吸引使用者的眼球;
    • VAR函数水很深,需要好好研究,多多使用,本文中所说的内容,皮毛都算不上;
    • 需要Power BI文件的可以在评论中获取。
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: