BI技巧丨近两年及当年月份数据汇总

news2024/12/24 10:19:40

BOSS:白茶,有个需求,不知道你能不能做?
白茶:不能!
BOSS:我还没说呢,小伙砸!做了加钱!
白茶:BOSS您吩咐!
BOSS:是这样的,能不能搞个柱形图,既展示近两年的数据,又展示当年所有月份的数据,要求年月在一个维度上?
白茶:小意思!安排!

实际业务中,比较成熟的企业会有相应的市场团队,根据以往的营业情况和当下的市场行情为当年制定合理的销售目标,但是也会有一些小企业没有相应的业务团队,那么这种情况下,需要如何制定销售目标么?
其实针对这种情况,可以将往年的历史数据和截至到当月的数据合并进行展示,这样可以参照往年的经验来评估今年的整体经营状况。
那么在PowerBI中如何实现这一需求呢?
案例数据:

这是本期的数据,仅有两列,一列日期,一列销售数量。
将其导入到PowerBI,并且根据如下代码,添加日期表,建立模型关系。

Dim_DateI = 
GENERATE (
    CALENDAR ( MIN ( 'Fact_Sales'[Date] ), MAX ( 'Fact_Sales'[Date] ) ),
    VAR DA = [Date]
    VAR YEAR =
        YEAR ( DA )
    VAR QUARTER =
        FORMAT ( DA, "Q" )
    VAR MONTE =
        FORMAT ( DA, "MM" )
    VAR DAY =
        DAY ( DA )
    VAR WEEKID =
        WEEKDAY ( DA, 2 )
    RETURN
        ROW (
            "Year", YEAR,
            "Quarter", QUARTER,
            "YearMonth",
                YEAR & "." & MONTE,
            "Day", DAY
        )
)

到这里,准备工作完成了,我们来分析一下思路。
要实现年月同轴展示,那么需要有一张展示使用的维度表,可以将年月合并在一列中,根据如下代码构建第二张日期表。

Dim_DateII = 
VAR YearDate =
    SELECTCOLUMNS (
        ADDCOLUMNS ( VALUES ( Dim_DateI ), "Type", "Year" ),
        "Type", [Type],
        "Year", [Year],
        "Display", [Year],
        "YearMonth", [YearMonth],
        "Date", [Date]
    )
VAR MonthDate =
    SELECTCOLUMNS (
        ADDCOLUMNS ( VALUES ( Dim_DateI ), "Type", "Month" ),
        "Type", [Type],
        "Year", [Year],
        "Display", [YearMonth],
        "YearMonth", [YearMonth],
        "Date", [Date]
    )
RETURN
    UNION ( YearDate, MonthDate )

结果如下:

可以看到,年月已经在同一字段中了。
模型关系如下:

这里需要注意一下,第二张日期表不需要和之前的表建立模型关系。
编写如下代码:
销售数量:

001.Quantity = 
SUM ( Fact_Sales[Quantity] )

切片器日期:

002.CurrentDate = 
MAX ( 'Dim_DateI'[Date] )

切片器年份:

003.CurrentYear = 
MAX ( 'Dim_DateI'[Year] )

PS:切片器的两个度量值,是为了截断时间和计算使用。
轴类型:

004.Dim_Type = 
MAX ( 'Dim_DateII'[Type] )

展示销售数量:

005.CurrentQuantity = 
VAR DimDate =
    VALUES ( Dim_DateII[Date] )
VAR Result =
    CALCULATE (
        [001.Quantity],
        FILTER ( ALL('Dim_DateI'), 'Dim_DateI'[Date] IN DimDate )
    )
RETURN
    Result

结果如下:

从结果上我们可以看到,已经将原本的销售数量,在新日期表下面关联起来了。
继续编写如下代码:

