Some insights into Insights (and Explore Data)

Why

Explore Data and Insights is a powerful Constellation feature. If I am being honest, one of my favourite Constellation features, unlocking value for Business Users who can create rich Insights and Dashboards in a very intuitive UX.

It introduces are new rule type and configurations for the Pega community, and as such I often get questions on this capability. In this post, I’ll cover more comprehensive details to help advance your knowledge of this feature further.

Prerequisites

Documentation and training can be found on our documentation and academy. It is assumed the reader already has this level of knowledge and looking to advance further.

  1. Pega Documentation: Pegasystems Documentation
    1. Including troubleshooting: Pegasystems Documentation
    2. Including the ability to use Explore Data in UI Kit apps: Pegasystems Documentation
  2. Pega Academy: Exploring application data with Insights | Pega Academy
    1. Including the challenge: Creating an Insight | Pega Academy

Understanding Insights further### URLs for Insights

I love the fact Constellation allow you to open links direct to cases or landing pages. This is a great Out of the Box feature for our Single Page Application architecture, it was always an overhead to implement in UI Kit Apps.

Something that is little known, you can copy the URL’s for Insights as well.

  • Using an Insight in a Case, Landing Page or Dashboards is the preferred consumption method but it does open up use cases where these might not apply. E.g. Please email a daily “start my day” email with a the list of hotel reservations for today and a link to the live information.

Open the Object in a Table or Drill to underlying records

When creating Insights, as table, OR a graph that drills through to the data (table), its a common request that we can configure which column opens the Case or Data Object in the Insight.

In 24.2, this is current not possible to configure the column to open, nor the fields that show in drilling to underlying records. There is enhancements to add this in future releases.

  • However, this can be configured if you use a List View - see the “Using Class Joins” section later on with an example.

Security#### Explore Data

The privilege for Explore Data landing page is Data-Portal_pzDataExplorer. Access to this should be handled Out of the Box if you use App Studio to create and manage the basic RBAC for your Persona. However, I have seen instances where apps that predate this feature, have not had this added to users when they start using this feature.

  • Resolves issue: The Explore data page is not visible for a user, despite the landing page being added to their portal.
    Privilege.png#### #### Class

Insights are saved to Rule-UI-Insight. Like above, access should be handled in new applications. However, older Access Groups might not have access to create rules into this class

[Update/Clarification]

When I say Pega OOTB handles this in newer applications, I’m referring to Persona creation (from App Studio). This creates your Persona, mapped to an Access Group, that inherits from the right roles and is managed in App Studio.

If you go it alone in Dev Studio, creating an Access Group from the ground up (not recommended), you may not have this setup correctly to both work in App Studio and inherit the right roles/privileges.

### ### Rules & Production Rulesets#### Creating an Insight Rule

When you create an Insight via Explore Data, you are creating rules to Rule-UI-Insight.

##### Application Authors (Developers)

If Application Authors are trying to do this, this means it will be saved to a Workspace, Branch or Open Ruleset, just like any other rule using the same “next best ruleset” algorithm.

##### ##### Business Users

If business users are trying to do this in Production, this means you need a Production Ruleset. So the general configuration of a Production Ruleset applies.

  1. Create a Production Ruleset
  2. Add it to your application
  3. Ensure the business user’s Access Group has explicit access to the Production Ruleset
  4. Ensure the Operator Record has “Allow rule check out” so they can save the Insights.
  • Resolves issue: this can block that user from saving new Insights. User gets a “Insights failed to save. Check console for more details”.

#### Hiding or Removing the Out of the Box provided Insights

As an Insight is a rule, you can withdraw the provide insights if they aren’t required for your application.

Additional Configurations on Explore Data Landing Page

In App and Dev Studio, you are able to configure the Explore Data Landing Page, this includes which objects are viewable and Associations included.

  • Resolves issue: Objects missing from Explore Data OR Insights have additional rows (additional data access via an Association)

Insights on Lists (e.g. Embedded Data)

In 24.2, Insights supports multiple levels of Embedded Data.

