Salesforce Admin篇(二) Report
针对salesforce系统也好,针对其他的平台系统也好,对于business user的需求以及疑问,数据往往决定了答案。业务人员提出了某些疑问,管理员需要根据需求的分析转换成数据的分析及过滤从而反馈给business user想要的结果。
比如销售经理扔过来一个需求,整理一下本公司的Product Top Sellers。 作为salesforce的管理员需要去分析当前的需求。
- Top Seller定义是什么? by quantity还是by revenue排序还是by其他条件?
- Product 通常根据Product Family进行分类,比如能源,教育等等,展示数据是否需要根据Product Family进行分组?
- Product Top Seller的范围是什么时间? 今年,去年还是根据其他的条件?
- Product Inactive情况下,是否需要展示?
- 哪些用户可以看见这份报告?全部能看见还是by group还是只能他看见还是其他?
- 是否需要定期发送此report数据给他或者指定的人/组?
当得到业务人员的confirm以后,确认最终需求并且分析:
- Top Seller by quantity;
- Product需要根据Product Family进行分组;
- Product Top Seller需要找已经赢单的数据;
- 已经inactive的数据不需要展示出来。
- 所有的用户都可以看见
- 不需要定期report,只需要保存所有人能访问即可。
分析:
是否系统中已经有指定的 Report Type进行选择还是需要自定义 Report Type?
Report Format如何选择?
需要选择哪些条件进行过滤?
设计:
Report Type使用标准的即可: Opportunities With Products
因为需要通过Product Family进行分组,所以 Report Format 需要选择 Summary
过滤条件:
Product : Active
Opportunity Stage : 'Close Won'
根据上述的条件设计保存以后,销售经理的问题就迎刃而解。作为salesforce的从业人员,report是我们经常需要使用的数据分析工具去更好的解答业务人员的疑惑。想要创建/编辑/删除Report,需要拥有system permission的Create and Customize Reports和Report Builder权限;如果想要run report,需要拥有system permission的Run Reports的权限;如果想要Schedule Report,需要拥有system permission的Schedule Reports。本篇根据以下几个方面进行Report的简单知识的讲解。
一. Report Type
Report type可以解释为一个模板,用来当用户创建Report时,决定哪些表和字段用户可以有权限访问。salesforce提供了大量的标准的report type以供使用,如果标准的report type不足以满足用户需求情况下可以自定义report type。不管是标准的report type还是自定义的report type都具有 primary object relation ship以及对应的field layout。针对 primary object relationship, 每个report type中都会必须指定一个primary object以及可选的关联列表,关联列表的选择需要有lookup关系或者MD关系。针对主object以及级联的object有两种数据关系。
- Primary object with related object:此关系为返回的主object数据必须要包含至少一条的related object的数据,如果主object数据中没有相关联的数据,则不会作为结果进行返回。
- Primary object with or without related object:此关系为返回的主object数据不管是否包含关联列表均会作为结果返回。
一张图来总结with 以及with or without如下所示,A 为 primary object,B为A的related object.

当我们了解report type数据关系以后,我们便可以通过report type创建report了。因为很多report type官方没有提供,所以我们需要自己去创建自定义的report type,比如我们想要出一份contact 到opportunity / quote /quote line item的report,但是官方没有提供这个report type,这时我们就需要自己创建了。创建步骤如下:
1. Set Up 搜索report type后点击continue以后点击New button;

2. 针对 Primary Object,我们这里是Contact,label代表着你在report区域搜索对应的名称,store in category代表着当前的report type在哪个folder下面进行管理;

3. 根据需求选择related object以及数据关系。数据关系决定了你返回的数据的数量,根据业务的需求准确的选择。report type最多可以选择4层,如果你的数据结构多余4曾,选择主要的related object以后再Edit Layout部分选择需要的object的数据信息。

4. 当我们保存成功以后,我们可以查看每个表中的对应的field layout。如果需要的字段没有在layout中,只需要Edit Layout即可。

