You are on page 1of 21

In recent meetings with Fusion HCM customers, I have been asked questions similar to the ones

below on more than one occasion. This document provides solutions to these questions and in doing
so will highlight some techniques that can be used across all of the reports you create.

Table of Contents
How do I remove the scroll bars on a table when I create a new query? .......................................... 2
If I have created a report and then realise that I actually wanted to use a different subject area, is
it possible to point that same report at the new subject area without re-writing it?........................ 4
How can I calculate an employees age from their date of birth? ...................................................... 6
How can I hide fields from the default layout but still have them available to users on the right
mouse click? ........................................................................................................................................ 8
How can I change the standard aggregation on a numeric field, for example to show the average
age of a group of employees?........................................................................................................... 10
How can I limit my report to only bring back records for say the last 12 months?.......................... 12
Appendix XML for Example Reports .............................................................................................. 15

How do I remove the scroll bars on a table when I create a new query?
When creating a new report containing several columns of information, the default table view will
automatically include both a horizontal and vertical scroll bar as shown below

The scroll bars can be removed by choosing the View Properties icon just above the table to the right
hand side (the XYZ icon as highlighted in the screenshot below)

When you click on that, the table properties will be displayed. Choose the radio button beside
Content Paging to remove the scroll bars. When you do that, an option will appear to specify the

number of rows per page (default if not specified is 25 rows). Choose OK and the table will display
with no scroll bars.

If I have created a report and then realise that I actually wanted to use
a different subject area, is it possible to point that same report at the
new subject area without re-writing it?
The answer is yes provided is only uses items that are in both subject areas.
Lets use the example from the previous answer. This report is returning some worker information.
At the moment, it is using Workforce Management Person Real Time subject area. We are going
to change it to use Workforce Management Worker Assignment Real Time because there is a
need to add the business unit for each worker and that field is available in the Workforce
Management - Worker Assignment Real Time subject area.
Here is the current query. It uses items from the worker folder that are all available in the new
subject area.

To change the subject area without re-writing the query, choose the Advanced tab highlighted above
the Analysis XML will be displayed as shown below.

This may look a bit daunting but dont worry, you are only going to make a very small change. You
can resize the box using the handle highlighted in the bottom right corner on the screenshot above.
You need to find the second line of the XML where it says
subjectArea=""Workforce Management - Person Real Time""
In this example, we are going to replace the word Person with the words Worker Assignment to
reflect the new subject area we want to use. The updated XML is shown below.

Once done, you need to choose Apply XML. The SQL issued box lower down the page will update
with the new query. Now, if you choose the Criteria tab again, you will see from the list on the left
hand side that the query is pointing at Worker Assignments. And if you run the query and look at the
Results tab, you will see the same data but from the new subject area.

You can then add other items into the report from the new subject area, for example, business unit.

Notes
1. In many cases, you can achieve the same result by creating a cross subject area report
2. If you want to point a report at a new subject area but have items that are not in the new
subject area, you must remove those items from the original report before changing the
subject area name. Otherwise you will receive errors when you try and apply the XML

How can I calculate an employees age from their date of birth?


OTBI includes a persons date of birth but does not include their age as a standard field. This can be
calculated in a report, but the calculation is more tricky to build that it might first appear.
Many people will try and use the function TimeStampDiff which allows you to calculate the number
of periods days, months, quarters, years etc - between two dates
TIMESTAMPDIFF(SQL_TSI_YEAR,"Worker"."Employee Date Of Birth", CURRENT_DATE )
On the face of it, this function would seem ideal for calculating the number of years between
someones date of birth and the current date. However, when passing this function back to the
database to process, OBIEE actually places a ROUND function around it. This means that incorrect
results will be returned - rather than passing back 35.5 years which you would then truncate to give
you an age of 35, it will round this up to 36. So everyone will be shown as 1 year older than they are
as soon as they are within 6 months of their next birthday. This is shown in the screenshot below
which is using the calculation above and has been run on 11th May 2014. The records highlighted in
yellow are incorrect each employee is within 6 months of their next birthday and so are being
shown as 1 year too old. The green lines are correct because they have had their birthday this year
already or are more than 6 months from their birthday.