Say for example I have a Training Course and there is a list of training you must have done before attending (Prerequisites), then you can run insights on these Prerequisites.

Similar to Report Definitions, when you add additional data via say a Join, this will create one row for each of the listed items.

To improve user experience, you can do things like grouping by Case ID by replicating the following table. A great feature of Constellation tables:

#### Optimize Property

To enable all of the above you must optimize this embedded field for reporting, to unlock this.

### ### Insights on References (e.g. Data Reference, User Reference etc.)

In Insights, the Association Rule, provides a simple way to access additional data to be used in your Insight. When you start creating an Insight, you will see some of the Out of the Box associations provided.

Using Class Joins

You an not use Class Joins in Insights.

However, you can use these in a DataPage that can then be used to source a List View.

  • Example: Home page shows the default worklist view with details from assign- class. We want to show some of the properties from work class in this view. How do we approach this requirement?

Steps:

  1. We can save as the existing Data Page and existing RD to make the changes.
  2. Ensure Data Page has “Allow querying any column” unchecked
  3. Add join with work class and add the work class columns to the RD.
  4. In Constellation we cannot access properties from pxPages (Join class) directly. Instead, we need to flatten the DP using a response DT.
  5. The dummy property created in Assign- class for each property fetched from work class has to be marked relevant.
  6. Now use this data page for the “MyWork” landing page for your portal.
  7. The updated “MyWork” landing page will look like this.
  8. Note: To enable the link to the key, you need to alter the field as shown below:

Tables: Insights vs List Views

As implied in a few of the topics above, the configuration and display of an Insight as a Table vs a List View as a Table are different. If you can not achieve your use case with one, you may want to look at the other.

Key differences for me are:

  • Controlling the column you want to open the object (List View)
  • Using any Data Page you like to source the list (List View)
  • Insights allow adding more columns than what is seen, including sorting/filtering
  • Insights could save row density, merges and freezes for large information ​
  • List View tables only allow you to sort/filter from columns that are visible and they can allow you to build filters for user to use (permittable filters)​
  • Search bars are different

Share your experience

Got some other tips? Feel free to share in the comments below.

Even more Insights into Insights (and Explore Data)

Some great resources you may want to explore:

Constellation 101 Series

Enjoyed this article? See more similar articles in Constellation 101 series.

8 Likes

@cheom - Thanks for sharing the tips and tricks. Quite helpful.

While implementing insights (in Pega Infinity 23) we came across a scenario where I would like to get your views on:

  1. We have an insight that shows a pie chart to count the number of work objects (e.g. in “Open” status it shows 20).

  2. When we drill down to each region in the pie chart, the detailed view shows the work objects corresponding to the selected status “Open” - so drill down view should show record count as 20.

However, in the drill down view RD, we have an association with a data class to show the number of Products for each work object. So, if each of the work object has 2 products, in the drill down view there are altogether 40 records and the count is displayed as 40, which is misleading for the user.

Can you please suggest how to overcome this?

@MarcCheong

Does the column filter (Insights or List View) work correctly for the properties set via Data transform ? I believe when we apply column filter its running against the report definition .

In above ex: if we apply column filter for Assign-“Country” not equal to “India” , then the values would still be set via Data Transform and it would show up in the table ?

@MarcCheong Is there any config available to hide “Save as” in Actions button ? like how “Edit” is hidden when not shared

@MarcCheong

Great article, very helpful.

I have a question I’d like to ask. why do you have to uncheck “Allow querying any column”, is it necessary?

Thank you

Hi @MarcCheong,

Thanks for this post!

I have a couple of questions: We are on PEGA cloud and upgraded our application from 8.x to 24.2 currently. However, the application is based on Theme-Cosmos and has not been upgraded to constellaton. However, the landing pages are rendered using constellation (setting on application rule). With that in context:

If I have a class called Org-Process-Work and I create a datapage in it called D_WorkList and check the ‘Allow query using JSON object’ checkbox and source the data from a report definition then the results are shown correctly.

  • However, if I uncheck the ‘Allow query using JSON object’ but keep the report definition as source then I get error on UI and in logs and no data is retrieved. → This also means that I am not able to use the multiple embedded pages for non-queryable data page.

  • Similarly, I tried to use a source other than a report definition but got an error as well.

Have you encountered above issues? Can you share some screenshots wherein you have used a data source other than a report definition and used the non-queryable data page as source?

Cheers!

@MarcCheong Hi Marc, thanks for the detailed writeup.

I want to check if you know how to disable the explore tool feature, as even after I remove the landing page, the user is still able to access via the url link.

I have set Data-Portal_pzDataExplorer privilege to 0.

The reason is to disable the button to create insights as it allows the preview of the backend data and the columns, even if the user wouldn’t be able to save the insight.

Currently even with the privilege set to 0, the preview of the data allows sensitive data that user should not have access to be seen.

@MarcCheong

Thanks for the detailed info on eInsight. I’m trying to use the OOTB “Number of work items created daily” eInsight but I need to config the case types to appear on the report. The report is using the object “All work in my application” but I can’t work out how the system determines the list of case types in my application. Do you know how I can change the case types included in the “All work in my application” object?

Thanks.

@Tae17y interesting question! I haven’t heard anyone ask that before.

For context, I think you’re asking about this page?

OOTB solutions:

  1. As you say, this is just a regular Constellation Table, so Personalization is allowed, people can default and filter as they need.
  2. If there are “common” insights people want, then they could build dashboards just focused on those ones
  3. In the future, likely '26, I have already seen a “Recents” section so you can find your common used ones.

I would say Update Date is probably appropriate, I common get asked about people finding “new insights” and this is how we do it. That said, IF you did want to explore, personalizations are data and they are stored in System-User-Grids. You could look to do something more advanced to change a default for people…

@Adithya_AI’m not 100% sure it will. In fact, Insights run against a virtual report definition - unlike Traditional we don’t have full control over how that populates (like a single report definition). If the data is not in the data object, then I would say it won’t be there, but would have to test that scenario to be 100% - I am leaning on my experience with calculations (declare expressions) here, they don’t populate for Insights.

If you want to be sure, I’d be designing to ensure whatever data object you are reporting on has the data you want OR you build an association to retrieve it.

In '25, they are planning to release the ability to run calculations directly from your insight - which may also give a different avenue if you don’t want to add to your data model.

@Adithya_A It’s not an OOTB option, no. Curious on your use case here. If you give someone access to Explore Data, then they have the ability to create ANY insight they like (subject your access controls against certain objects).

So, even in the absence of “save as”, I could replicate that Insight exactly. In fact, you’re probably annoying the business user, as if they did have a scenario where they wanted modify their own version slightly, they would have to start from scratch.

For users who should not be playing around with creating their own insights, including save as, you could look to put this Insight on a Dashboard or Landing Page? This would mean they were just be a consumer of that Insight created and then no concerns with making changes.

An awesome write up @MarcCheong ,

Do you have any suggestions for building an Insight to show not only values over time but some way to highlight variances above and below a control limit? Would this need to be two separate Insights?

added a great article from @Subhadip Das to list of resources - good Insights into Insights :slight_smile:

@MarcCheong - We have implemented the associations and the source to the insight is a D page-> Report Definition (assign-worklist)-> Mapped Response DT(for pxpages (). I am able to add the columns, but the link to the reference key /case ID is not enabled though it has been configured as additional details.

When I enable Allow query column that’s when the link is enabled , but the mapped data from response DT will not work.

Could you please help with this .

@MarcCheong Thanks a lot for these details, we recently started using the tool as well, and the feedback has been amazing so far!

One thing we struggle with though, is the naming of objects under the ‘Explore Data’ button. The name of these objects is being fetched from the Rule-Obj-Class label, which is something we rather not edit in few use-cases. The result is that we have unclarity for our users about which object they are reporting on. Especially if it’s a class group, or a case with a similar name. We rather give these a more useful label to help out.

Are there any plans to introduce custom labels for this Explore Data dropdown? Or any workarounds I might be missing?

Thanks!

@MarcCheong

Thanks for the detailed post — it has been very helpful!

I have some questions regarding Explore Data. I noticed that Insights are sorted by Update Time and grouped by Class by default on both design time and run time Explore Data.

  • Is there a way to disable this default sorting and grouping? Is this behavior part of the ExploreDataPage template (or governed by the pzMyInsights report definition?), meaning these defaults cannot be modified?
  • If so, does that also imply it is not possible to configure which columns are shown or hidden by default on Explore Data?

I understand that Explore Data is designed as a self-service landing page, and that creating a custom view and then marking it as default could address these needs.

However, since multiple users want the same explore data view, I would like to know whether there is any configuration allowing to clear these default settings.

Thanks you.

@Sudit Sengupta I would need some more details on your scenario. Step 1 and 2 I can follow, this is just Explore Data and Insight is a chart. When you click a section of that chart, you have “drill to underlying records” enabled and then it shows the list.

So at this point, I am assuming it looks like the the below, both with the drill to underlying in configuration, then the click and open records modal (though this is 25.1 so it won’t be 100% the same)

Where I am lost is your description the underlying report definition, Insights doesn’t source from a report definition that you can edit like the Traditional UI “Report Browser” capability. So I might have missed your configuration - if you associate data in the chart, then its also associated in the drill. Would need a little more background on your configuration.

Solution?

However, that said, Associated/Joined/Embedded Data, is an inherently confusing topic for business users. When you expect 20 cases, and see 40 lines (due to the joined data), it can confuse business users.

In this scenario, I would be looking at making it more accessible.

  1. Could you create a landing page with the Insight Chart on the top and then a List View or Insight Table below, with the joined data. I would then group this data by the work object, so its clear that each work object has 2 different products.
  • Here’s an extract from a bootcamp training mission I put together recently. We have a Training Course, that can have multiple Prerequisites (pagelist) and we want an insight on these. Grouping helps visualise the embedded data (pagelist) that has increased the number of records.
  1. Could you flatten the data? Create a concatenated field with all the products list. Then its no longer a pagelist and just a text field, then you could show this in a flattened table, there would be 20 records and no confusion on end user part. This isn’t the greatest from a data modelling perspective, however, I have seen this approach used successfully to simplify data for consumers of List Views or Insights.

@xueh1 it is necessary, when I was creating this article, I missed this step and it didn’t work.

In the past, this checkbox referred to “searchable datapages” but for the last few version it has been named so. I’m not an engineer on the platform so I can’t give you the full technical explanation. However, for me, this is to do with performance, and you’ll see that most of the Constellation functionality is tied into when this is enabled (to allow filtering, sorting, etc.).

In our case, we want Pega not to undertake this optimisation of the datapage and explicitly join data together - so we need to turn that off.

  • I would not recommend this against OOTB datapages created when you create your Case/Data Objects as it will impact other Constellation features. Instead if you want to join data, you should create your own datapages for that purpose.

Some articles on the topic:

@MarcCheong

Thank you, very helpful

@SMSMSM some great questions!

Insights

I’d be keen to understand what you are trying to achieve - multiple embedded pages? So a Case > Client > Address type scenario for your Insight or Landing Page? I think the problem you are going to run into is Insight only goes to “Client” in my scenario.

List Views

If you’re looking at Landing Pages and List Views, then the scenario I outlined “Using Class Joins” could be a way for you to join or flatten the data? The important thing to note is the the Traditional “pxPages” approach is not supported at Design or Run Time, so you need to copy this into an actual data model on your object.

@Aditi Mehta has also posted a variation, around the work- level that might help? Visualizing data from class group | Pega Community. Though it doesn’t cover the embedded data scenario.

Start a Conversation with the Expert Circle?

If you have a more detailed scenario, screenshots etc. and feel up to posting it all with what you are trying to do, you could ask our new Expert Circle? I think this would be a great use case to share with our community.