Digitalizing Intelligence in Finance Reporting

Background

The Digital Platform is a web application that hosts finance reports, training, access management, and incident management. When accessing reports, the Digital Platform provides users a personalized experience. The increasing number of users interacting with reports online creates a huge data set that gives us millions of potential insights into user experience, personalization, and finance report improvements. AI technologies such as Market basket analysis and collaboration filtering methods are deployed to learn users’ behaviors and recommend the relevant finance reports in real-time. Based on the user’s persona, different personalized announcements, training, and finance reports are prioritized.

The Digital Platform is an innovative solution for finance reports including a creative way to source the data, customizable machine learning algorithm to improve user experience. To source the data from different technologies servers, Google Analytics is deployed to track every users’ behavior. Machine learning Recommendation Engine is implemented to study the user’s behavior. Users are split into Cold and Hot User based on the view history.

link: https://yogagii.github.io/recommend-system.html

Business Value

There are more than 600 finance users actively utilize the platform service every month. Because of the good customizable personal user experience, the utilization of the platform is to keep increasing. Every user uses 8.2 times of the Digital Platform every month. User’s experiences are improved and users spend more than 700 hours per month on the Digital Platform. The digital platform is providing users the customized personalized experience also keeping improve the financial reporting based on feedback.

f1nance

Dashboard

f1nance f1nance

Tableau Report

f1nance c4model c4model c4model

Tableau REST API:

Description API Params
Get Users in Group GET /api/api-version/sites/site-id/groups/group-id/users pageSize
Get Users on Site GET /api/api-version/sites/site-id/users pageSize, filter
Query Views for Site GET /api/api-version/sites/site-id/views includeUsageStatistics, fields, pageNumber
Query Views for Workbook GET /api/api-version/sites/site-id/workbooks/workbook-id/views
Query Workbook GET /api/api-version/sites/site-id/workbooks/workbook-id
Query Workbook Permissions GET /api/api-version/sites/site-id/workbooks/workbook-id/permissions
Query Workbooks for User GET /api/api-version/sites/site-id/users/user-id/workbooks pageSize, pageNumber

link: https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref.htm

Viz Option:

Key Value
hideTabs true
‘:toolbar’ ‘top’
‘:showShareOptions’ false
‘:render’ false
width ‘100%’
const Workbook = () => {
  option = {
    hideTabs: true,
    ':toolbar': 'top',
    ':showShareOptions': false,
    ':linktarget': '_self',
    ':render': false,
    width: '100%',
  };

  useEffect(() => {
    viz && viz.dispose();
    const vizContainer = document.getElementById('vizContainer');
    viz = new window.tableau.Viz(iframeContent, url, option);
  }, [url]);

  return (
    <div className={styles.vizContainerWrapper}>
      <div
        id='vizContainer'
        ref={node => {
          iframeContent = node;
        }}
      />
    </div>
  );
};

export default Workbook;

Viz API:

Class Properties Type Description
Viz getWorkbook() Workbook One Workbook is supported per visualization.
Workbook getActiveSheet() Sheet Gets the currently active sheet (the active tab)
SheetInfo getName() string Gets the name of the sheet.
SheetInfo getUrl() string Gets the URL for this sheet.
SheetInfo getSheetType() SheetType Gets the type of the sheet. SheetType is an enum with the following values: WORKSHEET, DASHBOARD and STORY.
Dashboard getWorksheets() Worksheet[] Gets the collection of worksheets contained in the dashboard.
Worksheet getFiltersAsync() Promise Fetches the collection of filters used on the sheet.
Workbook getParametersAsync() Promise Fetches the parameters for this workbook.
Workbook getCustomViewsAsync() Promise Gets the collection of CustomView objects associated with the workbook.
Filter getFieldName() string Gets the name of the field being filtered.
CategoricalFilter getAppliedValues() DataValue[] Gets the collection of values that are currently set on the filter.
Parameter getCurrentValue() DataValue The current value of the parameter.

Viz Event Classes:

Name Event Class Passed in the Callback Description
CUSTOM_VIEW_LOAD CustomViewEvent Raised when a custom view has finished loading.
PARAMETER_VALUE_CHANGE ParameterEvent Raised when any parameter has changed state.
FILTER_CHANGE FilterEvent Raised when any filter has changed state.
TAB_SWITCH TabSwitchEvent Raised after the tab switched.

link: https://help.tableau.com/v2018.2/api/js_api/en-us/JavaScriptAPI/js_api_ref.htm

split report

f1nance f1nance

interactive training

f1nance

share customized view

f1nance

SAP Report

f1nance

FIlter for report:

Description Store Function Action Parameter
get report filter list getReportStore getInputControls / viewContext
get report filter detail getReportInputControlStore getInputControl / viewContext, inputControlId
get report filter options getReportInputControlStore getLov / viewContext, inputControlId
get report filter value getReportInputControlStore getSelection / viewContext, inputControlId
set report filter value / / USER_SET_INPUT_CONTROL_SELECTION viewContext, inputControlId, selection

FIlter for document:

Description Store Function Action Parameter
get document filter list getDocumentStore getInputControls / viewContext
get document filter detail getDocumentInputControlStore getInputControl / viewContext, inputControlId
get document filter options getDocumentInputControlStore getLov / viewContext, inputControlId
get document filter value getDocumentInputControlStore getSelection / viewContext, inputControlId
set document filter value / / USER_SET_INPUT_CONTROL_SELECTION viewContext, inputControlId, selection

SAP Prompt Function:

Description Store Function Action Parameter
activate prompt options / / GET_PARAMETER_LOV viewContext, parameterId, (prepare, data)
get prompt value getDocumentStore getParameters / viewContext
get prompt options getParameterStore getLov / viewContext, parameterId
set prompt value / / USER_VALIDATE_PROMPTS viewContext, inputControlId, selection

SAP Driller Function:

Description Store Function Action Parameter
get driller current list getReportStore getDrillerElements / viewContext
get driller all list getReportStore getDrillerFilters / viewContext
get driller detail getDrillerFilterStore getDrillerFilter / viewContext, filterId

Post Message:

Description Type Value Interval
Code injection finished string ‘SAP_WEBI_INJECTED’ false
Filter data object { type: ‘filters-selection’, data: filters, docId: getWebiViewerArgs().id } true
Tab data object { type: ‘tab-selection’, data: tab, docId: getWebiViewerArgs().id } true
Prompt data object { type: ‘parameter-selection’, data: parameters, docId: getWebiViewerArgs().id } true
Click link event object { type: ‘document-url’, data: item.href, docId: getWebiViewerArgs().id } false

Code Injection:

f1nance

Design of other page

f1nance f1nance f1nance f1nance f1nance f1nance f1nance f1nance f1nance

Article
Tagcloud
DVA Java Express Architecture Azure CI/CD database ML AWS ETL nest sql AntV Next Deep Learning Flutter TypeScript Angular DevTools Microsoft egg Tableau SAP Token Regexp Unit test Nginx nodeJS sails wechat Jmeter HTML2Canvas Swift Jenkins JS event GTM Algorithm Echarts React-Admin Rest React hook Flux Redux ES6 Route Component Ref AJAX Form JSX Virtual Dom Javascript CSS design pattern