我们如果有超过4层结构情况下,可以将主要的子related object选出来,然后根据add fields related via lookup方式选择出来。
二. Report
Report Type创建好以后我们就可以根据需求来创建相应的report了,下面根据以下几点进行描述。
1. Report Filter
当我们创建Report时,需要有根据业务的需求进行数据的过滤,比如看我自己的数据,看当前年的数据等等。Salesforce有5个类型的Filter进行数据的过滤。
| Filter Type | Description |
| Standard Filter | 不同的对象拥有不同的 Standard Filter,不过大部分对象都包括一些公用的Standard Filter比如 show all/show me 以及date range等 |
| Field Filter | 使用字段的比较进行过滤,比如 opportunity stage 为 close/won等 |
| Filter Logic | 当我们进行多个Field Filter时,我们可能希望2 和 3 是或的关系,我们可以使用 Filter Logic进行实现 1 AND (2 OR 3) |
| Cross Filter | Filter条件为使用子object通过with / with or without 条件,下面会有例子说明。 |
| Row Limit | 针对tabular format的report,可以限制展示的记录的上限。通常可以将Row Limit的Report作为source report去创建Dashboard table或者chart component |
其他的几个都很好理解,下面说一下 Cross Filter的场景。公司的销售经理想要一份针对去年没有 Close/Won的Opportunity的Account的报告。按照正常想法我们可能需要在Account上面使用Formula字段去统计没有Close/Won的Opportunity,其实这种情况下我们只需要使用Cross Filter就可以简单的实现了。

2. Report Format
Salesforce提供了4种方式去进行Report中数据的format,分别是 Tabular / Summary / Matrix / Joined。 根据不同的场景我们会选择不同的format方式。
1) Tabular
Tabular是salesforce创建Report默认的format方式,也是最简单和最快的方式。此种类型最适合应用于纪录列表或者具有单个总计的列表。当然此种类型也有限制,此种方式不能创建chart,在不使用Row Limit情况下也不能用作Dashboard的source report.下图为展示当前年份的所有的Opportunity并且对Expected Revenue进行汇总。

2) Summary
Summary在Tabular的基础上,增加了针对某个列进行数据分组,查看分类汇总以及创建图标,同时也可以作为Dashboard的source report. 基于上个Report,我们可以通过Stage进行分组并且查看基于Stage的分类汇总结果,同时可以创建report chart去直观的显示效果。Summary和Tabular的重要区别为可以通过某列或者某些列进行分组,如果使用Summary format但是没有选择基于哪列分组,则运行结果和Tabular相同。

3) Matrix: 此种格式和上面的Summary效果相似,区别在于使用Matrix可以针对行和列对数据进行分组和汇总。此种格式经常用于比较相关的汇总信息,特别是用于对大量数据进行汇总并且要根据不同的字段进行比较,或者是想要通过日期/产品/人/地理等维度去看数据。当我们运行Matrix格式的Report时,如果没有通过至少一行和一列进行分组情况下,运行结果和Summary类型相同。下图中展示的时通过Stage 以及 Probability对Opportunity的Amount进行分析。

4) Join Report: Join Report可以让你创建多个report块为你的数据提供不同的视图。每一块都类似一个子report,可以展示独立的字段等信息,也可以使用不同的report type展示数据。Join Report相关可以查看官方视频: http://salesforce.vidyard.com/watch/9HiLP7WVAApjQHhyA9QRUQ

通过上面的Report Format描述,我们可以看到他们的区别和联系。如果我们从一个格式转换成另外一个格式,效果和影响如下:
1) Tabular 转换成 Summary / Matrix: Rows to display filter将会被移除;
2) Summary/Matrix/Join 转换成 Tabular:所有的分组,chart以及自定义的formula都将会被移除。分组的列没法转换成Tabular的列,比如我们在summary中使用stage进行分组,如果转换成Tabular以后,stage将不会展示在Tabular的列中,需要重新选择。如果Join展示了多块,则只有第一块的列会展示在Tabular中;
3) Summary转换成Matrix:我们在Summary可以基于多列进行分组,如果转换成Matrix,则第一个汇总的字段将会作为行层次的分组,第二个汇总的字段将会作为列层次的分组,第三个的汇总字段将会作为第二个行层次的分组;
4) Matrix转换成 Summary: 第一个行的分组将会作为summary的第一个分组的列,第一列的分组将会作为summary的第二个分组的列,第二行的分组将会作为summary的第三个分组的列。
5) Tabular/Summary/Matrix转换成Join: 已经存在的report将会变成join report的第一块,report type将会变成principle report type。如果报表中使用了以下的内容,则没法转换成Join Report: Bucket Fields / Cross Filters / The rows to display filter。
3. Report Folder
我们创建的report,有时作为所有人都可以看的,有时仅能自己看,有时可以部分用户或者部分role才可以看到。针对看到的report,有时只允许他看,有时允许修改或者管理,这个时候就涉及到report folder的概念。将Report放在某个Report Folder中,使用Report Folder对用户设置访问权限从而达到Report的访问控制。Report Folder新建需要点击下图中的下三角然后选择 New Report Folder。
我们创建好Report Folder以后,点击Share以后,可以基于不同维度设置不同的访问权限。