006.ResultQuantity = 
IF (
    [004.Dim_Type] = "Year",
    IF (
        MAX ( 'Dim_DateII'[Year] ) <= [003.CurrentYear]
            && MAX ( 'Dim_DateII'[Year] ) >= [003.CurrentYear] - 2,
        IF (
            MAX ( 'Dim_DateII'[Year] ) < [003.CurrentYear],
            [005.CurrentQuantity],
            CALCULATE (
                [005.CurrentQuantity],
                FILTER (
                    ALL ( Dim_DateII ),
                    [Year] = [003.CurrentYear]
                        && [Date] <= [002.CurrentDate]
                )
            )
        )
    ),
    IF (
        MAX ( 'Dim_DateII'[Date] ) <= [002.CurrentDate]
            && MAX ( 'Dim_DateII'[Year] ) = [003.CurrentYear],
        [005.CurrentQuantity],
        BLANK ()
    )
)

最终展示效果如下:

PS:
1.年月想要同时展示,构建一张新表是必要条件;
2.如何将新表和原本模型关系中的日期表关联起来,是问题的核心点,可以使用TREATAS函数,也可以使用IN或者INTERSECT函数,方式不唯一;
3.结果展示上,注意多层IF判断,思路要清晰;
4.也可以展示多个年份数据,调整内部参数即可。

这里是白茶,一个PowerBI的初学者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言开发基于RT-Thread家庭安全环境检测系统源码,RTT设计大赛

基于RT-Thread家庭安全环境检测 简介 基于RT-Thread和中蓝讯科的AB32VG1开发板实现的家庭安全检测功能&#xff0c;主要包含如下功能&#xff1a; 1、基于RT-Thread操作系统的按键组件&#xff0c;音频播放组件等&#xff1b; 2、基于AB32VG1开发板的语音播放功能&#xff1b…

BlackByte勒索软件开始使用新的数据泄露工具ExByte

BlackByte 勒索软件在 2021 年被首次发现&#xff0c;随后不断发现其变种。BlackByte 勒索软件不仅使用双重勒索&#xff0c;还运营着勒索软件即服务&#xff08;RaaS&#xff09;。最近&#xff0c;研究人员发现 BlackByte 开始使用名为 ExByte 的数据泄露工具来窃取受害者的数…

什么品牌的蓝牙耳机音质好?四款高音质蓝牙耳机推荐

随着时代的发展&#xff0c;蓝牙耳机的使用频率越来越高&#xff0c;在日常生活中随处可见的戴蓝牙耳机的人。或是听音乐&#xff0c;或是追剧&#xff0c;或是玩游戏等等。在现如今众多的蓝牙耳机品牌当中&#xff0c;什么品牌的蓝牙耳机音质好&#xff1f;下面&#xff0c;我…

基于Yolo实现的交通路况汽车识别 附完整代码(使用Keras框架)

一、问题描述 假设你现在在做自动驾驶的汽车,你想着首先应该做一个汽车检测系统,为了搜集数据,你已经在你的汽车前引擎盖上安装了一个照相机,在你开车的时候它会每隔几秒拍摄一次前方的道路。 您已经将所有这些图像收集到一个文件夹中,并通过在您找到的每辆车周围画边界框…

BlackStone:一款功能强大的渗透测试报告工具

关于BlackStone BlackStone是一款功能强大的渗透测试报告工具&#xff0c;该项目可以帮助广大研究人员自动起草和提交渗透测试或安全研究审计报告。该工具允许我们在数据库中提交和存储渗透测试过程中发现的漏洞&#xff0c;并通过内部和外部审计来对漏洞进行分类。除此之外&a…

界面控件DevExpress WinForm的先进技术——服务器和即时反馈模式

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

vue中如何优雅的实现数字递增特效

需求 前几天项目开发中遇到一个需求&#xff0c;需要在数字更新时&#xff0c;实现其动态递增的效果 并且&#xff0c;在数字大于10000时&#xff0c;将单位进行转换&#xff0c;如数字大于10000时&#xff0c;单位从m变为万m 我们以vue中开发为例&#xff0c;一一实现下这两个…

多目标跟踪(MOT)入门介绍

1. 相关方向 这些是我所了解的多目标跟踪&#xff08;MOT&#xff09;的一些相关方向。其中单目标跟踪&#xff08;VOT/SOT&#xff09;、目标检测&#xff08;detection&#xff09;、行人重识别&#xff08;Re-ID&#xff09;都是非常热门的方向。而偏视频的相关方向就比较冷…

