Before getting started, let me tell you guys a little story of mine. My company started using Salesforce as our CRM system in 2018. I was assigned to be the direct person-in-charge of this brand new CRM system and there I started out my Salesforce journey. I had passed my Administrator Exam, App Builder Exam and Developer I exams last year. After that, I kind of stop pursuing for more certification as I wasn't sure if I should pursue my career path on Salesforce or AWS at the moment. Recently, I was once again got transfer to operations department and that got me into thinking, perhaps I should finish up where I left out. Hence, I have decided to start preparing for Advanced Administrator exam as well as Platform Developer II exam and I am aiming to get them passed in the next few months. I might also write few posts on my previous exams as well. Without further ado, let's get rolling!

NOTE: This post is written in April 2019 and content might be changed/updated overtime. Also, Lightning means Salesforce Lightning Experience (LEX) and Classic means Salesforce Classic. The content is inspired by

Report Formats

Tabular reports

  • List of records and the fields selected

Summary Report

  • Summary reports allow grouping data by rows and display of subtotals.
  • Up to 3 levels of grouping can be defined as of now.

Matrix Report

  • Matrix reports allow grouping data by rows and columns.
  • 2 levels of grouping for both rows and columns.
  • If over 2,000 records in a report, the detail rows in Matrix report cannot be clicked to show.

Joined Report

  • Joined reports allow displaying multiple reports in blocks in one report.
  • It can contain information from multiple standard or custom report types.
  • Up to 5 report blocks can be included in one joined report.
  • Each block of a joined report returns up to 2000 records, 5 blocks of joined report can return up to 10000 records.
  • Filters can be applied by block.

Summary Fields

  • Number or Currency fields can be summarized by SUM, AVERAGE, MIN or MAX.
  • Summary values are displayed at all grouping levels.
  • Simply click on the dropdown of the column and select Summarize.


  • Reports in Lightning Experience (LEX) are combined into one type where users can simply group the data by columns (summary report) or by columns and rows (matrix report) easily.
  • In Lightning Experience, date field can be grouped by a calendar or fiscal period.
  • Hide the embedded Salesforce Classic report builder in Lightning Experience in Reports and Dashboards Settingscan be selected to hide the classic report builder.

Report Types

Standard Report Types

  • Standard Report Types are created for standard objects automatically and custom objects if selected Allow Reports in the Object Settings.
  • Always with related records.
  • Include fields from primary object and related child objects.

Custom Report Types

  • Custom Report Types are like Standard Report Types, excepts it can define which fields are available for a report and to specify with/without related records.

  • Can include additional fields such as fields that are related to a lookup object. Click Add fields related via lookup and select your desired fields to be displayed in the report.

  • Can include up to 4 levels: primary object + 3 related objects.

  • Customize the page layout for Custom Report.

  • Checked fields on the Custom Report page layout are included in a report by default.

  • Simply drag the field and drop into the right container area to remove the field from page layout.

Reporting Snapshot

  • Reporting Snapshot is used to report on historical data, identify trends on data that is changing.
  • Required to select Source Report from existing reports and also set the Target Object to be summarized on.
  • By default, grouping level is at Grand Summary unless you specify differently.
  • Mapping summary fields (sum, average, Max, Min) from source report to target object. You can assign the same source report field to more than one target object field.
  • Reporting snapshots can be scheduled to run daily, weekly and monthly.
  • Reporting snapshots can be emailed to yourself, Salesforce users, public groups, roles and roles and subordinates.

