请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
ALICE(uid:1095980)
职业资格认证:FCP-FineBI | FCA-简道云 | FCP-报表开发工程师 | FCP-FineBI V6.x
【FineBI学习打卡】DAY94 日历图
第94天知识点:日历图 日历图很常见也很常用。 不信,点击你电脑右下角的日期,打开就是咱们常见的日历图。 日历图简介   经过演变,日历图已经由原来简单的日期查看工具衍生为现在的以日历为背景,将时间序列数据以图形方式呈现的可视化工具。 日历图可以清晰地展示数据的周期性变化、重要事件以及相互之间的关系。 日历图应用场景   日历图的应用场景也很多,比如: 在金融领域:日历图可以用来展示股票价格、交易量等时间序列数据,帮助投资者更好地把握市场趋势和股票走势。 在电商领域:日历图可以用来展示销售额、用户活跃度等数据,帮助电商企业制定更加精准的营销策略和产品规划。 在交通领域:日历图可以用来展示交通流量、路况等数据,帮助交通管理部门更好地优化交通规划和运输效率。 在医疗领域:日历图可以用来展示患者生命体征等数据,帮助医生更好地监测患者病情和制定治疗方案。 如何制作日历图   接下来,我们看看如何在FineBI中制作日历图。 01 需求: 展示全年每一天的销售额,图形颜色根据销售额大小按照由深至浅显示。 最终达到下图效果: 数据: 用到的数据表很简单,2025年每天的预估销售额,涉及字段只有2个:日期、销售额。 分析: 观察日历图的特征,可以看到,日历图的横轴是日,纵轴是月份,矩形块颜色根据销售额大小显示。 步骤: 我们可以直接利用上面的数据表进行加工。 图表类型选择自定义图表,图表形状选择矩形图; 将【日期】分别放入横纵轴; 横轴【日期】调整显示为 日 格式,纵轴显示为 月 格式; 【销售额】放入图形属性颜色属性框中。 结果如下: 这是一个很简单的日历图,接下来,我们看一个稍微复杂一点的。 02 需求:展示每个月的行事历。 数据: 数据表也很简单,2025年每天对应的事项,涉及字段依然只有2个:日期、事项。 操作步骤: 将【日期】分别放入横纵轴,横轴【日期】调整显示为 星期 格式,纵轴显示为 周数 格式。 问题: 星期只能以数值格式显示,周数也是数值格式显示,而且只能显示为当年第几周。 和我们前面给的行事历有点差距。 所以,我们还需要对原始数据加工一下。 优化: 1、以文本格式显示周几: 新增公式列【星期数】 WEEKDAY(日期) (注:如果对该函数用法不太熟悉的小伙伴可以看看截图下方的函数释义) 新增赋值列【周几】 周一:值=1;周二:值=2;周三:值=3 ...... 2、以文本格式显示当月第几周 新增公式列【当年第几周】 WEEK(日期,"F1") 新增公式列【每月第一天所在当年周数】 WEEK(DATE(YEAR(日期),MONTH(日期),1),"F1") 新增公式列【当月第几周】 当年第几周-每月第一天所在当年周数+1 新增赋值列【当月第几周(中文显示)】 第一周:值=1;第二周:值=2;第三周:值=3 ...... 然后,回到组件。 将【周几】、【当月第几周(中文显示)】分别放入横纵轴,【事项】放入颜色和标签属性框中,结果如下: 添加年月时间过滤组件,绑定【日期】字段。 这样就能得到一个动态变化的行事历啦! 好了,今天的内容就分享到这里,感兴趣的小伙伴自己动手试试看吧。
【FineBI学习打卡】DAY93 展示筛选范围内的当期值与同期值
第93天知识点:组件参数的运用   假如现在有一张数据表,里面记录了不同的数据日期及对应数值,日期从2023年1月开始,到2024年6月结束。 常见的关于展示筛选时间范围内的值的需求会分为2种: 1、日期过滤组件样式为年月样式 当筛选某个具体的年月时,数据表显示截至到该月份的当年值及去年对应时间范围的值。 比如,当选择2024年6月时,数据表展示当年值(即2024年1月至6月的数据)以及同期值(即2023年1月至6月的数据)。 2、日期过滤组件样式为年月区间样式 当筛选某个年月区间(不跨年)时,数据表显示该年月区间的值及去年对应同区间的值。 比如,当时间选择2024年1月-2024年9月时,数据表展示2024年1月至9月的数据(因为2024年数据到6月就结束了,所以实际只能展示到6月的数据)以及2023年1月至9月的数据。 遇到上面这两种业务场景,大家有什么解决思路吗? 之前,我们分享过一篇文章:关于筛选后同期值为什么会消失? 里面提到了一种解决办法:参数。 其实,上面的2个问题,同样也可以用参数的方式去解决。 我们依次来看一下。   01 需求:筛选年月,展示截至到该年月的当年值及对应同期值(不可跨年) 分析:假如筛选2024年6月 当年值:年份=筛选日期的年份,1<=月份<=筛选日期的月份 同期值:年份+1=筛选日期的年份,1<=月份<=筛选日期的月份 操作步骤: 1、新建1个时间参数,命名为:截至日期 2、添加计算字段: 当年值(年月筛选): DEF(SUM_AGG(值),,) 同期值(年月筛选): DEF(SUM_AGG(值),,) 3、【数据日期】字段绑定参数:日期属于截至日期参数 这里需要注意的是,如果你使用的是最新版本,还需要在字段绑定参数后,将默认的明细过滤层级修改为新建列过滤层级,不然会影响同期值的展示: 4、新建仪表板,添加过滤组件-时间过滤组件-年月 5、过滤组件绑定参数 设置过滤组件,绑定参数,绑定截至日期参数 最终结果如下:   02 需求:筛选年月区间,展示时间区间内当年值及对应同期值(不可跨年) 分析:假如筛选2024年1月-2024年9月 当年值:筛选开始日期的年份<=年份<=筛选结束日期的年份,筛选开始日期的月份<=月份<=筛选结束日期的月份 同期值:筛选开始日期的年份<=年份+1<=筛选结束日期的年份,筛选开始日期的月份<=月份<=筛选结束日期的月份 PS:因为我们设置了前提条件:筛选日期不可跨年,所以对于年份的判断直接用年份等于筛选开始或结束日期的年份也可以。 操作步骤: 1、新建2个时间参数,分别命名为:开始时间、结束时间 2、添加计算字段: 当年值(年月区间筛选): DEF(SUM_AGG(值),,) 同期值(年月区间筛选): DEF(SUM_AGG(值),,) 3、【数据日期】字段绑定参数:日期属于结束时间参数(属于开始时间参数也可以) 同样的,如果你使用的是最新版本,这一步也需要修改一下过滤层级,方法同上。 4、新建仪表板,添加过滤组件-时间过滤组件-年月区间 5、过滤组件绑定参数 设置过滤组件,绑定参数,绑定同名参数 最终结果如下:   通过参数,无论是哪种筛选方式,都能实现当年值与同期值的展示。   感兴趣的小伙伴自己动手尝试一下吧~
【FineBI学习打卡】DAY92 如何实现员工考勤班次自动化?
第92天知识点:如何实现员工考勤班次自动化?   前面文章中我们提到过如何利用新增赋值列去实现数值区间的模糊匹配。 但如果不是数值区间而是带有时分秒的日期格式的话,新增赋值列好像难以实现下面的判断功能。 比如:根据不同的时间段去判断员工上班班次。 今天我们就来看看如何在FineBI中实现上述效果? 一般,我们的排班班次标准可能会分为2种: 第一种: 第二种: 对于不同的排班班次标准,我们的处理方式会略有区别。 首先,我们来看一下今天的案例背景及需求。 案例背景 现在有一张打卡记录表,涉及字段只有一个:打卡时间。 案例需求 我们需要根据上述两种不同的排班标准去计算出员工对应的上班班次,结果用 打卡日期+X班 字样显示,也就是希望实现文章第二张图的效果。 操作步骤 首先,我们来看一下第一种排班班次标准对应的处理步骤。 分析: 当打卡时间对应的小时落在某一排班标准开始时间对应的小时(含)之后且在结束时间对应的小时(含)之前,就说明该打卡时间属于该排班时段对应的班次。 操作步骤: 添加条件标签列。 标签1: 标签名称-公式: LEFT(打卡时间,10)+"-"+"A班" 添加公式-满足: AND(HOUR(打卡时间)>=9,HOUR(打卡时间)<=11) 标签2: 标签名称-公式: LEFT(打卡时间,10)+"-"+"B班" 添加公式-满足: AND(HOUR(打卡时间)>=12,HOUR(打卡时间)<=17) 标签3: 标签名称-公式: LEFT(打卡时间,10)+"-"+"C班" 添加公式-满足: AND(HOUR(打卡时间)>=18,HOUR(打卡时间)<=23)   绿色部分可忽略不写 剩余添加标签: 标签名称-公式: LEFT(打卡时间,10)+"-"+"D班" 最终结果如下: 说难吧也不难,就一步。 说简单吧也不简单,计算逻辑也得梳理一番。   标准1既然已经解决出来了,标准2是不是也可以用同样的方式去实现呢? 感兴趣的小伙伴可以自己先尝试一下,看看结果的正确性。 是不是发现,大多数结果判断都没有问题,但对于某一小部分会存在差异。 但如果某一小部分数据结果存在差异,那就意味着整体的判断逻辑还是存在问题的。 问题出现在哪里呢? 标准2前一个排班时段的结束时间对应的小时与后一个排班时段的开始时间对应的小时其实是一样的,所以标准1的判断无法满足标准2,我们还需要在标准1基础上进行一些优化。 分析: 当打卡时间对应的小时落在某一排班标准开始时间对应的小时(含)之后且在结束时间对应的小时(含)之前,就说明该打卡时间属于该排班时段对应的班次。 但当打卡时间对应的小时与排班标准结束时间对应的小时相等时,打卡时间对应的分钟需小于1 。 操作步骤: 添加条件标签列。 标签1: 标签名称-公式: LEFT(打卡时间,10)+"-"+"A班" 添加公式-满足: IF(HOUR(打卡时间)=12,MINUTE(打卡时间)<1,AND(HOUR(打卡时间)>=9,HOUR(打卡时间)<=12))  标签2: 标签名称-公式: LEFT(打卡时间,10)+"-"+"B班" 添加公式-满足: IF(HOUR(打卡时间)=18,MINUTE(打卡时间)<1,AND(HOUR(打卡时间)>=12,HOUR(打卡时间)<=18))  标签3: 标签名称-公式: LEFT(打卡时间,10)+"-"+"C班" 添加公式-满足: IF(HOUR(打卡时间)=0,MINUTE(打卡时间)<1,AND(HOUR(打卡时间)>=18,HOUR(打卡时间)<=24))   绿色部分可忽略不写 剩余添加标签: 标签名称-公式: LEFT(打卡时间,10)+"-"+"D班" 最终结果如下: 对比一下,其实差别主要就是在对于“卡点”时间的判断上。 所以,不要小看这59秒的空间,你的1分钟,考勤人员的1天工。   好了,今天的内容就分享到这里。 感兴趣的小伙伴自己动手尝试一下吧~
【FineBI学习打卡】DAY91 计算时间差的三种方式
第91天知识点:计算时间差 上一篇文章中,我们介绍了甘特图的制作方法,文章频繁用到了一个函数:DATESUBDATE。 了解时间函数的小伙伴应该知道,这是一个计算时间差的函数。 其实关于时间差的计算,FineBI中也提供了很多种计算方式。 今天,我们就来看一看常见的几种时间差的计算方式。 下图是我们今天使用到的数据表,我们需要依赖此表计算出项目结束时间与开始时间之间相差的天数。 方式一:新增时间差列 结果如下: 这种方式很简单,只需要选择两个需要进行计算的时间字段,然后选择时间差的展示单位,就可以得到想要的效果。 但这种方式,也存在一个弊端,就是无法灵活调整差值。 举个例子,当上面的数据表中项目结束时间不是以00:00:00结束,而是以23:59:59结束,这也就意味着,我们需要在上面结果的基础上+1才能得到实际的时间差。 但通过新增时间差列的方式计算的时间差就会比实际周期少1天。 这个时候,我们可以用上面提到的DATESUBDATE函数来实现效果。 方式二:DATESUBDATE函数 结果如下: 有的小伙伴肯定会好奇,为什么要使用函数计算时间差,而不是直接将两个时间相减呢?这样不是更方便大家延续在Excel中的使用习惯吗? 我们来看一下结果: 结果怎么是这么大的数值?和想象中好像不太一样呢。 但实际结果并没有错,一长串数字是以毫秒为单位展示的时间差。 两个时间直接相减在Excel中可以默认按天为单位生效,但是在FineBI中,两个时间直接相减默认会按毫秒为单位生效。 简单点可以这么理解:先将项目开始时间及结束时间换算成毫秒,然后两个毫秒值相减得到的就是上图的结果。 所以,如果想在FineBI中直接使用两个时间相减计算出时间差,还需要将结果从毫秒转化成天数(或者其他你想要的单位)。 结果如下: 但这个过程需要你对不同时间单位之间的换算有一定的了解,不然很容易出错。 接下来,我们来看另一种常用的时间差计算方式。 方式三:DATEDIF函数 结果如下: 既然,DATESUBDATE函数与DATEDIF函数都能计算时间差,为什么还要内置2个不同的函数呢? 因为DATESUBDATE函数与DATEDIF函数计算的时间差的单位是不一样的。 为了便于理解与记忆,我将上面几种计算方式整理归纳成了一份表格: 以后在选择使用哪个函数计算时间差时,就可以结合实际需求场景去使用了。 感兴趣的小伙伴自己动手尝试一下吧~
【FineBI学习打卡】DAY90 甘特图制作全攻略!
第90天知识点:如何制作甘特图?   一年的时间马上接近尾声了,你手里的项目都完成的怎么样了? 有些小伙伴手里可能同时进行着多个项目,为了方便大家复盘,今天我们分享一个关于甘特图的制作方法。 甘特图 又称为横道图、条状图(Bar chart),以提出者亨利·劳伦斯·甘特(Henry Laurence Gantt)先生的名字命名,常见于项目管理中。通过甘特图,我们可以直观地知道有哪些任务在什么时间段要做以及这些任务都做到了什么程度。 甘特图构成也很简单,一条线条图,横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况。直观表明计划何时进行,进展与要求的对比。便于管理者弄清项目的剩余任务,评估工作进度。 但FineBI中并没有内置甘特图这个图形,如果想在FineBI中实现下图的效果,该如何操作呢? 接下来,我们来看一下具体的操作步骤。 假设今天是2024年11月30日,我们需要使用下表来实现上图的效果。 数据表涉及字段很简单:项目名称、项目开始时间、项目结束时间。 我们知道制作甘特图需要的2个基本要素: 1个是起点,也就是项目开始时间,1个是长度,也就是项目周期。 起点,数据表里有了,所以我们只需要计算每个项目经历的周期长度就可以了。 这简单: 通过新增公式列来计算每个项目从开始到结束的天数。 公式为: DATESUBDATE(项目结束时间,项目开始时间,"D")+1 得到的结果如下: 然后,我们将字段分别放入到组件中的对应位置,得到的结果如下: 看着有点甘特图的样子了,可感觉还是差点儿意思。 差在哪儿了呢? 1、横轴的时间显示问题 可以看到,我们是以项目开始时间为横轴,导致横轴只展示了每个项目的开始时间,且时间和项目的位置并没有保持在一个起始位。 另外,我们只能看到每一个项目的起始时间,无法观察到每个项目经历的完整时间周期。 2、图形颜色区分问题 目前,每个项目无论是未开始的、进行中的还是已结束的,矩形块颜色都是一样的,尤其对于进行中的项目,无法快速区分出哪一部分是做完的,哪一部分是要开始做的。 所以希望对于已经开始的项目周期,色块填充为蓝色,未开始则置灰。 3、标签展示问题 目前标签只是展示了项目周期时长,但无法从图中知道,每个项目实际已经开展的时长和项目进行的状态。 另外,因为不同项目进度不同,所以希望标签能跟着项目进度走,也就是如果项目未开始:标签展示在项目开头位置;如果项目进行中:标签展示在项目进行当天的位置;如果项目已结束:标签展示在项目结束位置。 基于上述问题,我们看一下如何优化上面的甘特图。 1、添加辅助列【辅助列-重复项目周期】 通过重复字符的方式生成与项目周期等长的字符串。便于后面一一对应项目经历的每个日期。 REPEAT(“1,”,项目周期(天)-1)+“1” 2、拆分行列 将辅助列按逗号拆分成行并将结果设置成数值格式。 3、新增汇总列【辅助列累计值】 按项目名称对第2步结果计算累计值。 (PS:熟悉RANGE函数的小伙伴以上几步也可以直接使用RANGE函数来实现。) 4、新增公式列【项目经历日期】 计算出每一个项目经历的完整时间周期。 DATEDELTA(项目开始时间,辅助列累计值-1) 截止到这一步,我们就可以解决上面横轴的时间显示问题了。   5、新增公式列【色块分色处理】 这一步是为了便于根据项目的不同状态进行颜色区分。 IF(DATESUBDATE(TODAY(),项目经历日期,"D")>=0,"1","0") 这里1和0使用文本格式只是为了方便后续进行颜色设置。 这一步就解决图形颜色区分的问题了。 接下来,还剩最后一个问题:标签! 6、添加条件标签列【原始标签】 项目已结束:DATESUBDATE(TODAY(),项目结束时间,"D")>0 项目未开始:DATESUBDATE(项目开始时间,TODAY(),"D")>0 其他,标签显示为公式: "进行中,进度"+辅助列累计值+"/"+项目周期(天) 但到这一步并没有结束,看【原始标签】这个名称应该也知道,肯定还有其他标签。 没错,因为原始标签对应的是项目的每一个日期,如果全部展示,只会使图表信息量过载。 而我们需要展示的只是每个项目中的特定日期对应的标签。所以: 7、添加条件标签列【显示标签】 对符合以下条件的标签显示为公式:【原始标签】 【原始标签】属于项目未开始且【辅助列累计值】=1 或者 【原始标签】属于【项目已结束】且 项目经历日期=项目结束时间 或者 【原始标签】不属于项目未开始及项目已结束 且 项目经历日期=TODAY() (PS:这里为什么选择不属于而不是属于?因为进行中的标签会动态变化,这样可以避免因为动态变化导致标签未选上的情况) 剩余归为其他,添加标签:NULL,也就是显示为空 到这里,我们的数据处理步骤就结束了。 接下来,我们回到组件中看看最后的图形呈现结果如何? 标签没有显示出来,但数据集中是有结果的,说明前面的计算并没有问题。 点开标签属性框设置界面,可以看到标签只有居中和居内两种设置,感觉像是标签被遮挡了。如果标签能居外就好了。 所以,我们将图形从矩形块修改为柱形图。 这样就能达到我们最终需要实现的甘特图效果了 最后,我们来看一下前后对比:   今天的内容篇幅有点长,但还是希望大家能够耐心看完,主要理解每一步的制作思路,也希望可以给你带来一点启发。 祝大家今年的项目都能顺利收官!
【FineBI学习打卡】DAY89 Excel&FineBI合并秘籍!轻松玩转单元格内容合并!
第89天知识点:合并单元格   在一些业务场景中,我们需要将不同单元格中的内容合并至一个单元格中。 一种是比较常见的,就是将不同列中的单元格内容合并至一个单元格: 这种使用常提到的拼接法就可以实现。 另一种呢,使用频率相对低一些,但在特定业务场景下也会遇到,就是将不同行中的单元格内容合并至一个单元格: 接下来,我们就来看看如果遇到这2种合并场景,应该如何解决。 场景一  将不同列中的单元格内容合并至一个单元格。 Excel中:使用“&”连接符就可以实现。 FineBI中:通过“+”作为连接符或者通过CONCATENATE函数来实现。 这里,需要注意的是: 在Excel中,字符串之间的连接符是“&”,但是在FineBI中,字符串之间的连接符是“+”而不是“&”。 场景二 将不同行中的单元格内容合并至一个单元格。 Excel中:可以使用TEXTJOIN函数来实现。 FineBI中:通过新增汇总列,字符串拼接来实现。 这里,需要注意的是: EXCEL中通过TEXTJOIN函数生成的新内容只会将原有内容全部拼接,不会对重复内容进行去重,而FineBI会对原有内容去重后再进行拼接; EXCEL中TEXTJOIN函数可以自定义字段之间的连接符,而FineBI通过字符串拼接方式生成的新内容,字段之间默认是通过“/”来连接的,如果需要改变连接符号,可以在上述步骤的基础上,增加一步新增公式列,通过REPLACE函数将“/”替换成其它内容。   场景二进阶 将不同行中的单元格内容按照对应类别合并至一个单元格。   什么意思呢? 比如,将省份按照大区维度合并在一个单元格中。 如果需要实现这样的效果,在FineBI中,我们只需要在新增汇总列的时候,增加一个分组维度:大区,即可实现上图的效果。 无论是Excel还是FineBI,掌握单元格合并技巧都能让你的工作更加高效! 今天的内容就到这里,希望可以对你有所启发~
【FineBI学习打卡】DAY88 如何高效计算员工连续上班天数?
第88天知识点:分段计算累计值   如何计算员工连续上班的天数? 下面是用到的数据表。 这是我们想要的结果。 可以看到,只要【是否上班】字段出现0,连续上班天数就从1开始重新累计。 累计值在FineBI中好计算,可这种分段计算累计值,该怎么做呢? Excel制作步骤 没有思路?没关系,我们先来看看这个问题在Excel中是如何处理的? 1、首先,计算累计上班天数 在C2单元格中输入公式:SUM($B$2:B2),向下拖拽即可。 但这里的计算结果没有考虑分段重新累计的问题。 所以,来到第二步。 2、找到离当前日期最近的上一次未上班时间对应的累计值。 3、最后,用累计上班天数减去上一次未上班时对应的累计值,就可以计算出员工连续上班天数。 这里,关键的一步就是如何找到上一次未上班时对应的累计值。 将表中的日期和所有的未上班日期去一一对应,找到日期在自己之前且离自己最近的一个未上班日期对应的值,就是上一次未上班时对应的累计值。 这里,有2个关键的判断: 日期在自己之前         且 日期离自己最近 为了方便大家理解,这里举个具体的例子。 以2024/11/20这一天来举例。 2024/11/20和第一张图中标蓝的几个未上班日期去对应,可以发现,在自己之前的日期有2024/11/4、2024/11/5、2024/11/14、2024/11/16这4个日期,但是离自己最近的是2024/11/16,所以它对应的上一次未上班时对应的累计值就是2024/11/16这一天对应的累计上班天数12。 分析到这儿,其实答案就呼之欲出了。 FineBI制作步骤 回到FineBI中,我们来看一下具体的操作步骤。 1、新增汇总列,计算【累计上班天数】 结果如下: 2、新增汇总列,计算每一个日期对应的【排序】 结果如下:   PS:这里为什么要计算排序? 因为如果出现过0,也就是员工没上班,那么该日期对应的【累计上班天数】一定是小于等于【排序】的,当数据量特别多,我们无法通过肉眼去观察的时候,就可以用这种方式去辅助进行判断。 3、新建一个数据集:未上班日期汇总表 保留【是否上班】字段为0的所有日期及其对应的【累计上班天数】 4、未上班日期汇总表新增公式列【辅助列】 输入1(这里可以输入任意值,主要为了后面做合并依据用) 5、所有日期数据表新增公式列【辅助列】 输入1(这列的值与上一步一致即可) 结果如下: 6、左右合并 将每一个值为0的日期及对应累计上班天数匹配过来 结果如下: 7、过滤 【累计上班天数=排序】或者【累计上班天数<排序】但【日期>=日期1】 结果如下: PS:这里为什么进行过滤? 如果跳过0从1开始累计,要减去的肯定是日期小于当前日期的临近的0对应的累计值,所以只保留【累计上班天数=排序】或者【累计上班天数<排序】但【日期>=日期1】的值即可。 接下来,只需要找到最近的一个值为0的日期即可。 8、计算时间差 结果如下: 9、新增汇总列,计算最小时间差 结果如下: 10、过滤 当时间差=最小时间差时,就是满足条件的值 结果如下: 11、新增公式列,计算【连续上班天数】 IF(累计上班天数<排序,累计上班天数-累计上班天数1(即上一次未上班日期对应的累计值),累计上班天数) 结果如下: 这样就能得到我们想要的效果了。 过程看似复杂,主要还是在于理解其中的逻辑关系及每个步骤的目的。 最后,留一个小问题给大家思考: 如何计算不同员工连续上班天数? 也就是在本文案例的基础上增加一个员工维度,感兴趣的小伙伴可以自己动手试试看。 如果上面的问题可以解决,那么恭喜你,你已经完全掌握如何在FineBI中分段计算累计值了。   希望今天的内容能对你有所启发~
【FineBI学习打卡】DAY87 6.1.3版本测评,两大实用新功能助你效率翻倍!
第87天知识点:组件格式刷&批量设置数值格式   10月,帆软发布了6.1.3版本。 这个版本中,有2个新增的功能目前用下来感觉还是可以提升不少工作效率的。 1、组件格式刷 一键复制,样式统一不是梦! 前一篇分享的分解树这篇文章中,提到了提高制作多个重复样式组件效率的小技巧: 先制作一个组件,调整好样式,然后复用。 但有些时候,我们没法做到一步到位调整好组件的样式。毕竟,一个好的仪表板总免不了要经历几次迭代,就像一个好的制度,并非一开始就设计出来,而是在不断的迭代中产生。 所以,上面这种方式总体来说还是会有点不尽人意的地方。能提高一点效率,但提高的不够彻底。但对于因各种因素无法使用新版本的小伙伴,可以参考上面的方式。 不过如果你已经了更新到了6.1.3版本,那么直接使用组件格式刷功能,可以让你的效率飙升到99%。 我们来看一看动图效果。 找到目标样式组件,点一下格式刷,再点击一下需要统一样式的组件,就可以快速实现样式统一效果。 可以看到,格式刷刷过的组件,组件的背景、数字的样式都发生了变化。 当然,除了KPI指标卡,其它图表组件也可以使用格式刷功能。 但需要注意的是,这里的格式刷,只能对颜色、大小等这类格式属性生效,并不会对设置的动态效果、条件格式等生效。 什么意思呢? 比如,你想将2个柱形图调整成统一样式。 第一个柱形图:红色柱体、圆角、有标签、添加了闪烁动画及警戒线。 第二个柱形图:蓝色柱体、直角、无标签、有注释、无闪烁动画及警戒线。 当你使用第一个柱形图的格式刷去刷第二个柱形图,第二个柱形图会变成和第一个柱形图一模一样吗? 答案是否。 你可以暂停,先思考一下,第二个柱形图会是什么样子的? 答案是:红色柱体、圆角、无标签、有注释、无闪烁动画及警戒线。 2、批量设置数值格式 告别手动,效率再升级! 批量是指一次处理多个项目的数量。这个词应该是大多数职场人都喜欢听到的一个词了,比如:批量更新一下……、批量删除一下…… 职场上,最喜欢听到的2个功能词,一个是:可以撤回,一个就是:可以批量操作。 而批量这个词的出现也就意味着我们的效率又能提高一步了。 之前,在组件中对数值格式进行设置时,我们需要一个一个手动调整,但有了批量设置数值格式这个功能后,我们可以通过Shift键连选或者Ctrl键多选,批量调整多个指标的数值格式。 比如,将销售额、成本额同时设置为以下数值格式:以万为单位,保留2位小数。 是不是省事多了。 如果没有更新到最新版或者因一些原因无法更新的小伙伴别急,可以通过在线版体验最新功能。 感兴趣的小伙伴自己动手尝试一下吧~
【FineBI学习打卡】DAY86 分解树
第86天知识点:如何高效制作分解树?   通常我们在考虑数据按层级一级一级往下展示时,首先想到的会是通过钻取方式去实现。 但钻取会存在一个问题,就是:当数据钻取到下一层级时,上一层级的数会不展示,这就不方便我们去观察数据特征,也无法清晰展示数据层级关系及影响因素。 对于这种情况,我们更推荐通过分解树的样式去展示。 分解树(Decomposition Tree)通过逐层分解数据,形成一个清晰的树状结构,使得复杂指标的层级关系和影响因素一目了然。通常同于KPI展示、杜邦分析等。 (图源于网络) 但目前FineBI没有提供对应的内置图形,我们也暂时无法实现上图那样的交互效果。 虽然如此,我们仍然可以通过KPI指标卡组件与图片组件组合的方式达到上图类似的层级效果。(这里主要分享制作思路,不涉及组件美化) 用到的数据如下: 制作不难,但需要点耐心。 后面我们会分享几点小技巧,帮助大家提高制作效率。   接下来,就看看如何制作? 1、仪表板框架搭建 我们把上图拆解一下: 这样整体框架就掌握了。 2、组件构成揭秘 接下来,再看一下具体的组件内容,这里,我们以2023年这个组件为例。 可以看到,组件内容很简单,不涉及复杂的计算。只是简单的拖拉拽而已。 首先,图表类型选择指标卡; 然后文本属性框中放入【年份】及【成本】字段; 最后对【年份】字段进行过滤,选择2023年。 其余组件制作类似,我们就不一一介绍了,这里展示一下整个组件目录。 组件比较多,但其实就是按照数据层级一个维度一个组件去进行展示。 当然我们模拟的案例数据比较简单,如果数据构成的层级复杂一点,比如,部门下设不同科室,科室下设不同团队,那么需要制作的组件会更多。 3、排版布局小技巧 制作完组件之后,就可以将组件放置在仪表板中进行排版布局。 但很多小伙伴会发现,组件拖不动。 这里需要将组件设置成悬浮,然后就可以将组件拖拽到仪表板的任意位置了。 4、大括号和箭头怎么来? 组件排版好之后,接下来就是很多新手小伙伴困惑的地方了: 大括号怎么画?箭头从哪儿来? 答案就是图片组件。 为了方便大家查看,这里放一张图片组件的制作步骤。 图片组件插入后,也别忘了设置悬浮哦,这样才能将大括号和箭头摆放到合适的位置。 这里是不是会有小伙伴想问:大括号和箭头的图片哪儿来的? 嗯……这个问题…… 方法一,各类图标网站搜一下,就会出来很多。 方法二,打开PPT,插入,形状,虽然不好看,但大多数时候也够用了。 5、组合功能大显身手 但另一个问题随之而来: 有的小伙伴制作完组件,想把组件整体往某个方向挪一下,但是只能一个一个挪,太费劲。 这时候,就不得不提一下组合这个功能了,用处这不就体现了嘛。 组合完之后的图形想怎么挪怎么挪,想往哪儿挪就往哪儿挪。 6、提高效率小窍门 最后,关于组件太多,一个一个制作太麻烦的问题,给大家提供一个思路参考: 先制作一个组件,然后别着急制作下一个,先把这个组件的字体、背景、样式等等细节都调整好,然后,复制,直接修改展示的文本内容、过滤条件即可。这样可以很大程度的简化重复的工作内容。   但上面这个方式仅针对6.1.3版本以前且因为一些原因无法更新成最新版本的小伙伴。 如果你使用的已经是最新版本,那么还有更高效的方式。咱们下一篇内容揭晓!
【FineBI学习打卡】DAY85 非完整日期时间差计算
第85天知识点:非完整日期时间差计算   一般,我们计算时间差都是按几天、几月以及几年这种完整的时间间隔来进行计算。 但有些时候,我们需要计算的时间差并不是一个完整的天、月、年。 比如:距指定日期半天后;          距现在15分钟后;          距现在3小时20分钟后。 对于这类不是完整天数的时间间隔,直接用DATEDELTA函数可以吗? 我们来试试看,以计算指定日期半天后时间为例。 结果如下: 结果证明,不可以! 那对于这类时间差该如何进行计算呢? 这里,需要借助2个函数。 第一个,DATETONUMBER函数。DATETONUMBER函数会将日期转化为13位时间戳。 时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。 具体用法可参考下方函数卡片。 第二个,就是TODATE函数。TODATE函数可以将各种日期形式的参数转换为日期类型。  以下是TODATE函数的具体用法。 (整理自帆软帮助文档) 了解这两个函数之后,就好办了。 首先,通过DATETONUMBER函数计算出指定日期前/后任意时间的日期对应的时间戳。 然后,借助TODATE函数将上面计算出来的时间戳转化为指定格式的日期。 这样,对于不完整天数的时间差,也能轻松计算出来。 回到FineBI中,我们看一下具体的操作方法。 01 案例背景 计算指定销售日期6小时15分钟后对应的时间,下面今天用到的数据表。   02 案例分析 前面我们尝试使用了DATEDELTA函数去计算,发现不可行。这里,我们使用TODATE结合DATETONUMBER函数去进行计算。 03 操作步骤 首先,使用DATETONUMBER函数将指定日期转化为时间戳,并加上或减去所需的时间,大家记得一定要将时间转换为毫秒! 6小时15分钟,转化成毫秒就是6*60*60*1000+15*60*1000,写成公式就是: 结果如下: 这里计算出来的是日期对应的毫秒数,但是这样的日期格式不直观,所以,我们还需要借助TODATE函数转化一下日期格式。 结果如下: 这样就得到了我们想要的结果。 熟练的话,可以直接将上述两个公式合并成一个。 当然,你还可以计算任意分钟、秒或者小时分钟秒后的时间,只需要将相应的时间转换为毫秒,并加到现有的日期上,然后转化成指定格式的日期即可。   今天关于如何计算不完整天数时间差的技巧就分享到这里。 感兴趣的小伙伴可以自己动手尝试一下。
【FineBI学习打卡】DAY84 CLEAN函数助力DEF摆脱过滤束缚!
第84天知识点:CLEAN函数   熟悉DEF函数的小伙伴应该都知道,DEF函数的最大优点就是它可以不受维度栏中指标的影响。 但是,仍然存在一个问题就是:它无法控制过滤条件对其的影响。 这是什么意思呢? 举个例子大家可能会更好理解。 现在有一张西红柿的销售额情况表,里面记录了2024年1月-8月每天西红柿的销售情况。 其中,销售额最高的一天是2024年5月28日,对应的销售额是42437.6元。 但是现在,我希望能看到筛选日期范围内每天的销售额以及对应的最大销售额。 也就是说,如果我筛选2024年8月1日-8月15日,那么就需要展示8月1日-8月15日这个日期区间里的最大销售额。 这个很简单,通过DEF函数即可以得到这样的效果。 然后,将过滤组件绑定【销售日期】字段,即可实现展示上述需求的内容。 结果如下: 可以看到,当筛选日期变化后,最大值是会根据筛选日期的变化而变化的。 但现在,问题来了。 我希望增加一列历史最大销售额,以便我能和筛选日期范围内的最大销售额进行对比。 当然历史最大销售额可以在数据集中进行处理,因为数据集的结果在组件中展示后是不会受到任何过滤组件影响的。 但数据集中处理数据,很多时候数据使用起来不够灵活,所以我们还是希望在组件中直接通过DEF函数的方式去实现。 怎么才能让过滤组件不对DEF函数的结果产生影响呢? 这就需要引出一个新的分析函数—CLEAN函数。 CLEAN函数,顾名思义,起到清除的效果。 它与EARLIER函数一样,必须与DEF函数一起使用。 关于CLEAN函数的用法可以参考下方的函数卡片。 了解CLEAN函数之后,就简单了。 只需要在DEF函数的第三参数中输入需要摆脱的过滤组件对应的字段就可以了。 这里,我们需要摆脱【销售日期】的影响,所以DEF函数的第三参数,就写成。 结果如下: 是不是非常方便? 但使用CLEAN函数需要注意的是: 1、当DEF函数的第三参数中的过滤条件不止CLEAN函数一个时,比如,我还添加了一个过滤条件:销售日期=2024/8/1,得到的结果会是什么样的呢? 结果如下: 可以看到,DEF+CLEAN函数+同级过滤条件这列的计算结果是2024/8/1的销售额,且该列的值不会随日期过滤组件的变化而变化。 这说明,CLEAN函数与同层的过滤处于平级的状态,即CLEAN会把上面层级的过滤清掉,但同层的过滤仍会正常生效。 2、当DEF函数嵌套DEF函数时,CLEAN函数只会清除当前层的过滤条件,不会清除内层或外层DEF函数的过滤条件。 比如,我先使用DEF函数计算出8月15日之后的最大销售额,然后再嵌套一层DEF函数,并使用了CLEAN函数,排除销售日期的影响。 结果如下: 可以发现,计算结果是2024/8/15日及之后这个时间范围内的最大销售额,而非前面提到的所有时间范围内的最大销售额42437.6元即2024/5/28对应的最大销售额。 这说明,CLEAN函数是在第一层DEF函数计算的结果上进行计算的,先把日期范围锁定在2024/8/15日及之后,然后在这个日期范围内找出最大销售额。   好了,今天关于CLEAN函数的内容就分享到这里。 感兴趣的小伙伴可以自己动手试试CLEAN函数的效果。
【FineBI学习打卡】DAY83 流向地图
第83天知识点:如何制作流向地图   地图可以非常清晰的展示具有地理关系的数据。 FineBI中内置了非常多的地图类型,下图列举了几种常用的地图类型。 其中,流向地图的制作方式较其它地图会稍微复杂一些。 今天,我们就来看一看在FineBI中如何制作出流向地图。 01   案例数据 现有一张各地区销售额业绩表,该表包含字段:销售日期、出发地、目的地、销售额。 02   案例分析 从上面的流向地图中,我们可以看出以下几个特点: 需要有一条从出发地指向目的地的路线------路线该怎么制作呢? 路线是具有流动性的------如何体现路线的流动性? 不同流向路线的颜色和粗细是有差别的------如何体现颜色和粗细? 03   操作步骤 1、数据集加工 (1)数据准备 导入本地Excel数据。 结果如下: (2)新增公式列【路线】 输入公式:CONCATENATE(出发地,“-”,目的地)。 结果如下: (3) 列转行 列转行字段选择:出发地、目的地。 结果如下: (4)新增赋值列【编号】 出发地赋值为0,目的地赋值为1。 (PS:如果是多个出发地,一个目的地,就将出发地赋值为1,目的地赋值为0) 结果如下: (5)字段设置 【值字段】重命名为【省份】、【编号】字段类型修改为数值。 结果如下: 2、组件设置 (1)【省份】添加地理角色,经纬度分别放入横纵轴。 (2)【编号】放入连线属性框中,【路线】【省份】放入细粒度属性框中,注意这里【路线】一定要放在【省份】上方。 到这里,基本的路线就画出来了。 但并没有体现出路线的流向及流动性。 所以我们还需要操作一步。 (3)【编号】添加闪烁动画 结果如下: 最后呢,我们只需要将【销售额】放入颜色、大小属性框中,就可以得到文章开头的流向地图效果啦! PS:这里的地图背景是通过将组件样式-背景-组件背景设置为GIS自定义深蓝色得到的。 以上就是在FineBI中制作流向地图的完整步骤。 小 结 流向地图一般会用于企业对货物进行可视化追踪和管理,通过提高供应链的透明度和效率,以此来提升供应链管理水平。 流向地图在地图上显示信息或物体从一个位置到另一个位置的移动及其数量。其使用场景也比较广泛,包括但不限于以下几个方面: 区际贸易:通过流向地图,可以清晰地展示不同地区之间的贸易往来情况,包括货物的流动方向、数量和频率等,有助于分析区域经济的发展状况和趋势。 交通流向:流向地图在交通领域的应用非常广泛,可以用来展示公路、铁路、航空等交通方式的客流和物流情况。例如,可以展示某个城市或地区的交通拥堵情况,以及不同交通方式之间的换乘和衔接情况,为交通规划和管理提供有力支持。 人口迁移:流向地图可以展示人口在不同地区之间的迁移情况,包括迁移的方向、数量和原因等。这对于研究人口分布和变化、制定人口政策以及城市规划等方面具有重要意义。 购物消费行为:通过流向地图,可以分析消费者的购物行为,包括购买商品的种类、数量以及购买地点等。这有助于商家了解消费者的需求和偏好,制定更加精准的营销策略。 通讯信息流动:流向地图还可以用来展示通讯信息的流动情况,包括电话、短信、电子邮件等通讯方式的流向和数量。这有助于分析通讯网络的稳定性和效率,以及信息传播的速度和范围。 航空线路:流向地图在航空领域的应用也非常广泛,可以用来展示不同航线之间的航班数量、客座率以及飞行时间等信息。这有助于航空公司优化航线布局、提高航班运营效率以及提升客户满意度。 但需要注意的是,流向地图虽然能够直观地展示地理空间内事物发生位置移动时所对应数据的变化情况,但不适合展示精确数值。 对流向地图制作感兴趣的小伙伴可以自己动手试一试哦~
【FineBI学习打卡】DAY82 从李佳琦直播间学来的报表展示秘籍!
第82天知识点:如何制作带图片的报表   让万千女生疯狂剁手的“淘宝一哥”李佳琦,相信很多小伙伴都听说过。 我大概是在2018年双十一那会儿入坑的,这些年来也见证了直播间的发展与变化。 2018年以前我是不相信直播卖货的,因为总感觉有些不靠谱。 但是现在,如果我需要买什么东西,会第一时间去李佳琦直播间的预告清单中找一下有没有我需要的产品。 有,预约好,到点进入直播间购买;没有,直接去其他渠道购买。 为什么会发生这么大的转变呢? 因为在这中间,我体会到了专业+高效。 还记得2018年双十一,手动在直播间记录产品信息,熬夜比价。为了买到合适的产品,自己列了一张电子表格,什么产品,什么价格,什么赠品,比日常价划算多少。 后来,直播间推出线上表格,帮大家整理各类产品的机制,方便大家对比。 再到后来,不仅有机制详情,还给所有产品配上了图片,甚至赠品都配了图。                                                                                                直播间产品清单展示变化 从最初文字速记到现在的图文并茂,除了是商家顺应消费者需求的体现,另一方面也是对“字不如表,表不如图”的完美诠释。 图形是最能给人带来直观感受和视觉冲击的媒介。图片展示也是其中的一种。 日常很多业务场景中,我们也经常需要通过向客户展示一些带产品图片的信息。比如:前面提到的购物。 试想一下,如果你在A和B两个购物网站上首次购买商品,现在正在浏览同一款商品,A网站只有一堆文字说明,而B网站除了文字说明外,还附上了很多的产品详情图,在这种情况下,你会更倾向于在哪一个网站上购买商品呢? 毫无疑问,我首选的肯定是B,相信大多数人的选择也是这样。 这就是图片所带来的优势。 这种方式除了方便客户快速了解产品外,更重要的是希望客户能通过展示的产品图片来了解产品的特点和优势,最终让客户买下你的产品,达到成交的目的。 案例背景 那在FineBI中,如何制作出带产品图片的表格呢? 制作方法其实很简单。 假设我们现在需要将一张带产品图片的报价单发送给客户。 需要注意的是,产品图片URL这个字段是必须有的,也是我们后期展示产品图片的关键。 操作步骤 1、 准备数据 结果如下: 2、 新建组件 图表类型选择分组表、交叉表、明细表中的任一一种都可以,这里我们以分组表为例。 将【产品名称】、【产品图片URL】字段拖入维度栏,【产品报价(元)】拖入指标栏。 结果如下: 到这一步,表格信息仍然都是以文字和数值形式显示的,和Excel里的数据表展示内容一样。 接下来,关键的点来了。 3、显示为图片 点击【产品图片URL】字段右侧的下拉三角,选择显示类型:显示为图片。 结果如下: 这样就得到一张带产品图片的报价单了。 制作过程不难,对大部分小伙伴来说,难的可能是在于如何将图片变成对应的URL,毕竟,大多数时候,产品的图片肯定都是以JPG或者PNG形式存储在本地的。 图片转URL方法 这里,给大家介绍几种比较稳定的图片转URL的方法。 具体使用方式,大家可以自行百度一下,网上有很多操作步骤,这里就不一一展开说了。 其他注意事项 另外,关于FineBI制作带图片表格需要注意的几点: 1、如果将制作好的带图片的报价单以Excel方式导出,导出的结果【产品图片URL】这列仍然是一串网址,并非图片。也就是说,FineBI制作好的图片表格中的图片是无法直接导出的。 2、设置「显示为图片」后,以下的属性设置将不再生效: 表格文本字段自定义分组; 表格属性>维度>颜色; 组件样式>表格字体。   3、点击图片可以放大,文本字段设置为「显示为图片」后,联动、跳转、钻取、排序、过滤等功能仍然按照文本内容生效,但联动和跳转仅支持点击非图片区域触发,若无可触发区域则无法触发。 感兴趣的小伙伴自己动手尝试一下吧~
【FineBI学习打卡】DAY81 3种去重技巧
第81天知识点:3种去重技巧   在日常数据处理中,你是否也曾因为重复数据而头疼不已? 操作步骤没问题,可统计结果就是不对,查来查去,才发现是因为原始表中数据出现了重复。 这种因为重复数据导致计算结果出现偏差的场景很常见,比如:一个订单号会出现多条销售记录。 很多时候,我们需要根据不同的业务场景,只保留满足条件的其中一条即可,这就涉及到去重问题。 那在FineBI中,如何按照一定的条件进行去重呢? 今天,我们就和大家分享几种常见的去重方法。 01 删除重复行 这种方式简单快捷,如果你的功能区没有直接看到删除重复行的功能项,可以点击更多找到。 操作步骤: 删除重复行 选择去重字段 结果如下: 可以从结果中看出: (1)删除重复行,默认保留的是第一行数据,删掉非第一行数据,这与Excel里删除重复行的逻辑是一致的。 (2)删除重复行,会直接删除重复数据,数据量由原来的7条变成了5条,数据量会减少。 如果你想每个【订单编号】只保留一条数据,那么在选择去重字段的时候只选择【订单编号】就可以了。 02 分组汇总 分组汇总除了求和之外,其实还有很多便实用功能,去重就是其中一种。 操作步骤: 分组栏拖入【订单编号】、【销售日期】字段 汇总栏拖入【销售额】字段 结果如下: 可以看出: (1)分组汇总,直接将【订单编号】、【销售日期】相同的数据的【销售额】进行了汇总求和,类似于Excel中的数据透视表。 (2)数据量由原来的7条变成了5条,数据量会减少。 03 新增汇总列 新增汇总列常常会因为名字被人误以为只是求和的,其实这里有很多隐藏功能,比如,求最大最小值,排序,计数、求最早最晚时间等等。 操作步骤: 分组字段:【订单编号】、【销售日期】 汇总字段:【销售额】 汇总方式:求和 结果如下: 可以看出: (1)新增汇总列,也是将【订单编号】、【销售日期】相同的数据的【销售额】进行了汇总求和。 (2)但与分组汇总不同的是,数据量并没有减少,仍然是7条,只是在原始数据表新增了一列。 以上三种方式是常见的去重计算方式。 04 知识点延伸 当然,有些时候去重的场景可能会更加复杂,比如: 1、对于同一【订单编号】,只保留销售额最大的一条数据。 直接分组汇总即可。 操作步骤: 分组栏拖入【订单编号】、【销售日期】字段 汇总栏拖入【销售额】字段,汇总方式选择:最大值 结果如下: 2、对于同一【订单编号】,只保留最新一天的数据。 如果熟练掌握了前面几种去重计算方式的小伙伴,应该能很快想出解决思路: 首先,新增汇总列【最晚时间】: 分组字段:【订单编号】 汇总字段:【销售日期】 汇总方式:最晚时间 结果如下: 然后,添加过滤: 过滤条件选择按公式过滤 输入公式:销售日期=最晚时间 结果如下: 这样,我们就可以只保留每个订单编号对应的最新一条销售记录。 05 小试牛刀 上面的结果中,AJ333仍然有2条数据,如果对于同一【订单编号】,只保留最新一天的最大销售额数据,这个应该怎么处理呢? 感兴趣的小伙伴可以自己动手尝试一下~ 你还遇到过哪些去重计算的场景呢?欢迎评论区留言哦~  
【FineBI学习打卡】DAY80 计算同期/环期的5种方式
第80天知识点:同期/环期   实际业务场景中,同期/环期相关值的计算是必不可少的,它能帮助我们洞察数据背后的趋势与变化。 上一篇文章,我们探讨了筛选日期后同期值“消失”的谜团,并给出了解决方案。 今天,我们将继续拓展,分享更多在FineBI中计算同期值的方式。 当然,这几种方式同样适用于计算同期/环期相关的所有计算。 01   数据集中的分组汇总方式 这是最直接也是最常用的方式之一。 结果如下: 02   数据集中的左右合并方式 但有的小伙伴如果使用的是6.0以前的版本,可能会发现,自己的分组汇总中并没有同比/环比值的计算选项。 这该怎么办呢? 感觉好不容易到嘴的鸭子又飞了。 没事,有办法! 将原表复制一份,然后通过左右合并的方式将同期值匹配过来。这种方法虽然稍显复杂,但灵活性强,能够应对多种复杂场景。 具体操作如下: (1)将原表复制一份 (2)在原表中添加左右合并,左合并复制的表,合并依据:当前表的【同期日期】对应复制表的【日期】,其中,当前表的【同期日期】字段直接通过编辑合并计算获得 结果如下: 03   组件中快速计算方式 这种方法简单快捷,可以为我们提供了极大的便利。不好的一点就是不能参与二次计算。 上一篇文章中我们计算同期就是用的这个方法,为了方便大家巩固记忆,这里再重复一遍操作步骤: 将【销售额】字段拖入指标栏中,快速计算方式选择年同期: 结果如下: 04   组件中的快速计算函数-SAME-PERIOD函数 添加计算字段【销售额同期-SAME-PERIOD函数】: 结果如下: 05   组件中的分析函数-DEF函数 对于需要更高级数据处理的场景,DEF函数肯定是一个不错的选择。 添加计算字段【销售额同期-DEF函数】: 结果如下: 如果说,你只想计算同期/环期相关的值,那么到这里就可以不用往下看了,以上几种方法绝对够日常各种场景所需了。 但有时候,实际情况会更加复杂,还需要根据过滤组件来动态展示相关数据。 那么,今天提到的几种计算同期/环期的方法,会不会出现上一篇文章中的问题呢? 通过过滤组件筛选日期,如果对应的同期日期不在筛选日期范围内,同期值就显示不出来。 我们来验证一下: 首先看一下过滤组件绑定数据集中的【日期】字段后,筛选的效果: 可以看到,数据集中2种计算方式,过滤后,同期值仍能正常显示,但是组件中的3种计算方式,同期值则显示为空。 我们再来看一下过滤组件绑定日期参数后的筛选效果: 除了DEF函数同期值显示为空外,其它4种方式同期值可以正常显示。 关于DEF函数同期值显示为空,应该是6.0.13版本更新后出现的情况,6.0.13版本之前是可以正常显示的,如果有使用之前版本的小伙伴可以测试一下看看效果。 END 为了方便记忆,这里放一张几种计算方式的对比图: (注:DEF函数的结果是否从6.0.13版本前后出现不一致,还有待进一步验证,有知道的小伙伴欢迎评论区留言告知,感谢~)     好了,今天的内容就分享到这里。 感兴趣的小伙伴可以自己动手尝试一下~
【FineBI学习打卡】DAY79 筛选后同期值消失问题如何解决?
第79天知识点:筛选后同期值消失问题   案 例 背 景   有不少小伙伴在使用日期过滤组件时,出现过这样的问题: 没有筛选日期前,同期值可以正常显示,一旦筛选日期,同期值就不见了? 但实际我们想要的效果是这样的: 不管同期值对应的日期在不在我们所筛选的时间范围内,都希望能保留同期值数据。 那为什么会出现第一个图中的问题呢? 我们来看一下原因。 案 例 数 据 销售额数据表,包含字段:日期、销售额。 (注:为了便于大家观察效果,这里仅展示2024年及2023年同期各5条数据) 操 作 步 骤 1、  制作组件 图表类型选择分组表,将【日期】字段拖入维度栏中,【销售额】字段拖入指标栏中。 将指标栏中的【销售额】字段复制一份,并重命名为【快速计算-同期值】,快速计算方式选择同比/环比-同期-年。 结果如下: 2、  制作仪表板 添加过滤组件-时间过滤组件-年份。 编辑过滤组件,将【日期】拖入到字段栏中,实现对【日期】字段的绑定。 最终结果如下: 可以发现,如果日期不限定在2024年之后,同期值是可以正常显示的,但是日期限定在2024年之后,同期值就不见了? 这是为什么呢? 实际上这和过滤的逻辑有关系。 过滤组件绑定数据集中的【日期】字段之后,是先过滤,再计算。 什么意思呢? 也就是如果添加了2024年这个过滤条件,那么相当于对原始数据表进行了过滤操作,使其只剩下2024年的5条数据。 然后在这5条数据的基础上再进行年同期的快速计算,因为快速计算依赖的数据表只有2024年的数据,并没有同期2023年的数据,自然2024年对应的同期值计算结果会是空的: 那如何既能又能呢? 既能只展示2024年的数据,又能显示出对应的2023年的同期值。 参数!!! 我们对上面的操作步骤进行一些修改: 3、添加组件参数 回到组件中,添加参数: 参数名称:日期参数 参数类型:日期 默认值:不填 点击确定 4、字段绑定组件参数 对【日期】字段添加过滤条件,将【日期】字段和日期参数进行绑定: 5、过滤组件绑定组件参数 修改过滤组件的绑定条件,将过滤组件和日期参数进行绑定: 最终得到的结果如下: 这里,过滤组件绑定日期参数后,计算的基础表仍然是2023及2024年的10条数据。你也可以这么理解:就是先计算再过滤,也就是说结果是以下图这张表为基础进行过滤的。 所以自然同期值会有结果。 结 果 对 比 可以看一下过滤组件绑定【日期】字段与绑定日期参数的结果对比图: 若过滤组件绑定数据集中字段,会先过滤再计算; 若过滤组件绑定组件参数,会先计算再过滤。 好了,今天的内容就分享到这里。   筛选后同期值不见的问题你会处理了吗? 感兴趣的小伙伴可以自己动手练习一下哦~
【FineBI学习打卡】DAY78 KPI指标卡新变革
第78天知识点:KPI指标卡   KPI指标卡常用于突出显示关键指标,所以自然也会在很多仪表板中出现。 有一说一,这个图表好用是好用,但有2个缺点也很明显: 第一个:多个指标卡组件字体难做到快速统一 每次复用KPI指标卡,修改文本属性框里的字段时,原来调好的字体样式总是会莫名其妙的被“打回原形”,还得手工重新调整一遍; 第二个:仪表板中指标组件卡排版布局费时费力 同时需要展示很多个指标卡时,虽然可以通过组件复用来实现多个组件的快速制作,但是主题下方的导航栏就会出来一系列组件占位。 且不说后期一个个切换组件修改内容麻烦,每次制作完在仪表板中给这些指标卡组件的大小、位置、风格进行统一时,就是一件非常费时费事的工作。 不知道有没有小伙伴也有这样的感觉? 但随着FineBI 6.1.2版本迭代之后,这2个问题就能很好的解决啦! 原来默认的样式是这样的: 优化后,除了默认的指标卡布局,还新增了5种预设的指标卡样式。 如果你的指标是具有层级关系的,那么就可以选择主副指标类型,至于选择1、2还是3,就看仪表板整体的风格及你的个人喜好了。 如果你的指标是同层级,那么就可以选择并列指标类型。 当然,如果以上都还不能满足你的要求,你还可以通过自定义样式设置,自定义样式支持分栏设置,以实现更灵活的布局和展示效果。 好了,今天的内容就分享到这里。 新增的指标卡样式你更喜欢哪一种呢?   欢迎评论区留言分享哦~
【FineBI学习打卡】DAY77 矩形树图
第77天知识点:如何制作矩形树图?   1、矩形树图的诞生:从树状图到视觉盛宴 每一张图表都承载着特定的使命与故事。 20世纪90年代初,马里兰大学人机交互实验室的Ben Shneiderman教授及其团队,面对磁盘空间使用情况这一复杂问题,创新性地调整了传统的树状图,诞生了矩形树图(Treemap)。 这一变革不仅解决了展示空间不足的难题,更以其独特的视觉魅力打开了可视化世界的新大门。 因由树状图演变而来,矩形树图又名矩形式树状结构图。 从上图可以看出,矩形树图由多组面积不等的矩形嵌套而成。 一般会用于描述层级结构数据的占比关系,通常还会结合钻取功能去显示下层数据情况。 在一张矩形树图中,所有矩形的面积之和代表总数,每个小矩形的面积表示每个子项的占比,面积越大,表示子项在整体中的占比越高。 这不是和饼图如出一辙?毕竟提到占比,人们第一时间想到的肯定是饼图而非矩形树图。 那为什么不直接使用饼图,而非要再去研究一个新的图形呢? 2、矩形树图VS饼图:一场视觉与功能的较量 因为饼图会存在一个非常明显的弊端,而矩形树图可以在一定程度上解决这个问题。 那就是: 当分类较多的时候,占比较小的类别,其展示的标签会变得的很难排布,图表会显得杂乱难读。 而使用矩形树图后,就会清晰很多: 但如果你的分类非常多,且占比小的类别也很多,说实话,矩形树图也拯救不了。 对于这类问题,建议将占比小的类别归为一个大类进行展示。 说了这么多,如何制作矩形树图呢? 3、如何在Excel和FineBI中制作矩形树图? 如果你的Excel是2016或更高版本,那么恭喜你,这些版本已内置矩形树图,找到它,直接使用即可。 如果你的版本是2016以下,该怎么办呢? 嗯…… 建议还是先更新成新版本,毕竟这都2024年了。 当然,如果你不想更新或者无法更新Excel版本,那么使用FineBI也可以轻松解决你的问题。 1、数据准备 上传准备好的Excel数据: 结果如下: 2、制作组件 图表类型选择矩形树图,将字段分别拖入如下属性框中: 结果如下: 是不是非常简单? 但是,这五彩斑斓的颜色,是不是感觉图表有点乱,一眼看不出来主次关系? 能不能按区域划分矩形块颜色呢? 当然可以。 将【区域】字段拖入图形属性下颜色属性框中,即可实现。 如果想按照销售额大小划分矩形块颜色呢? 颜色越深表示数值越大,越浅表示数值越小。 好办。 将【销售额】字段拖入图形属性下颜色属性框中,便可以得到如下效果: 甚至,可以进阶一步,实现多层级的下钻。 将【区域】、【省份】添加钻取目录,并将字段拖入如下位置: 便可以实现通过钻取方式查看某一区域下各省份的数据情况。   结 语 END   因为在FineBI中,矩形树图的排列逻辑如下: 有权重时,左上至右下,依次表示数值由大到小; 无权重时,排列顺序总是选择矩形块长宽比接近于1的方式排布,排序方式默认,不支持修改。 所以,一般矩形树图不适合展示不需要体现占比的层级关系,比如: 这样的展示没有什么太多的实际意义。 那矩形树图适合什么样的场景呢? 比如分析公司各部门的业绩贡献、产品线的市场占有率等涉及到占比的多层级关系时,可以考虑使用矩形树图,这样可以直观体现同级数据之间的比较。 希望今天的内容能对你有所启发。 感兴趣的小伙伴可以自己体验一下哦~
【FineBI学习打卡】DAY76 高亮最大最小值区间
第76天知识点:如何高亮最大最小值区间?   前面有一篇文章我们介绍了如何突出显示最大最小值点,并且分享了为什么要按文中的方式计算最大最小值。 但有些业务场景中,可能并不仅仅只是突出展示某个点,而是需要将构成最大最小值的一段时间都突出显示出来。 所以今天我们就接着分享如何突出显示最大最小值区间。 什么是区间呢? 比如,我想要知道在一段时间中,哪7天的值最高,哪7天的值最低?然后将这个区间突出显示出来。 其实原理和突出显示最大最小值是一样的。 我们来看一下具体实现步骤,为便于直观看出对应效果,我们暂时先以表格形式展示每一步的结果: 1、添加计算字段【近7天累计值】,计算每天向前推7天的累计值 结果如下: 2、添加计算字段【近7天累计值的最大值】,判断出1当中的最大值 结果如下: 3、添加计算字段【最大值对应的日期】,判断出2对应的日期 结果如下: 4、添加计算字段【最大值对应近7天日期】,找出3向前推7天的日期 结果如下: 5、添加计算字段【最大值区间的值】,取出4的日期区间所对应的值,保留这些值,其余置空即可 结果如下: 最小值将公式中的MAX_AGG换成MIN_AGG就可以了。 (PS:但计算最小值需要注意的一点就是:筛选时间范围内不满7天的累计值肯定是最小的,所以如果需要突出显示完整7天对应的最小累计值,就需要对筛选日期区间中未满7天的累计值进行一些特殊处理。) 具体的处理方法我会放在文章最后,但还是建议感兴趣的小伙伴先思考一下这种问题应该如何解决,自己动手先尝试一下,然后带着问题找答案,会达到事半功倍的效果,这也是我们学习能力提高的最佳途径。 最终,我们就可以得到一个根据筛选日期动态变化的最大最小值区间了。 进阶一步,如果想要动态突出展示近N天的最大最小值区间,该怎么办呢? 和最大最小值一样,添加一个参数。 然后将上面公式中的7全部替换为参数即可。 对参数使用还不熟悉的小伙伴可以参考:【FineBI学习打卡】DAY65 如何展示TOP N 和其它?-我的帆软 (fanruan.com) -------------------------------这是一条分界线--------------------------------- 计算最小值区间: 主要区别在于第2步,在计算第2步之前,先添加计算字段【剔除非7天完整日期】,找到筛选日期开始时间第7天对应的日期: 然后,计算第2步【近7天累计值的最小值】,公式修改成: 其余步骤同最大值区间计算,将公式中的MAX_AGG换成MIN_AGG即可。
【FineBI学习打卡】DAY75 关于高亮最大最小值的一些疑问解答
第75天知识点:高亮最大最小值为什么要用DEF(MAX_AGG(成交额))计算?   动态展示最大最小值这篇文章发布后,不少小伙伴后台私信表示对最大最小值的计算有些疑问,考虑到后面分享的最大最小值区间仍然会涉及到这些值的计算,所以今天先就这些问题做统一解答: 这里以最大值为例进行讲解。 先来回顾一下最大值的计算方式: DEF(MAX_AGG(成交额)) 疑问1:为什么不直接用MAX(成交额)? 我们可以先看一下直接用MAX函数的结果。 可以看到,MAX函数计算的结果就是当前行的最大值,而不是所有行中的最大值,显然结果并不满足我们的要求。 疑问2:直接用MAX_AGG(成交额)可以吗?为什么前面还要加一个DEF函数? 我们可以看一下如果不加DEF函数,直接用MAX_AGG(成交额)结果会是什么? 结果如下: 仍然是以每一行为维度,对应该行的最大值。 因为每一个日期对应的值只有一个,所以结果自然就是原来的成交额本身。这也就是为什么成交额列与MAX_AGG(成交额)计算的结果是一致的。 但与MAX函数不同的是,MAX_AGG函数合计行的结果是所有行的最大值,而MAX函数是所有行的和。 显然,MAX与MAX_AGG函数都不满足我们要求,看数据两个函数都受到了【日期】维度的影响。 有小伙伴还记得DEF家族与老维家族的故事吗? 想要摆脱维度的影响,DEF函数志在必得。 这也就是为什么需要在MAX_AGG(成交额)前面加一个DEF函数的原因。 DEF(MAX_AGG(成交额))表示所有行中,最大的数值。 结果如下: 疑问3:不在组件中使用计算字段,直接在数据集中计算出最大值呢? 数据集中当然可以计算出最大值,计算方法也很简单,可以通过新增公式列或者新增汇总列计算得出。 结果看着也没有什么问题。 但是,如果筛选数据日期,你就会发现: 组件中通过DEF函数计算的最大值字段可以根据筛选区间显动态变化,而数据集中计算的两个最大值结果不会变化,始终是99,926,也就是2024年全年数据的最大值。 显然,这也不符合咱们的要求。 为什么数据集中计算出的最大值不会动态变化呢? 因为过滤组件是在数据集结果的基础上进行的过滤,而数据集中添加的计算步骤是数据集结果形成前完成的步骤,计算对象是整个数据集数据,而非过滤组件筛选后的数据。所以通过数据集计算的字段结果相当于是写死的,不会随过滤组件的筛选条件而动态变化。 什么是写死的,以excel举个例子,大家可能就明白了。 比如:C列的值是A列乘以B列得出的,然后我将C列的值以数值形式复制粘贴到D列,也就是说,C、D列都是A列乘以B列得出的结果,但C列带公式,而D列不带公式,现在我修改了B列中的值,可以看到,C列变了,但D列因为是数值,写死了,所以并不会发生变化。 组件中添加计算字段就相当于带公式的C列,数据集中的新增列则相当于D列,过滤组件筛选相当于对B列数值进行修改。 这样大家是不是更容易理解了? 好了,以上就是关于动态展示最大最小值的一些疑问,希望可以解答你的疑惑。
个人成就
内容被浏览371,776
加入社区2年305天
返回顶部