In non SaaS implementations, this is easily fixed by either updating the default behaviour to remove
the ROUND or by using the EXECUTE function which passes an exact database function across for
processing. Neither of these solutions are available in SaaS, so we need to find another answer.
The calculation below returns a persons correct age and can be used in reports.
YEAR(CURRENT_DATE) - YEAR("Worker"."Employee Date Of Birth") - (CASE WHEN
(CAST(MONTH(CURRENT_DATE) AS INT)*100) + CAST(DAY(CURRENT_DATE) AS INT) <
(CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) + CAST(DAY("Worker"."Employee
Date Of Birth") AS INT) THEN 1 ELSE 0 END)
Again this may look a little daunting, but lets break it down and explain what is happening when we
run this on 11th May 2014 for a person born on 22nd May 1979 (the first record in the table above).
The calculation below is colour coded, with each part explained below.
YEAR(CURRENT_DATE) - YEAR("Worker"."Employee Date Of Birth") - (CASE WHEN
(CAST(MONTH(CURRENT_DATE) AS INT)*100) + CAST(DAY(CURRENT_DATE) AS INT) <
(CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) + CAST(DAY("Worker"."Employee
Date Of Birth") AS INT) THEN 1 ELSE 0 END)

YEAR(CURRENT_DATE) returns 2014, the current year


YEAR("Worker"."Employee Date Of Birth") returns 1979, the year the person was born
CAST(MONTH(CURRENT_DATE) AS INT)*100 returns 05*100 for the current month number
CAST(DAY(CURRENT_DATE) AS INT returns 11, the current day number which is then added
to the above value to give 511
CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) +
CAST(DAY("Worker"."Employee Date Of Birth") AS INT returns 500 + 22 using the same logic
but this time on the persons date of birth
The case statement then compares these two answers (511 and 522) and subtracts 1 from
the total answer if the first number is smaller than the second one indicating that the
person hasnt yet had their birthday in the current year.

So overall we end up with


2014 - 1979 (CASE WHEN 511 < 522 THEN 1 ELSE 0 END)
35 1 = 34, the correct age!

Notes
1. This same approach can be used whenever you want to know the number of complete years
between a date in the past and the current date, or in fact between any two dates
2. TIMESTAMPADD is another similar function. It is available to add or subtract periods from a
date use a positive number to add and a negative number to subtract the periods. This
function works fine in SaaS and can be used with any of the date fields in OTBI, for example
to calculate a date 12 months ago. To specify different types of period, use a different
parameter to SQL_TSI_YEAR, for example SQL_TSI_MONTH, SQL_TSI_DAY etc. See later in
this document for an example of using TIMESTAMPADD.
It is only TIMESTAMPDIFF where rounding can cause issues because the system is calculating
a difference between two dates.

How can I hide fields from the default layout but still have them
available to users on the right mouse click?
The report we have been building now looks like this ...

... but not everyone is interested in all the columns. Therefore, Id like to hide Person ID & Ethnicity
but keep them available to be viewed if required. This functionality is called excluding columns and
can be a very powerful way of providing fewer reports but with lots of flexibility for different users
to view extra columns of data without the need for them to edit the report.
To exclude columns, right mouse click on the Person ID column heading and choose Exclude column
from the menu as shown below (if Exclude column doesnt appear, make sure you are clicking on the
column heading and not on the values within that column).

Repeat for Ethnicity. Now when you view the report, the 2 columns are hidden ...

... but can be viewed by a right mouse click on the report and choosing Include column.

How can I change the standard aggregation on a numeric field, for


example to show the average age of a group of employees?
There is often a need to show metrics at an aggregated level, but not always as a sum. It is possible
within OTBI to override the default aggregation. One typical example is the requirement to show
average age of employees, for example by business unit. Using the same example report as above,
we now have the age of each employee and their business unit. The requirement is to show the
average age by business unit, as shown in the pivot table below.

When you first create this layout, the age field does not show any data. That is because you havent
told OTBI how to aggregate that field when displayed it at a level above employee. You can either
update this setting in the pivot table itself (in which case it will only apply to that view in the report)
or you can set it on the Criteria tab and it will impact all the views in this report.
In the Criteria tab, choose Edit Formula for the Correct Age column.

Set the Aggregation Rule as shown below using the drop down list of options.

In this case use Average, but you could use the other options instead for different scenarios (such as
the highest age Max, the lowest age Min, a count of employees Count Distinct etc). You can
also use this approach to change the aggregation on one of the pre-delivered metrics if you need a
different calculation to be applied to that metric.
After clicking OK and returning to the results tab, the aggregation is now displayed in the pivot table,
which can also have charts added to its display if required.

How can I limit my report to only bring back records for say the last 12
months?
There any many scenarios where you might wish to limit the records you return to a certain time
period, such as the last week, month or year. In this section, we are going to use an example around
workforce events. The requirements is to see all events that have happened in the last 12 months,
with no hard coding of any dates in the report, so that it naturally moves forward with time.
First, create a report first which returns, by report date, all events in the system using the
Workforce Management Worker Assignment Events Real Time subject area.

To update the report to always return a fixed rolling period of time ie always 12 months back from
today, add a report filter on the Date field as shown below.

Define the filter as follows:


- Operator is greater than (or might be greater than or equal to depending on your use case)
- To get the SQL Expression option, click Add More Options and choose SQL
- In the Expression, put the code below which uses the TimestampAdd function and will
subtract one year from todays date (making the report move with time)
TIMESTAMPADD(SQL_TSI_YEAR, -1, CURRENT_DATE)

Click OK and the report will now only return events in the last 12 months in this case, the report is
run on May 11th 2014, so nothing earlier than May 12th 2013.

If the requirement is to have a default of 12 months but to allow the user to override this on each
run of the report, then rather than using filters, the best approach is to use Report Prompts. Report
Prompts are like filters but the user can select a new value at run time.
On the same report, delete the filter we have just created. Choose the Prompts tab and add a new
prompt based on the Date field and define it as shown below the code is on the right hand side as
well to make it easier to copy. This will define a from and to date as a prompt on the report. The
values here will default to today and to the date 364 days ago. You can adjust this to be exactly a
year earlier depending on your requirements. Or you can use other periods to define a prompt for
the last month or week or quarter.

select
TIMESTAMPADD(SQL_TSI_DAY, 364, CURRENT_DATE) from Time

select CURRENT_DATE from Time

Note the Default Selection of SQL


Results and the use of the is
between operator.
Also use a meaningful label to guide
the user such as Time Period
(default is last 12 months)

Click OK and then save and close the report.


When a user opens the report they will now be prompted to enter their date range or to accept the
defaults and the report will automatically run for the last 12 months.

Appendix XML for Example Reports


1. Covering questions 1 to 5. This example also includes age bands as a way of grouping records
into buckets. Choose Edit Formula to see how the bins have been defined.
2. Covering question 6.
To use, simply cut and paste the XML below into the Advanced tab of a new report to replace any
code that is in there.
Report 1 XML
<saw:report xmlns:saw="com.siebel.analytics.web/report/v1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlVersion="201201160"
xmlns:sawx="com.siebel.analytics.web/expression/v1.1">
<saw:criteria xsi:type="saw:simpleCriteria" subjectArea="&quot;Workforce Management - Worker Assignment Real
Time&quot;" withinHierarchy="true">
<saw:columns>
<saw:column xsi:type="saw:regularColumn" columnID="c0532556d7af2a458">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Person ID"</sawx:expr></saw:columnFormula>
<saw:displayFormat>
<saw:formatSpec suppress="repeat" wrapText="true"/></saw:displayFormat>
<saw:columnHeading>
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:columnHeading></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c64f9bb7dc5013a7e">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Employee Hire
Date"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c9494aaae940691b2">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Employee Date Of Birth"</sawx:expr></saw:columnFormula>
<saw:displayFormat>
<saw:formatSpec suppress="suppress" wrapText="true">
<saw:dataFormat xsi:type="saw:custom" customFormat="dd/MM/yyyy"/></saw:formatSpec></saw:displayFormat>
<saw:columnHeading>
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:columnHeading></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="cec4ee4fedf1b5d01">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Assignment
Status"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c13d5ec301c934a22">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Assignment Status
Type"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c7121186cd40c230f" aggRule="avg">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">YEAR(CURRENT_DATE) - YEAR("Worker"."Employee Date Of Birth") - (CASE
WHEN (CAST(MONTH(CURRENT_DATE) AS INT)*100) + CAST(DAY(CURRENT_DATE) AS INT) &lt;
(CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) + CAST(DAY("Worker"."Employee Date Of Birth") AS INT)
THEN 1 ELSE 0 END)</sawx:expr></saw:columnFormula>
<saw:tableHeading>
<saw:caption fmt="text">
<saw:text>Worker</saw:text></saw:caption></saw:tableHeading>
<saw:columnHeading>
<saw:caption fmt="text">
<saw:text>Age</saw:text></saw:caption></saw:columnHeading></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c396c835326efbff4">
<saw:columnFormula>

<sawx:expr xsi:type="sawx:binned">
<sawx:baseFormula>
<sawx:expr xsi:type="sawx:sqlExpression">YEAR(CURRENT_DATE) - YEAR("Worker"."Employee Date Of Birth") (CASE WHEN (CAST(MONTH(CURRENT_DATE) AS INT)*100) + CAST(DAY(CURRENT_DATE) AS INT) &lt;
(CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) + CAST(DAY("Worker"."Employee Date Of Birth") AS INT)
THEN 1 ELSE 0 END)</sawx:expr></sawx:baseFormula>
<sawx:rules>
<sawx:when>
<sawx:condition>
<sawx:expr xsi:type="sawx:comparison" op="lessOrEqual">
<sawx:expr xsi:type="sawx:sqlExpression">YEAR(CURRENT_DATE) - YEAR("Worker"."Employee Date Of Birth")
- (CASE WHEN (CAST(MONTH(CURRENT_DATE) AS INT)*100) + CAST(DAY(CURRENT_DATE) AS INT) &lt;
(CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) + CAST(DAY("Worker"."Employee Date Of Birth") AS INT)
THEN 1 ELSE 0 END)</sawx:expr>
<sawx:expr xsi:type="xsd:decimal">20</sawx:expr></sawx:expr></sawx:condition>
<sawx:value>
<sawx:expr xsi:type="xsd:string">16 - 20 years</sawx:expr></sawx:value></sawx:when>
<sawx:when>
<sawx:condition>
<sawx:expr xsi:type="sawx:comparison" op="between">
<sawx:expr xsi:type="sawx:sqlExpression">YEAR(CURRENT_DATE) - YEAR("Worker"."Employee Date Of Birth")
- (CASE WHEN (CAST(MONTH(CURRENT_DATE) AS INT)*100) + CAST(DAY(CURRENT_DATE) AS INT) &lt;
(CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) + CAST(DAY("Worker"."Employee Date Of Birth") AS INT)
THEN 1 ELSE 0 END)</sawx:expr>
<sawx:expr xsi:type="xsd:decimal">21</sawx:expr>
<sawx:expr xsi:type="xsd:decimal">30</sawx:expr></sawx:expr></sawx:condition>
<sawx:value>
<sawx:expr xsi:type="xsd:string">21 to 30 years</sawx:expr></sawx:value></sawx:when>
<sawx:when>
<sawx:condition>
<sawx:expr xsi:type="sawx:comparison" op="between">
<sawx:expr xsi:type="sawx:sqlExpression">YEAR(CURRENT_DATE) - YEAR("Worker"."Employee Date Of Birth")
- (CASE WHEN (CAST(MONTH(CURRENT_DATE) AS INT)*100) + CAST(DAY(CURRENT_DATE) AS INT) &lt;
(CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) + CAST(DAY("Worker"."Employee Date Of Birth") AS INT)
THEN 1 ELSE 0 END)</sawx:expr>
<sawx:expr xsi:type="xsd:decimal">31</sawx:expr>
<sawx:expr xsi:type="xsd:decimal">40</sawx:expr></sawx:expr></sawx:condition>
<sawx:value>
<sawx:expr xsi:type="xsd:string">31 to 40 years</sawx:expr></sawx:value></sawx:when>
<sawx:when>
<sawx:condition>
<sawx:expr xsi:type="sawx:comparison" op="between">
<sawx:expr xsi:type="sawx:sqlExpression">YEAR(CURRENT_DATE) - YEAR("Worker"."Employee Date Of Birth")
- (CASE WHEN (CAST(MONTH(CURRENT_DATE) AS INT)*100) + CAST(DAY(CURRENT_DATE) AS INT) &lt;
(CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) + CAST(DAY("Worker"."Employee Date Of Birth") AS INT)
THEN 1 ELSE 0 END)</sawx:expr>
<sawx:expr xsi:type="xsd:decimal">41</sawx:expr>
<sawx:expr xsi:type="xsd:decimal">50</sawx:expr></sawx:expr></sawx:condition>
<sawx:value>
<sawx:expr xsi:type="xsd:string">41 to 50 years</sawx:expr></sawx:value></sawx:when>
<sawx:when>
<sawx:condition>
<sawx:expr xsi:type="sawx:comparison" op="greaterOrEqual">
<sawx:expr xsi:type="sawx:sqlExpression">YEAR(CURRENT_DATE) - YEAR("Worker"."Employee Date Of Birth")
- (CASE WHEN (CAST(MONTH(CURRENT_DATE) AS INT)*100) + CAST(DAY(CURRENT_DATE) AS INT) &lt;
(CAST(MONTH("Worker"."Employee Date Of Birth") AS INT)*100) + CAST(DAY("Worker"."Employee Date Of Birth") AS INT)
THEN 1 ELSE 0 END)</sawx:expr>
<sawx:expr xsi:type="xsd:decimal">51</sawx:expr></sawx:expr></sawx:condition>
<sawx:value>
<sawx:expr xsi:type="xsd:string">51 years and over</sawx:expr></sawx:value></sawx:when>
<sawx:otherwise>
<sawx:value>
<sawx:expr
xsi:type="xsd:string">Unspecified</sawx:expr></sawx:value></sawx:otherwise></sawx:rules></sawx:expr></saw:columnForm
ula>

<saw:tableHeading>
<saw:caption fmt="text">
<saw:text>Worker</saw:text></saw:caption></saw:tableHeading>
<saw:columnHeading>
<saw:caption fmt="text">
<saw:text>Age Band</saw:text></saw:caption></saw:columnHeading></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c24d3f5b4e137054a">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Employee
Name"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c0dd66e4aff3402cd">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Person
Number"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c7bd5a99fa105fb31">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker Assignment"."Head
Count"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="cd14422845c157fef">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Business Unit"."Business Unit
Name"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c26c8e3d341f3dcf2">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Employee
Ethnicity"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="cdd511654498c266e">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Employee
Gender"</sawx:expr></saw:columnFormula></saw:column></saw:columns>
<saw:filter>
<sawx:expr xsi:type="sawx:logical" op="and">
<sawx:expr xsi:type="sawx:comparison" op="equal">
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Person Type"</sawx:expr>
<sawx:expr xsi:type="xsd:string">Employee</sawx:expr></sawx:expr>
<sawx:expr xsi:type="sawx:comparison" op="equal">
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Assignment Status Type"</sawx:expr>
<sawx:expr xsi:type="xsd:string">Active</sawx:expr></sawx:expr></sawx:expr></saw:filter></saw:criteria>
<saw:views currentView="0">
<saw:view xsi:type="saw:compoundView" name="compoundView!1">
<saw:cvTable>
<saw:cvRow>
<saw:cvCell viewName="titleView!1" colSpan="2">
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:cvCell></saw:cvRow>
<saw:cvRow>
<saw:cvCell viewName="headlineView!1">
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:cvCell>
<saw:cvCell viewName="headlineView!2">
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:cvCell></saw:cvRow>
<saw:cvRow>
<saw:cvCell viewName="pivotTableView!1" colSpan="2">
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:cvCell></saw:cvRow>
<saw:cvRow>
<saw:cvCell viewName="tableView!1" colSpan="2">
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:cvCell></saw:cvRow></saw:cvTable></saw:view>
<saw:view xsi:type="saw:titleView" name="titleView!1"/>
<saw:view xsi:type="saw:tableView" name="tableView!1">
<saw:edges>
<saw:edge axis="page" showColumnHeader="true">
<saw:edgeLayers>

<saw:edgeLayer type="column" columnID="cd14422845c157fef"/></saw:edgeLayers></saw:edge>


<saw:edge axis="section"/>
<saw:edge axis="row" showColumnHeader="true">
<saw:displayGrandTotals>
<saw:displayGrandTotal id="gt_row" grandTotalPosition="after">
<saw:memberFormat>
<saw:displayFormat>
<saw:formatSpec wrapText="true"/></saw:displayFormat>
<saw:caption>
<saw:text>Summary</saw:text></saw:caption></saw:memberFormat></saw:displayGrandTotal></saw:displayGrandTotals>
<saw:edgeLayers>
<saw:edgeLayer type="column" columnID="c0dd66e4aff3402cd"/>
<saw:edgeLayer type="column" columnID="c24d3f5b4e137054a"/>
<saw:edgeLayer type="column" columnID="c9494aaae940691b2"/>
<saw:edgeLayer type="column" columnID="cdd511654498c266e"/>
<saw:edgeLayer type="column" columnID="c26c8e3d341f3dcf2"/>
<saw:edgeLayer type="column" columnID="c7121186cd40c230f"/>
<saw:edgeLayer type="column" columnID="c396c835326efbff4"/>
<saw:edgeLayer type="column" columnID="c7bd5a99fa105fb31"/></saw:edgeLayers></saw:edge>
<saw:edge axis="column" showColumnHeader="rollover"/></saw:edges>
<saw:pageEdgeState>
<saw:QDR>
<saw:staticMemberGroup>
<saw:groupType>
<sawx:columnRefExpr columnID="cd14422845c157fef"/></saw:groupType>
<saw:members xsi:type="saw:stringMembers">
<saw:value>AU Business Unit</saw:value></saw:members></saw:staticMemberGroup></saw:QDR>
<saw:selectionGroups>
<saw:selectionGroup columnID="cd14422845c157fef"
groupID="0"/></saw:selectionGroups></saw:pageEdgeState></saw:view>
<saw:view xsi:type="saw:headlineView" name="headlineView!1">
<saw:viewCaption>
<saw:caption>
<saw:text>Person Count</saw:text></saw:caption></saw:viewCaption>
<saw:edges>
<saw:edge axis="page" showColumnHeader="true"/>
<saw:edge axis="section"/>
<saw:edge axis="row" showColumnHeader="true"/>
<saw:edge axis="column" showColumnHeader="rollover">
<saw:edgeLayers>
<saw:edgeLayer type="measure"/></saw:edgeLayers></saw:edge></saw:edges>
<saw:measuresList>
<saw:measure columnID="c7bd5a99fa105fb31">
<saw:dataBodyFormat>
<saw:displayFormat>
<saw:formatSpec
hAlign="center"/></saw:displayFormat></saw:dataBodyFormat></saw:measure></saw:measuresList>
<saw:headlineLabelOne useMeasurePropertyAsLabel="true"/>
<saw:headlineLabelTwo useMeasurePropertyAsLabel="false">
<saw:caption>
<saw:text>Number of People</saw:text></saw:caption></saw:headlineLabelTwo>
<saw:headlineProperties vAlign="top" style="style2"/></saw:view>
<saw:view xsi:type="saw:headlineView" name="headlineView!2">
<saw:viewCaption>
<saw:caption>
<saw:text>Average Age</saw:text></saw:caption></saw:viewCaption>
<saw:edges>
<saw:edge axis="page" showColumnHeader="true"/>
<saw:edge axis="section"/>
<saw:edge axis="row" showColumnHeader="true"/>
<saw:edge axis="column" showColumnHeader="rollover">
<saw:edgeLayers>
<saw:edgeLayer type="measure"/></saw:edgeLayers></saw:edge></saw:edges>
<saw:measuresList>

<saw:measure columnID="c7121186cd40c230f">
<saw:dataBodyFormat>
<saw:displayFormat>
<saw:formatSpec
hAlign="center"/></saw:displayFormat></saw:dataBodyFormat></saw:measure></saw:measuresList>
<saw:headlineProperties vAlign="top" style="style2"/>
<saw:headlineLabelOne useMeasurePropertyAsLabel="true"/>
<saw:headlineLabelTwo useMeasurePropertyAsLabel="false">
<saw:caption>
<saw:text>Average Age across all people</saw:text></saw:caption></saw:headlineLabelTwo></saw:view>
<saw:view xsi:type="saw:dvtchart" name="dvtchart!1">
<saw:display type="bar" subtype="basic" renderFormat="default" mode="online">
<saw:style barStyle="default" lineStyle="default" scatterStyle="default" fillStyle="default" bubblePercentSize="100"
effect="2d"/></saw:display>
<saw:canvasFormat height="330" width="640">
<saw:dataLabels display="default" label="default" position="below" transparentBackground="true"
valueAs="default"/></saw:canvasFormat>
<saw:selections>
<saw:categories>
<saw:category>
<saw:columnRef columnID="c13d5ec301c934a22"/></saw:category></saw:categories>
<saw:measures showMeasureLabelsOnCategory="false">
<saw:column measureType="y">
<saw:columnRef columnID="c7bd5a99fa105fb31"/></saw:column></saw:measures>
<saw:seriesGenerators>
<saw:seriesGenerator>
<saw:columnRef columnID="cec4ee4fedf1b5d01"/></saw:seriesGenerator>
<saw:measureLabels/></saw:seriesGenerators>
<saw:page>
<saw:column>
<saw:columnRef columnID="c24d3f5b4e137054a"/></saw:column>
<saw:column>
<saw:columnRef columnID="cd14422845c157fef"/></saw:column>
<saw:column>
<saw:columnRef columnID="c0532556d7af2a458"/></saw:column>
<saw:column>
<saw:columnRef columnID="c64f9bb7dc5013a7e"/></saw:column>
<saw:column>
<saw:columnRef columnID="c9494aaae940691b2"/></saw:column>
<saw:column>
<saw:columnRef columnID="c7121186cd40c230f"/></saw:column>
<saw:column>
<saw:columnRef columnID="c396c835326efbff4"/></saw:column>
<saw:column>
<saw:columnRef columnID="c0dd66e4aff3402cd"/></saw:column></saw:page></saw:selections>
<saw:legendFormat position="default" transparentFill="true"/></saw:view>
<saw:view xsi:type="saw:pivotTableView" name="pivotTableView!1" scrollingEnabled="true">
<saw:edges>
<saw:edge axis="page" showColumnHeader="true"/>
<saw:edge axis="section"/>
<saw:edge axis="row" showColumnHeader="true">
<saw:displayGrandTotals>
<saw:displayGrandTotal id="gt_row" grandTotalPosition="after"/></saw:displayGrandTotals>
<saw:edgeLayers>
<saw:edgeLayer type="column" columnID="cd14422845c157fef"/></saw:edgeLayers></saw:edge>
<saw:edge axis="column" showColumnHeader="rollover">
<saw:edgeLayers>
<saw:edgeLayer type="measure"/></saw:edgeLayers></saw:edge></saw:edges>
<saw:measuresList>
<saw:measure columnID="c7bd5a99fa105fb31"/>
<saw:measure columnID="c7121186cd40c230f"/></saw:measuresList>
<saw:nestedViews>
<saw:nestedView position="right">
<saw:view xsi:type="saw:dvtchart" name="pivotTableView!1::GridChart">
<saw:display type="lineBar" subtype="basic" renderFormat="default" mode="online">

<saw:style barStyle="default" lineStyle="default" scatterStyle="default" fillStyle="default" bubblePercentSize="100"


effect="2d"/></saw:display>
<saw:canvasFormat height="330" width="640">
<saw:dataLabels display="default" label="default" position="below" transparentBackground="true"
valueAs="default"/>
<saw:title mode="custom">
<saw:caption>
<saw:text>Avg Age and Headcount by Business
Unit</saw:text></saw:caption></saw:title></saw:canvasFormat>
<saw:legendFormat position="default" transparentFill="true"/>
<saw:axesFormats>
<saw:axisFormat axis="Y1" displayScaleLabels="true">
<saw:labels rotate="0" rotateLabels="false" stagger="false" skip="false" abbreviation="default">
<saw:dataFormat xsi:type="saw:number" commas="true" negativeType="minus" minDigits="0"
maxDigits="0"/></saw:labels>
<saw:textFormat/></saw:axisFormat>
<saw:axisFormat axis="Y2" displayScaleLabels="true">
<saw:labels rotate="0" rotateLabels="false" stagger="false" skip="false" abbreviation="default">
<saw:dataFormat xsi:type="saw:number" commas="true" negativeType="minus" minDigits="0"
maxDigits="0"/></saw:labels>
<saw:textFormat/></saw:axisFormat></saw:axesFormats>
<saw:selections>
<saw:categories>
<saw:category>
<saw:columnRef columnID="cd14422845c157fef"/></saw:category></saw:categories>
<saw:measures showMeasureLabelsOnCategory="false">
<saw:column measureType="y1" riserType="bar">
<saw:columnRef columnID="c7bd5a99fa105fb31"/></saw:column>
<saw:column measureType="y2" riserType="line">
<saw:columnRef columnID="c7121186cd40c230f"/></saw:column></saw:measures>
<saw:seriesGenerators>
<saw:measureLabels/></saw:seriesGenerators></saw:selections></saw:view></saw:nestedView></saw:nestedViews></saw:view></saw:
views></saw:report>

Report 2 XML
<saw:report xmlns:saw="com.siebel.analytics.web/report/v1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlVersion="201201160"
xmlns:sawx="com.siebel.analytics.web/expression/v1.1">
<saw:criteria xsi:type="saw:simpleCriteria" subjectArea="&quot;Workforce Management - Worker Assignment Event Real
Time&quot;" withinHierarchy="true">
<saw:columns>
<saw:column xsi:type="saw:regularColumn" columnID="c13b76bdbcc72b1a3">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Person
Number"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="cb5b16bf7bdbadd76">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Worker"."Employee
Name"</sawx:expr></saw:columnFormula></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c88aa8d7fed718bf1">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"Time"."Date"</sawx:expr></saw:columnFormula>
<saw:displayFormat>
<saw:formatSpec suppress="repeat" wrapText="true" hAlign="right">
<saw:dataFormat xsi:type="saw:custom" customFormat="d-MMM-yyyy"/></saw:formatSpec></saw:displayFormat>
<saw:columnHeading>
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:columnHeading></saw:column>
<saw:column xsi:type="saw:regularColumn" columnID="c11eeb206a8c151e1">
<saw:columnFormula>
<sawx:expr xsi:type="sawx:sqlExpression">"HR Action"."Action
Name"</sawx:expr></saw:columnFormula></saw:column></saw:columns>

<saw:columnOrder>
<saw:columnOrderRef columnID="cb5b16bf7bdbadd76" direction="ascending"/>
<saw:columnOrderRef columnID="c88aa8d7fed718bf1" direction="ascending"/></saw:columnOrder></saw:criteria>
<saw:views currentView="0">
<saw:view xsi:type="saw:compoundView" name="compoundView!1">
<saw:cvTable>
<saw:cvRow>
<saw:cvCell viewName="titleView!1">
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:cvCell></saw:cvRow>
<saw:cvRow>
<saw:cvCell viewName="tableView!1">
<saw:displayFormat>
<saw:formatSpec/></saw:displayFormat></saw:cvCell></saw:cvRow>
<saw:cvRow>
<saw:cvCell viewName="filtersView!1"/></saw:cvRow></saw:cvTable></saw:view>
<saw:view xsi:type="saw:titleView" name="titleView!1"/>
<saw:view xsi:type="saw:tableView" name="tableView!1">
<saw:edges>
<saw:edge axis="page" showColumnHeader="true"/>
<saw:edge axis="section"/>
<saw:edge axis="row" showColumnHeader="true">
<saw:columnOrder>
<saw:columnOrderRef columnID="c88aa8d7fed718bf1" direction="ascending"/></saw:columnOrder>
<saw:edgeLayers>
<saw:edgeLayer type="column" columnID="c13b76bdbcc72b1a3"/>
<saw:edgeLayer type="column" columnID="cb5b16bf7bdbadd76"/>
<saw:edgeLayer type="column" columnID="c11eeb206a8c151e1"/>
<saw:edgeLayer type="column" columnID="c88aa8d7fed718bf1"/></saw:edgeLayers></saw:edge>
<saw:edge axis="column" showColumnHeader="rollover"/></saw:edges></saw:view>
<saw:view xsi:type="saw:filtersView" name="filtersView!1"/></saw:views>
<saw:prompts scope="report" subjectArea="&quot;Workforce Management - Worker Assignment Event Real Time&quot;">
<saw:promptStep>
<saw:individualPrompts>
<saw:prompt xsi:type="saw:columnFilterPrompt" columnID="c5" subjectArea="&quot;Workforce Management - Worker
Assignment Event Real Time&quot;" required="false" noAutoPopulateLabel="true">
<saw:formula>
<sawx:expr xsi:type="sawx:sqlExpression">"Time"."Date"</sawx:expr></saw:formula>
<saw:promptOperator op="between"/>
<saw:promptUIControl xsi:type="saw:calendar">
<saw:customWidth width="120" using="custompixels"/></saw:promptUIControl>
<saw:label>
<saw:caption>
<saw:text>Time Period (default is last 12 months)</saw:text></saw:caption></saw:label>
<saw:promptDefaultValues type="sql" usingCodeValue="false">
<saw:promptDefaultValue>select TIMESTAMPADD(SQL_TSI_DAY, -364, CURRENT_DATE) from
Time</saw:promptDefaultValue>
<saw:promptDefaultValue>select CURRENT_DATE from
Time</saw:promptDefaultValue></saw:promptDefaultValues>
<saw:constrainPrompt type="none"/>
<saw:setPromptVariables>
<saw:setPromptVariable location="value" type="none" variableFormula=""/></saw:setPromptVariables>
<saw:promptSource xsi:type="saw:allChoices"/></saw:prompt></saw:individualPrompts>
<saw:customWidth width="120" using="custompixels"/></saw:promptStep></saw:prompts></saw:report>

You might also like