Historical Trend Reporting

  • Historical trend reporting allows tracking of changes over time.
  • It is not a standard report, it is a custom report type that becomes available once historical trending is enabled.
  • A custom report type is used to highlight changes between 5 snapshot dates (can choose custom date, days ago, weeks ago, months ago, first day x weeks/months ago).
    • Custom
    • 1 Month Ago
    • 2 Months Ago
    • 3 Months Ago
    • First Day This Month
    • First Day Last Month
    • First Day 2 Months Ago
    • First Day 3 Months Ago
    • 1 Week Ago
    • 2 Weeks Ago
    • 3 Weeks Ago
    • 4 Weeks Ago
    • First Day This Week
    • First Day Last Week
    • First Day 2 Weeks Ago
    • First Day 3 Weeks Ago
    • First Day 4 Weeks Ago
    • Yesterday
    • 2 Days Ago
    • 3 Days Ago
    • 4 Days Ago
    • 5 Days Ago
    • 6 Days Ago
    • 7 Days Ago
    • 30 Days Ago
    • 60 Days Ago
    • 90 Days Ago
    • NOTE: the snapshot date will always be shown in sequential order, regardless of the order you add the snapshot dates.
  • Historical data pertains from the previous 3 months to current month.
  • Days or weeks is suggested duration for historical trend reporting.
  • You can select Opportunities, Cases, Forecasting Items, and up to 3 custom objects.
  • Filters can be configured for historical trend reporting.
  • You can select up to 8 fields in an object for historical trending.
  • Column field name with '(historical)' indicates the historical value of the snapshot date. For example, StageName was Waiting Signature yesterday and today the StageName becomes Closed Won, then the yesterday's snapshot will show Waiting Signature and today's snapshot will show Closed Won.
    NOTE: standard object such as Opportunity has its default trended fields such as Amount, Close Date, Forecast Category, Probability and Stage. So, there's only 3 fields available.
  • Changed dates or values are highlighted in red (value decreases) or green (value increases).
  • NOTE: Trending report is not the same as historical trending report.
  • If you remove all the grouping columns and rows, it will show a nice report view like this:
    • You can set the Show Change as 'None' or 'Value'.
    • If you set Show Change as 'Value', you will see Change column for each snapshot dates in historical column field:
    • You can also set the Format Change for the historical column:
  • Opportunity Trends Report is a special historical trend report for Opportunity:
    • Format: Matrix
    • Groupings: The default report shows rows grouped by Historical Stage and columns grouped by As of Date.
    • Summary Fields: Historical Amount (sum)

Custom Summary Formulas

  • Allow a formula to be defined on number, percent and currency summary fields.
  • Up to 5 formulas can be defined per report.
  • Formula fields can use aggregate functions such as SUM, MAX, MIN, AVG functions.
  • Formula functions that can be used are Logical, Math, and Summary.
  • It can only be displayed at all summary levels, grand summary or specific grouping levels.

ParentGroupVal Function

  • ParentGroupVal function obtains the summary value from a parent group.
  • The formula function is PARENTGROUPVAL(summary_field, grouping_level) where summary_field could be RowCount or summary fields such as AMOUNT:SUM whereas grouping_level could be specific API name like GRAND_SUMMARY or grouping name such as Case.Record_Type_Name__c or Account.Name depending on the available group name in report.
  • Parent group is a grouping that is one level above the current grouping.
  • A parent group can be a particular grouping or grand summary.
  • This function can only be used in custom summary formulas and at grouping levels for reports, but not at summary levels.
  • In summary report (group by column), the grouping_level is either GRAND_SUMMARY or the API name of parent level group, whereas in matrix report (group by both column and row), it is the parent_row_level and parent_column_level that are the parent levels.
  • Example of summary report: PARENTGROUPVAL(summary_field, grouping_level) where summary_field could be summary field like AMOUNT:SUM and grouping_level could be GRAND_SUMMARY or USERS.NAME or ACCOUNT.NAME (grouping by name)
  • One of the used cases of this function to get percentage from all groups: AMOUNT:SUM / PARENTGROUPVAL(AMOUNT:SUM, USERS:NAME)
  • Example of matrix report: PARENTGROUPVAL(summary_field, parent_row_grouping, parent_column_grouping)
  • Example of ParentGroupVal using total record count percentage grouping by Sales Region:

PrevGroupVal Function

  • PrevGroupVal function obtains the value of a previous grouping.
  • The formula function is PREVGROUPVAL(summary_field, grouping_level [, increment]) where summary_field is the name of grouped row or column, grouping_level is the API name of the peer level group whose summary value for the previous group is used, and increment is the number of groupings previous.
  • increment is the number of columns or rows before the current summary (default is 1, maximum is 12).
  • Previous group can be a row or column group before the current group.
  • This function can only be used in custom summary formulas and at grouping levels for reports, but not at summary levels.
  • NOTE: In reports with multiple grouping levels, you can specify the grouping_level to be the same group level as the formula display level or a group level higher than the formula display level.
  • One of the used cases of this function to calculate the difference in amount from previous month: AMOUNT:SUM - PREVGROUPVAL(AMOUNT:SUM, CLOSE_DATE)
  • Example of PrevGroupVal using amount difference grouping by Close Date:

Conditional Highlighting

  • Conditional Highlighting allows summarized values to be colored depending on how they meet the value thresholds.
  • It can work on summary fields and custom summary formulas.
  • Conditional Highlighting in report is available to Classic only. NOTE: it is now available to Lightning for Summer 19' version!
  • Conditional Highlighting in dashboard component table is available to Lightning.

Row Limit (Classic only)


  • Limit the number of records returned in a tabular report only.
  • You can define the sorting field and the order.


  • Filters can be set on field values.
  • Filter logic can be added to combine filters with AND and OR conditions.
  • Depending on the report type, a report typically has up to 4 standard filters which are applied by default. For example, Show Me filter and a Date filter are included in most of the reporting templates.
  • Filter logic can only be added on the custom defined filters.
  • When filtering on a picklist field, No Selection can be selected to limit results to records taht are blank or contain null values.
  • Dashboard filters are similar to report filters, except they are applied to all the components in the dashboard.

Cross Filters

  • Cross filters can be used to display records based on if they do or do not have child records of a particular type.
  • Allow including or excluding records in a report.
  • Can be used to create an exception report that displays records which have no related child records, ex: create a report to display Accounts without Contacts.
  • Subfilters are used to add filters to the child object part of the cross filter.

Bucket Field

  • Bucket field is used to define and bucket the field values together.
  • Can be defined on Number, Percent, Currency, Picklist and Text fields.
  • For the picklist field, you can add bucket and move the selected picklist values to the bucket.
  • It can also be used for grouping and filtering.

Cross Block Custom Summary Formulas

  • Cross block summary formulas can be used to calculate a value referring to summary values from multiple blocks in a joined report.

Complex Charting

  • Complex charting can be used when multiple data sets need to be charted in one place.
  • Visualforce charting uses a Visualforce page to combine several chart components and their data.
  • Combination charts show multiple value sets on the same axis, plotting the date sets together (Classic only).


  • Dashboards are visual representations of data from a report.
  • It can be in the form of a chart, gauge, metric, table or Visualforce page (Classic only).
  • If a dashboard has filters, only the unfiltered version is refreshed.
  • Dashboard filters can not be applied to emailed dashboards. The dashboard is displayed unfiltered.
  • Dashboard can be automatically emailed to one or a group of users once it is refreshed.
  • Dashboard can run with a running user but it will only display data that the user has access to (contrary to running as admin or user in higher hierachy).
  • Only users who have accessed to the dashboard folders will be able to view the dashboards in the folder.
  • In Lightning, a joined report can be used as the source report for a dashboard component. It can contain data from multiple standard or custom report types or multiple view of the same object.
  • A joined report that needs to be used as a source report for a dashboard component must have a chart.
  • A dashboard that runs as the logged in user is called Dynamic Dashboard.
  • Permission is required to let dashboard viewers choose whom they view the dashboard as results.
    • View My Team's Dashboards - allow users to view dashboard as any user below them in role hierarchy.
    • View All Data - allow users to edit the dashboard and view it as any user in the org.
    • Enable Other User's Dashboard - allows users to edit any dashboard they have access to (do not need to be the running user or have "View All Data" permissions)
  • Only 5 dynamic dashboards are allowed for Enterprise edition and up to 10 for Unlimited edition.
  • Dynamic dashboard cannot be scheduled to refresh. It can only be refreshed manually. Also, it cannot be subscribed for email notification.

Post was published on , last updated on .

Like the content? Support the author by!