我们可以share给具体的用户,基于role/group/territory去进行share,如果当前的用户没有满足share的规则,则看不到指定的report folder以及无法访问相关的report。Access Level可以设置三种:
- Viewer:可以进行View,Refresh,Run;
- Editor:在Viewer的访问权限基础上可以Edit,Move,Save以及Delete;
- Manager:在Editor基础上可以share以及rename report folder。

4. Formula
当我们在summary或者matrix report中经常会用到分组以及汇总,比如基于owner进行分组汇总amount等。除此之外,salesforce在分组的report中还给我们提供了formula方式基于数字型的值去计算额外的汇总的计算。比如我们想要知道基于owner进行分组的report情况下,每个owner的close/won的单子的数量,我们便可以使用formula进行快速的展示,在summary/matrix report中,最多可以使用5个formula字段。如下图所示,我们只需要点击 Add Formula,然后填写当前生成的formula的列的名称,设置当前的列在哪里展示值并填写相关公式便创建了一个formula的字段去更好的进行额外的汇总。

总结:我们在项目中经常会用到Report,好的Report的使用方法可以快速的定位问题解决问题,也可以避免创建不必要的字段不必要的汇总逻辑去用于Report的展示。篇中展示的内容过于基础,起到抛砖引玉的作用,欢迎小伙伴们深入学习。篇中有错误地方欢迎指出,有不懂的欢迎留言。
Salesforce Admin篇(二) Report的更多相关文章
- Salesforce Admin篇(一)Duplicate Management
参考资料:https://help.salesforce.com/articleView?id=managing_duplicates_overview.htm Salesforce 很重要的一个平台 ...
- Salesforce Admin篇(三) Delegated Administrator
项目中,我们可能会遇见以下的场景. 1. HR 经理针对申请者和工作相关的表的app会经常需要修改布局查看需要的页面的字段: 2. 开发者将record type对应的picklist values等 ...
- Salesforce Admin篇(四) Security 之Two-Factor Authentication & Single Sign On
本篇参考: https://c1.sfdcstatic.com/content/dam/web/en_us/www/documents/white-papers/2fa-admin-rollout-g ...
- Salesforce 集成篇零基础学习(一)Connected App
本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
<高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- SQL Server调优系列玩转篇二(如何利用汇聚联合提示(Hint)引导语句运行)
前言 上一篇我们分析了查询Hint的用法,作为调优系列的最后一个玩转模块的第一篇.有兴趣的可以点击查看:SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行) 本篇继续玩转模块 ...
- php基础篇-二维数组排序 array_multisort
原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...
随机推荐
- iOS UITableView动态隐藏或显示Item
通过改变要隐藏的item的高度实现隐藏和显示item 1.创建UITableView #import "ViewController.h" @interface ViewContr ...
- GIS基础软件及操作(十)
原文 GIS基础软件及操作(十) 练习十.网络分析 (1) 加深对网络分析基本原理.方法的认识:(2) 熟练掌握ARCGIS下进行道路网络分析的技术方法:(3) 结合实际.掌握利用网络分析方法解决地学 ...
- C#应用配置信息保存和读取
//保存信息 SystemConfig.WriteConfigData(“字段名称”, “这里是需要保存的内容”); //读取信息 SystemConfig.GetConfigData(“字段名称”, ...
- C#关于多线程的笔记
Thread thNetwork; thNetwork = new Thread(new ThreadStart(GetNetworkInfo));//创建一个线程 thNetwork.Start() ...
- Android 开发中,as或者idea对gradle的使用
原文:Android 开发中,as或者idea对gradle的使用 本文属于转载收藏,侵删,出处:私人博客 ---------------------------------------------- ...
- Fundamentals Code Library,包含HTTP TCP JSON BigInteger 加密算法 Unicode等许多东西
http://fundementals.sourceforge.net/index.html https://github.com/fundamentalslib/fundamentals5 http ...
- Qt项目里的源代码默认都是Unicode,原因大概是因为qmake.conf里的定义
MAKEFILE_GENERATOR = MINGWQMAKE_PLATFORM = win32 mingwCONFIG += debug_and_release debug_and_release_ ...
- C++虚函数表解析(图文并茂,非常清楚)( 任何妄图使用父类指针想调用子类中的未覆盖父类的成员函数的行为都会被编译器视为非法)good
C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的指针有“多种形态”,这是一种泛型技术 ...
- hive Metastore contains multiple versions
凌晨接到hive作业异常,hive版本为1.2.1,hadoop版本apache 2.7.1,元数据存储在mysql中,异常信息如下: Logging initialized using config ...
- python中的变量,字符串,用户交互,if语句
一:python介绍 python的创始人为吉多·范罗苏姆,创始时间是1989年. 1python是一门什么样的语言 python是一门解释型弱类型语言★ 弱类型:弱类型的变量可以变,强类型的变量不能 ...