java 随机数种子 java设置随机数种子教程 java随机数种子怎么设置

我们常用的随机数生成就是Math.random()&#xff1b;java.util.Random类有两种方式构建方式&#xff1a;带种子和不带种子import java.util.Random;不带种子&#xff1a;不带种子将会返回随机的数字&#xff0c;每次运行结果不一样public class RandomTest {public static void…

分享149个ASP源码,总有一款适合您

ASP源码 分享149个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 149个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/173AhCXJgM5AvPqBw-la60w?pwdqk9j 提取码&#x…

如何在UI自动化测试中加入REST API的操作

1、问题 当我们描述一个“好的自动化测试用例”时&#xff0c;经常出现标准是&#xff1a; 精确 自动化测试用例应该测试一件事&#xff0c;只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。 独立 自动化测试用例不应该受测试套件中任何其他测…

SVN服务端使用教程

前言 正式进入公司项目后&#xff0c;我们需要和同事进行协同开发&#xff0c;此时代码管理工具是必不可少的&#xff0c;目前常用的两款工具是&#xff1a;SVN 和 Git。本人因为要搭建一个自动化测试的框架&#xff0c;对SVN和Git都不熟悉&#xff0c;在调研后选择了操作更为…

组合选择器

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>组合选择器</title> <style type"text/css"> /* 多个选择器组合在一起中间用逗号","隔开就形成了组合选择器&…

销售过程管理系统对企业的好处是什么

当线索转化成销售机会后&#xff0c;要不断地跟进才有可能成交。但是这个过程时间跨度长&#xff0c;涉及人员、要素过多&#xff0c;销售过程中经常会遇到很多的问题。不少企业使用CRM销售管理系统把控销售过程。下面来说说&#xff0c;为什么企业需要销售过程管理系统? 销售…

【Mysql】X档案:Mysql 服务和Navicat客户端的安装与使用(超详细步骤)

Mysql 服务和Navicat客户端的安装与使用&#xff08;超详细步骤&#xff09;一、Mysql 安装配置1、下载安装2、配置环境变量3、设置服务自动启动二、Mysql Cli 使用1、连接 Mysql2、创建数据库3、创建数据表4、数据表操作5、删除数据库对象三、Navicat 安装1、下载2、安装3、FR…

Android 实现隐私政策提示弹窗(完整版)

android studio版本&#xff1a;2021.2.1例程名称&#xff1a;pravicydialog功能&#xff1a;1、启动app后弹窗隐私协议2、屏蔽返回键3、再次启动不再显示隐私协议。本例程的绝大部分代码来自下面链接&#xff0c;因为本人改了一些&#xff0c;增加了一些功能&#xff0c;所以不…

【计算机网络】S1P1 概念、功能、组成、分类

计算机网络概念功能组成分类概念 计算机网络&#xff0c;是互连的、自治的计算机集合。 计算机网络&#xff0c;是一个将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。 分散的&#xf…

UOS桌面系统使用启动盘找回数据盘文件

使用启动盘找回数据盘文件1、格式化优盘2、准备一个UOS系统启动优盘3、进入UOS PE系统4、查看硬盘信息5、查看挂载信息6、查看路径信息7、找到Desktop目录8、安装器文件9、挂在数据盘10、查看是否挂载成功11、找到重要文件12、打包重要文件13、可以看到打好的tar.gz包大小为64M…

【学Vue就跟玩一样】如何正确快速使用Vue中的插槽和配置代理

一&#xff0c;插槽1.什么是插槽让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于父组件——>子组件。插槽分为三种&#xff0c;分别是默认插槽、具名插槽、作用域插槽&#xff0c;下面分别列出了如何使用这三种插槽1.1默认插槽啥是默认插槽呢&am…

Java:基于注解的Spring使用【AOP容器】

目录 第十五章 AOP前奏15.1 代理模式15.2 为什么需要代理【程序中】15.3 手动实现动态代理环境搭建15.4 手动实现动态代理关键步骤第十六章 Spring中AOP【重点】16.1 AspectJ框架【AOP框架】16.2 使用AspectJ步骤&#xff08;入门&#xff09;16.3 Spring中AOP概述16.4 Spring中…