RSA IGL Version: V 7.2.x
Modules: Governance
Product Area: Charts, Multiple Series - Dynamic (Applied to Review Results Object Dashboard)
Time to apply: ~30 minutes
This chart provides key information about a review. It is a dynamic chart, that has flexible configuration options, allowing you to decide how you want to show and group the data displayed.
The goal of this chart is to understand the activity of your review and what has been happening.
The chart can be used by Review owners or the admin team to track and monitor the progress of the review. It could help with showing how useful sending review reminders were, e.g.. If you sent an email and didn't see a spike in activity, this could indicate an issue with the communication.
This chart will only work when it is applied dynamically to the Review Results object dashboard.
This chart includes the following key information, you can click the chart legend to show/hide results:
The following value needs to be used when creating the chart, however the value will update dyncamilly when used within the dashboard.
How to find an Example Target Object ID:
This is how you can configure the chart, so it is useful for how you wish to view the data
You MUST ensure you use a single quote ', either side of the value, for this to work properly in the RSA IGL Chart UI.
However, when testing this in SQL Developer, the single quote ' is NOT required.
Please copy and paste these values exactly as shown below to change the chart:
We strongly recommend you do not specify too many values for "TotalDataPoints" otherwise it will not display well
First test this in your query tool (SQLDeveloper, Toad etc..)
(
Select
tMaintain.Starttime as "Date",
tMaintain.Value as "Maintain (Count)",
tRevoke.Value as "Revoke (Count)",
tRevokeTotal.Value as "Revoke (Total)",
tMaintainTotal.Value as "Maintain (Total)",
tReassign.Value as "Reassign/Delegation (Count)"
From
(
SELECT
*
FROM
(
SELECT
TO_CHAR(
Tdates.dates,
DECODE(
trim(: GROUPING),
'Daily',
'YYYY-Mon-DD',
'Weekly',
'YYYY - "Week "WW',
'Monthly',
'YYYY - Month',
'Quarterly',
'YYYY - "Q"Q',
'Yearly',
'YYYY'
)
) StartTime,
/*
Use count(t1.value) to count the number of rows based on your filters
Use max(t1.value) to get the maximum value on the specific date
Use sum(t1.value) to get the collective total of values on the specific date
*/
nvl(
count(pRC.ID),
0
) VALUE
FROM
(
SELECT
CASE
/* if using avuser.PV_TELEMETRY_DATA then change sysdate to be sysdate-1. This is beacuse telemetry is calculated 1 day later */
WHEN : GROUPING = 'Daily' THEN trunc(sysdate, 'DD') - (LEVEL -1) WHEN : GROUPING = 'Weekly' THEN trunc(sysdate, 'D') - (
7 * (LEVEL -1)
) WHEN : GROUPING = 'Monthly' THEN ADD_MONTHS(
trunc(sysdate, 'MM'),
-1 *(LEVEL -1)
) WHEN : GROUPING = 'Quarterly' THEN ADD_MONTHS(
trunc(sysdate, 'Q'),
-3 *(LEVEL -1)
) WHEN : GROUPING = 'Yearly' THEN ADD_MONTHS(
trunc(sysdate, 'Y'),
-12 *(LEVEL -1)
) END dates
FROM
dual CONNECT BY LEVEL <= : TotalDataPoints
) Tdates
LEFT JOIN avuser.PV_REVIEW_COMPONENT pRC ON pRC.last_reviewed_date IS NOT NULL
AND pRC.review_id =: TargetObjectID
AND lower(pRC.state) = 'maintain'
/*
Use = to get values at the exact dates.
Use <= to get values on or before the exact date
*/
AND trunc(
pRC.last_reviewed_date,
DECODE(
: GROUPING, 'Daily', 'DD', 'Weekly',
'D', 'Monthly', 'MM', 'Quarterly',
'Q', 'Yearly', 'Y'
)
) = Tdates.dates
GROUP BY
Tdates.dates
ORDER BY
Tdates.dates ASC
)
) tMaintain
left join (
SELECT
*
FROM
(
SELECT
TO_CHAR(
Tdates.dates,
DECODE(
trim(: GROUPING),
'Daily',
'YYYY-Mon-DD',
'Weekly',
'YYYY - "Week "WW',
'Monthly',
'YYYY - Month',
'Quarterly',
'YYYY - "Q"Q',
'Yearly',
'YYYY'
)
) StartTime,
/*
Use count(t1.value) to count the number of rows based on your filters
Use max(t1.value) to get the maximum value on the specific date
Use sum(t1.value) to get the collective total of values on the specific date
*/
nvl(
count(pRC.ID),
0
) VALUE
FROM
(
SELECT
CASE
/* if using avuser.PV_TELEMETRY_DATA then change sysdate to be sysdate-1. This is beacuse telemetry is calculated 1 day later */
WHEN : GROUPING = 'Daily' THEN trunc(sysdate, 'DD') - (LEVEL -1) WHEN : GROUPING = 'Weekly' THEN trunc(sysdate, 'D') - (
7 * (LEVEL -1)
) WHEN : GROUPING = 'Monthly' THEN ADD_MONTHS(
trunc(sysdate, 'MM'),
-1 *(LEVEL -1)
) WHEN : GROUPING = 'Quarterly' THEN ADD_MONTHS(
trunc(sysdate, 'Q'),
-3 *(LEVEL -1)
) WHEN : GROUPING = 'Yearly' THEN ADD_MONTHS(
trunc(sysdate, 'Y'),
-12 *(LEVEL -1)
) END dates
FROM
dual CONNECT BY LEVEL <= : TotalDataPoints
) Tdates
LEFT JOIN avuser.PV_REVIEW_COMPONENT pRC ON pRC.last_reviewed_date IS NOT NULL
AND pRC.review_id =: TargetObjectID
AND lower(pRC.state) = 'revoke'
/*
Use = to get values at the exact dates.
Use <= to get values on or before the exact date
*/
AND trunc(
pRC.last_reviewed_date,
DECODE(
: GROUPING, 'Daily', 'DD', 'Weekly',
'D', 'Monthly', 'MM', 'Quarterly',
'Q', 'Yearly', 'Y'
)
) = Tdates.dates
GROUP BY
Tdates.dates
ORDER BY
Tdates.dates ASC
)
) tRevoke on tRevoke.starttime = tMaintain.Starttime
left join (
SELECT
*
FROM
(
SELECT
TO_CHAR(
Tdates.dates,
DECODE(
trim(: GROUPING),
'Daily',
'YYYY-Mon-DD',
'Weekly',
'YYYY - "Week "WW',
'Monthly',
'YYYY - Month',
'Quarterly',
'YYYY - "Q"Q',
'Yearly',
'YYYY'
)
) StartTime,
/*
Use count(t1.value) to count the number of rows based on your filters
Use max(t1.value) to get the maximum value on the specific date
Use sum(t1.value) to get the collective total of values on the specific date
*/
nvl(
count(pRC.ID),
0
) VALUE
FROM
(
SELECT
CASE
/* if using avuser.PV_TELEMETRY_DATA then change sysdate to be sysdate-1. This is beacuse telemetry is calculated 1 day later */
WHEN : GROUPING = 'Daily' THEN trunc(sysdate, 'DD') - (LEVEL -1) WHEN : GROUPING = 'Weekly' THEN trunc(sysdate, 'D') - (
7 * (LEVEL -1)
) WHEN : GROUPING = 'Monthly' THEN ADD_MONTHS(
trunc(sysdate, 'MM'),
-1 *(LEVEL -1)
) WHEN : GROUPING = 'Quarterly' THEN ADD_MONTHS(
trunc(sysdate, 'Q'),
-3 *(LEVEL -1)
) WHEN : GROUPING = 'Yearly' THEN ADD_MONTHS(
trunc(sysdate, 'Y'),
-12 *(LEVEL -1)
) END dates
FROM
dual CONNECT BY LEVEL <= : TotalDataPoints
) Tdates
LEFT JOIN avuser.PV_REVIEW_COMPONENT pRC ON pRC.last_reviewed_date IS NOT NULL
AND pRC.review_id =: TargetObjectID
AND lower(pRC.state) = 'revoke'
/*
Use = to get values at the exact dates.
Use <= to get values on or before the exact date
*/
AND trunc(
pRC.last_reviewed_date,
DECODE(
: GROUPING, 'Daily', 'DD', 'Weekly',
'D', 'Monthly', 'MM', 'Quarterly',
'Q', 'Yearly', 'Y'
)
) <= Tdates.dates
GROUP BY
Tdates.dates
ORDER BY
Tdates.dates ASC
)
) tRevokeTotal on tRevokeTotal.starttime = tMaintain.Starttime
left join (
SELECT
*
FROM
(
SELECT
TO_CHAR(
Tdates.dates,
DECODE(
trim(: GROUPING),
'Daily',
'YYYY-Mon-DD',
'Weekly',
'YYYY - "Week "WW',
'Monthly',
'YYYY - Month',
'Quarterly',
'YYYY - "Q"Q',
'Yearly',
'YYYY'
)
) StartTime,
/*
Use count(t1.value) to count the number of rows based on your filters
Use max(t1.value) to get the maximum value on the specific date
Use sum(t1.value) to get the collective total of values on the specific date
*/
nvl(
count(pRC.ID),
0
) VALUE
FROM
(
SELECT
CASE
/* if using avuser.PV_TELEMETRY_DATA then change sysdate to be sysdate-1. This is beacuse telemetry is calculated 1 day later */
WHEN : GROUPING = 'Daily' THEN trunc(sysdate, 'DD') - (LEVEL -1) WHEN : GROUPING = 'Weekly' THEN trunc(sysdate, 'D') - (
7 * (LEVEL -1)
) WHEN : GROUPING = 'Monthly' THEN ADD_MONTHS(
trunc(sysdate, 'MM'),
-1 *(LEVEL -1)
) WHEN : GROUPING = 'Quarterly' THEN ADD_MONTHS(
trunc(sysdate, 'Q'),
-3 *(LEVEL -1)
) WHEN : GROUPING = 'Yearly' THEN ADD_MONTHS(
trunc(sysdate, 'Y'),
-12 *(LEVEL -1)
) END dates
FROM
dual CONNECT BY LEVEL <= : TotalDataPoints
) Tdates
LEFT JOIN avuser.PV_REVIEW_COMPONENT pRC ON pRC.last_reviewed_date IS NOT NULL
AND pRC.review_id =: TargetObjectID
AND lower(pRC.state) = 'maintain'
/*
Use = to get values at the exact dates.
Use <= to get values on or before the exact date
*/
AND trunc(
pRC.last_reviewed_date,
DECODE(
: GROUPING, 'Daily', 'DD', 'Weekly',
'D', 'Monthly', 'MM', 'Quarterly',
'Q', 'Yearly', 'Y'
)
) <= Tdates.dates
GROUP BY
Tdates.dates
ORDER BY
Tdates.dates ASC
)
) tMaintainTotal on tMaintainTotal.starttime = tMaintain.Starttime
left join (
SELECT
*
FROM
(
SELECT
TO_CHAR(
Tdates.dates,
DECODE(
trim(: GROUPING),
'Daily',
'YYYY-Mon-DD',
'Weekly',
'YYYY - "Week "WW',
'Monthly',
'YYYY - Month',
'Quarterly',
'YYYY - "Q"Q',
'Yearly',
'YYYY'
)
) StartTime,
/*
Use count(t1.value) to count the number of rows based on your filters
Use max(t1.value) to get the maximum value on the specific date
Use sum(t1.value) to get the collective total of values on the specific date
*/
nvl(
count(pRCC.ID),
0
) VALUE
FROM
(
SELECT
CASE
/* if using avuser.PV_TELEMETRY_DATA then change sysdate to be sysdate-1. This is beacuse telemetry is calculated 1 day later */
WHEN : GROUPING = 'Daily' THEN trunc(sysdate, 'DD') - (LEVEL -1) WHEN : GROUPING = 'Weekly' THEN trunc(sysdate, 'D') - (
7 * (LEVEL -1)
) WHEN : GROUPING = 'Monthly' THEN ADD_MONTHS(
trunc(sysdate, 'MM'),
-1 *(LEVEL -1)
) WHEN : GROUPING = 'Quarterly' THEN ADD_MONTHS(
trunc(sysdate, 'Q'),
-3 *(LEVEL -1)
) WHEN : GROUPING = 'Yearly' THEN ADD_MONTHS(
trunc(sysdate, 'Y'),
-12 *(LEVEL -1)
) END dates
FROM
dual CONNECT BY LEVEL <= : TotalDataPoints
) Tdates
LEFT JOIN avuser.PV_REVIEW_COMPONENT pRC ON pRC.review_id =: TargetObjectID
left join avuser.PV_REVIEW_COMPONENT_CHANGE pRCC on pRCC.Review_component_id = pRC.ID
AND pRC.review_id =: TargetObjectID
AND Operation_type in (
'Reassign', 'Delegation', 'Remove'
)
AND trunc(
pRCC.creation_date,
DECODE(
: GROUPING, 'Daily', 'DD', 'Weekly',
'D', 'Monthly', 'MM', 'Quarterly',
'Q', 'Yearly', 'Y'
)
) = Tdates.dates
GROUP BY
Tdates.dates
ORDER BY
Tdates.dates ASC
)
) tReassign on tReassign.starttime = tMaintain.Starttime
)
Example of the results:
If you get an error at this stage, please test your SQL in a Query tool, like "SQL Developer" or "SQL Squirrel" to ensure it works first.
If it still doesn't work, please share your SQL and a screen shot of the issue below. DO NOT contact RSA Support
There are MANY other "display attributes" you can play with on this screen, so please update and make changes as you see fit.
Dont forget:
Please login, then "Like" and "Actions/Follow" this page (Top Right), so as to receive updates and be notified if we modify/change items found here, in future.