Beruflich Dokumente
Kultur Dokumente
au
Yellowfin
Release 6.0
Admin Guide
Under international copyright laws, neither the documentation nor the software may be copied, photocopied,
reproduced, translated or reduced to any electronic medium or machine-readable form, in whole or in part, without
the prior written permission of Yellowfin International Pty Ltd, except in the manner described in the software
agreement.
The information in this document is subject to change without notice. If you find any problems with this
documentation, please report them to Yellowfin in writing at support@yellowfin.com.au. Yellowfin does not warrant
that this document is error free.
Trademarks:
Yellowfin and the Yellowfin Logo are registered trademarks of Yellowfin International.
All other product and company names mentioned herein are the trademarks of their respective owners.
Version: 1.0
Published: December 2011
2. Access to source databases and views for reporting. These are defined in
Yellowfin and include a business definition layer for columns and table names.
This guide is intended for the Yellowfin Administrator, user of the admin functions.
Note: If your issue concerns the Yellowfin product and not the documentation, please
contact our Customer Support experts. For information about Customer Support visit:
www.yellowfin.com.au
To access the panel, click on the administration link on the main navigation menu.
Each source system that is accessed for reporting needs to be defined within the
application. For example if reports are to be run off the HR system and the Finance
system then each of these must be defined as a separate source system.
The actual view is stored and implemented on the source data system. However, in
Yellowfin the view is defined and made available for reporting.
For example if you wanted to report off your People table in your HR source system
you would define a Yellowfin view by selecting the People table and creating a
definition for all the columns that you wish to report off.
Every report has to have a category and subcategory defined when it is saved into
either a persons or the Public report repository. These categories serve a dual
purpose:
1. To provide users with a standard meta-data for saving and retrieving reports into
standardised reporting categories and structures.
2. To provide an additional layer of security. For instance only Finance Users could
be provided access to the Finance Category. Thus any report placed in this
category would only be available to finance users.
Access to Yellowfin is based on users setup within the system. Through the
Administration Panel administrators can create, edit, and delete users within the
application.
Using Yellowfin you can create Groups of users. These groups are used for security
access to dashboards and data.
Create new roles and change the functions that are available to those user roles.
Using Yellowfin you can create Client Organisations. These are used to manage
multiple clients within the one instance of Yellowfin.
You should now see the Authentication, Integration, Page Format, Email, System
Parameters, Region Settings tabs in the Configuration section.
This lets you close open sessions of users that are currently logged on. This is useful
if you have a user that has logged on from one IP address and then tries to logon
from another but has been denied access. Click on the Session Management link
in Administration.
View and delete reporting schedules that have been set up by users.
View all available dashboards, check their status, subscriptions, and report numbers
as well as having the option to edit and delete selected tabs.
You should now be able to see both your licence and usage details.
This section will cover off the how you should approach your security design and
once this has been completed the options that you have for implementing that design.
This section describes the security framework available to you through Yellowfin. It
has been set out so that the highest level security features are described first. For
instance Access Roles are the highest and easiest to administer form of security
whilst column level security is the most granular and by default the most complex to
administer over a large user base deployment.
Yellowfin user management is designed around the concept of user roles. This
means that multiple users share a commonly defined role for access to the
application. Individual users do not have a unique security profile.
A role is a collection of available security functions. Each user will have a role
associated with them. As the Yellowfin report writers you can either:
1. Change a persons role and thus the type of access they have to the application
or
2. Change a role definition by adding or removing functions and thereby updating all
users access to the system that share that role.
For Example
If a users role does not have access to the dashboard when they login they will be
taken to the report list page. A user with dashboard will be taken in to the dashboard
page.
When to use Use if you wish to limit access to certain functions such as
the ability to write reports
When not to use Roles cannot be used effectively to limit access to information
and data.
All reports are managed through a similar security and categorisation infrastructure
which is managed through the configuration Content Access function.
The security of your reports is managed at the category and subcategory level, not at
the individual item level. The purpose of this is to simplify the creation of reports in
the system.
For Example
Rather than having to specify who is allow to see a specific reports each time you
create a new report the security for the report is inherited from the subcategory of the
item that is created.
When not to use Category security is meaningless if users can write reports
against a specific view (i.e. it is unsecure) but cannot see a
category in which that view logically fits.
If a user can write reports and the view is not secure then
whether there is security on the category is largely irrelevant
since the user will have access to the base data through report
builder.
Benefits Category Security is excellent for locking read only users out of
specific subject domains.
The general rule for source system security is that it is used for controlling Yellowfin
report writers that wish to create views against the source. It is through this process
that a user could write reports against the source system and thereby gain
unauthorized access to data.
For Example
If the HR system is to be setup as the source system any user with View Definition
access will be able to view all tables including payroll data if the source is unsecure.
By securing the source to only HR view builders, only those authorized users will be
able to define and manage the HR related views.
When to use Use if you have multiple view administrators each of whom
require access to specific source databases only.
Use if some users have free hand SQL access to write reports
and the data in the data source is sensitive.
When not to use Do not set security on the source in an attempt to limit access
to drag and drop report writer users.
Note: If there is only 1 Yellowfin report writers of your Yellowfin deployment, and no
additional users writing SQL reports then you may consider leaving your source
systems unsecure
When a report is written or edited a user must connect to the view record to
determine what fields are available to them. At this stage security check is made to
determine if the view that is being accessed is secure, and if so, does the user have
the authority to access it.
The security on your view is the most rigorous in terms of managing access to the
data that is stored in it. Not only can you control edit access but you can also control
which users are permitted to read reports created from the specified view.
For Example
The Finance view is created. Only the finance department is permitted to write
finance view reports. In this case the view would be defined as secure and the
finance users would be added into the access list with edit access.
When to use Use if you wish to limit users that have access to the report
writing function using the specified view.
When not to use If reports in the view are to be written by a handful of users and
then published to a wider community it is preferable not to use
READ level security. Use category access for this.
In some cases a view might be created that is designed for general use but some
columns within that view are highly sensitive. For example the salary column in the
human resources view holds data that is not for general consumption.
1. Create a copy of the view and exclude the salary column from this instance.
Save the view with a new name to indicate that the view is free of sensitive data.
2. Alternatively Yellowfin provides you with the opportunity to define the columns as
restricted columns. Once this has been done an additional layer of security
needs to be defined, which allows certain users access to the restricted columns
of the selected view.
Only users with restricted access will be able to see the item when creating
reports. When an active report is run, restricted columns will be displayed to all
users who have access to the report.
When to use Use if you wish to create a general view available to many
users but restrict access to sensitive data to only a few users.
When not to use Do not use if the view in general and the columns all have the
same users that can access them.
Only users with access to the view will be able to have column
level access.
This is achieved by updating the source connection wizard to specify the available
filters such as cost centre and your users relationship to that source.
You then specify the specific columns on the view that related to that source filter
e.g. you must indicate which column in the view is the cost centre column.
When writing a report you would specify that the cost centre filter must be used as the
access filter. In this case the cost centre that the report reader owns will be passed in
as a filter on the query.
Only users with access filters defined will be able to see the data in their reports.
When to use Use if you wish to create a general view available to many
users but restrict access to data based on a users
relationship to the data e.g. cost centre managers.
When not to use Do not use if the view in general and the columns all have the
same users that can access them.
The following sections give an overview of how you should approach the security of
your Yellowfin application and the access of users to your business critical
information.
The security design methodology described in this guide consists of one planning
stage, and two implementation phases:
1. Plan the your security framework before you start using Administrator
Before starting the first phase, you should spend time understanding your
businesses security requirements and how they related to the data that will be
exposed to the business through Yellowfin.
You must analyse the security need of the target audience for each data source
and view to be implemented. The structures that you use to manage security
should be based on a clearly defined user need to access the data contained in
those tables and columns and stay consistent with the overall security strategy of
your business.
You create a security framework by understanding the needs of your users. The
components of this framework are described in more detail throughout this
chapter.
You have choices to limit users to be report consumers only, limit access to
database views, or limit the ability for users to publish reports to the Public
repository.
Create the user roles, groups, report categories, and provide access to date
sources and views to ensure your security requirements are met. Test these
requirements against a sub set of users that have various levels of access.
The table below outlines the major phases in a typical view development cycle:
Prepare Identify the target data source and become familiar with its
structure.
Evolve Update and maintain the view as the data sources and user
requirements change and grow.
Do all my users need report If no then use your reader role to only allow users
writing access? with read access to the system
Is the data in my source If yes then you will need to apply security to your
systems sensitive? data source. This will stop unauthorized access to
SQL report writers and users that have admin
access to the product.
View Security Is data in my If some report writers do not have access to data
view sensitive. Can all report in the view then view security is required. The
writers have access to the security will stop unauthorized reports being
data contained in it? written.
If publishing Public reports If some users should be restricted from the salary
from the same view will some data you should create two categories for report
contain sensitive data and saving one for general access which is unsecure
other reports not. For example and one for secure access.
an HR report containing
This assumes that people with report writing
salaries could be written from
access do not have EDIT access to the view if
the same view as an HR report
they do then they could edit a report and add the
containing Headcount
sensitive data.
As an administrator you will be able to run reports against the Yellowfin database to
determine your usage statistics and track access to specific data sources and views.
For security and audit purposes it is vital that each user be given unique access
logons to the system. If users use shared accounts your ability as an administrator to
manage security and audit reporting use will be compromised.
Each time a report is run a record is created that stores the details of that report.
SQL Statement The SQL that was generated and passed to the
database
* Derived fields
By accessing the administration view and reporting your usage statistics you will be
able to track and audit all users access to the application and your Public data.
The following is a list of all event types and their descriptions as logged to the Yellowfin event table.
EXPORT EXPORTCATEGORY Export category Yes IpPerson 1 ContentManagementId Category, SubCategory, LoginAccess,
ShortDescription
EXPORT EXPORTDASHBOARD Export dashboard Yes IpPerson 1 Tab Id GroupId (Tab Id), ShortDescription
EXPORT EXPORTSOURCE Export data source Yes IpPerson 1 SourceId SourceId, SourceName
IMPORT IMPORTCATEGORY Import category Yes IpPerson 1 ContentManagementId Category, SubCategory, LoginAccess,
ShortDescription
IMPORT IMPORTSOURCE Import data source Yes IpPerson 1 SourceId SourceId, SourceName
REGiSTRATION CREATEUSER Create user Yes IpPerson 1 New User's IpPerson IpPerson, PersonName, UserId, RoleCode
REGISTRATION DELETEUSER User deleted Yes IpPerson 1 IpPerson of deleted user User (users name), email (users userid), org
REGiSTRATION EDITUSER Edit user Yes IpPerson 1 User's IpPerson IpPerson, PersonName, UserId, RoleCode
REPORT DASHDELETEREPORT Report deleted from a Yes IpPerson 1 Tab Id reportgroup, report
dashboard
REPORT DASHEDIT Dashboard edited Yes IpPerson 1 Tab Id reportgroup, parentgroup (if parent group
exists)
REPORT DASHRUN Report is run from Yes IpPerson 1 ReportInstanceId requestortype, requestor, timetorun, numrows,
dashboard report
REPORT EMAIL Report emailed to Yes IpPerson 1 ReportId message, recipientN, subject
someone
REPORT EXPORT Report saved as Yes IpPerson 1 ReportId filename, exporttype, filesize
external format (pdf,
xls etc)
REPORT RPTCOPY Report copied Yes IpPerson 1 New ReportId originalreport, newreport
REPORT RPTRUN Report is run Yes IpPerson 1 ReportInstanceId requestortype, requestor, timetorun, numrows,
report
REPORT XMLTOOBIG VersionHistory flag is Yes IpPerson 1 Reportid ContentManagementId, MaxSize, XMLSize
on, but xml exceeds
max size
REPORTADMIN CATCREATE Report category Yes IpPerson 1 ContentManagementId Category, SubCategory, LoginAccess,
created ShortDescription
REPORTADMIN CATDELETE Report category Yes IpPerson 1 ContentManagementId Category, SubCategory, LoginAccess,
deleted ShortDescription
REPORTADMIN CATEDIT Report category Yes IpPerson 1 ContentManagementId Category, SubCategory, LoginAccess,
edited ShortDescription
REPORTADMIN DISTRIBUTEDASH Dashboard tab Yes IpPerson 1 Tab Id fullname (person sending the tab), userId
distributed to another (userid of person sending the tab), tabId,
user recipient (ipPerson)
REPORTADMIN DISTRIBUTEREPORT Report distributed to Yes IpPerson 1 ReportId fullname (person sending the report), userId
another user (userid of person sending the report), reportId,
recipient (ipPerson)
REPORTADMIN SOURCECREATE Data source created Yes IpPerson 1 SourceId name, access, url, username
REPORTADMIN SOURCEDELETE Data source deleted Yes IpPerson 1 SourceId name, access, url, username
REPORTADMIN SOURCEEDIT Data source edited Yes IpPerson 1 SourceId name, access, url, username
REPORTADMIN VIEWACTIVATE View activated Yes IpPerson 1 ViewId name, access, status
REPORTADMIN VIEWCREATE View created Yes IpPerson 1 ViewId name, access, status
REPORTADMIN VIEWDEACTIVATE View deactivated Yes IpPerson 1 ViewId name, access, status
(changed from active
to draft mode)
REPORTADMIN VIEWDELETE View deleted Yes IpPerson 1 ViewId name, access, status
REPORTADMIN VIEWEDIT View edited Yes IpPerson 1 ViewId name, access, status
USERACCESS LOGIN User logs in Yes IpPerson 1 99 email (userid), browser, AccessType,
ClientOrg?, ClientRefId?, webservices?
USERACCESS LOGOUT User logs out Yes IpPerson 1 99 PersonName, PersonId, OrgName, OrgId,
Userid
USERACCESS SESSIONTIMEOUT User's session times Yes IpPerson 1 99 userid, AccessType, Timeout
out
To enable the approval you must set the policy on every report category that you
want it applied to. This is described in detail in the Report Category chapter later in
this guide.
The approval process will determine if the user who wishes to save the report has the
publish rights for that folder. If not, Yellowfin will determine an expert from the
category and send that report for approval to the approvers inbox.
Once approved, the report will be available to all users that have appropriate security
access.
For approval workflow to take effect you must define the approval experts on the
Report Sub Category. In the Report Category edit page the Publish Access and
Approvals section allows you to determine which users can publish public reports to
the category.
1. If you select Users with Functional Access then all users with the public report
function can write to this folder
2. If you select a person or expert group then only specified users can publish
reports into that folder. If a user does not have access to publish to that folder the
report will be routed to an Expert for approval.
If you are a user with Public report publish rights you will be able to create a public
report. However, if you are not the designated expert for the category you wish to
save your report into you will see the This Report Requires Expert Approval
message.
You can save your report as normal. The report will be routed to an approver as well
as sending that person an email prompting them to take action.
To maintain the integrity of your Public report repository it is advised to limit the
number of users that can publish Public reports. These users will usually be the
experts in the subject domain. These users will be able to verify that the data
displayed in the reports is correct and therefore ensure that only validated reports are
accessed by your report consumers.
1. Functional access to the capability i.e. their role must permit them to be able to
publish Public reports.
2. They must be able to save reports as Public reports in the specified report folders
that they have access to. This means that either the report category:
b. only permits users specified as experts can publish Public reports to the
category.
Note: This option is used if you wish to restrict users from publishing Public
reports in a specified category.
To restrict Public publish access either select a person or a group as the expert.
In addition you will be able to manage the security access to the data sources as
described in the security management chapter of this document.
A data source is a record within Yellowfin that contains the connection parameters for
one or more database middleware.
The source connection information is shared by a number of views created within the
application to connect to the appropriate data source when a report is sun.
Yellowfin supports numerous data sources for you to report off. These include SQL
databases such as DB2, Oracle and SQL Server, Lotus Notes Domino, and Yellowfin
In-Memory.
Setting up new data sources allows a user to connect to an external database and
define the contents of a view or table. From the dashboard page click the
administration link on the main navigation at the top of your page.
The list page shows you all the data sources that you have access to and the views
that have been defined against those sources.
Click on the hyper link for either the source or view to access the details.
To add a new source to your connection list click the add connections link. This will
open a new source record for you to edit.
If you have a license restriction on the number of source systems you can use you
will encounter an error if you try and connect a source when all are in use. An option
for you will be to delete an existing source to continue.
To edit an existing source you can either click the source name hyperlink or tick the
check box and click the edit link. This will open the record for editing.
Note: you can only edit source record for which you have access rights.
If the source is being used, Yellowfin will indicate which views are in use. If you
continue to delete the connection the associated views will be deleted as well.
1. Type in the Business name and description for the source this is displayed to
an end user when writing reports to assist them to make the correct decision
about the source of the data they wish to report off.
2. Using the max row limit you can constrain the maximum size of a query against
the source you may choose unlimited as depicted.
3. Allowing the database to be Writable will enable you to use this source to store
either view caching data or imported spreadsheet data.
4. If you have set the source to writable you will have the option to make the source
the default storage for spreadsheet imports.
5. Define the time zone region for the source this is used for managing scheduling
and broadcasting if your users are located in a different time zone from the
source system.
1. Select Unsecure or Secure. If you select secure an additional step will be added
to your connection wizard.
2. Permissions against the source allow you to determine what actions are
permitted. You may choose to stop users from creating broadcast reports or
subscribing to reports that are initiated from the source.
3. Source Filters are used to create Privatised filters for users based on data within
the source.
The connection to the source system must be specified. The connection parameters
define how Yellowfin accesses a database.
Note: Some data sources such as Access and Lotus Notes will require an ODBC
connection. Please refer to specific Connection documentation for non-standard
SQL data sources.
2. Select a Database from the list. You can either select the database you are using
or choose a Generic JDBC/ODBC Data Source from the list. Yellowfin
recommends that you choose the database you are using from the list unless you
need to add extra parameters to the end of the connection string. The generic
options allows for this.
3. If you have chosen the non-generic option, fill in the Host, Port, Database Name,
Username, Password, and any other options required, then move to the
Connection Management section of this guide. Otherwise, continue with these
steps:
where the <db driver string> is the specified driver string for the db, <host> is
hostname or IP address, <port> is the TCP/IP port that the database listens on
and <database> is the database you are attempting to connect to.
6. Insert the username and password for the Yellowfin to connect to and access the
database. Your password will be encrypted when stored in the Yellowfin
repository.
7. Select your Schema the scheme is used internally to partition tables within the
database. Select the appropriate schema for the Yellowfin user.
8. To test the connection, click the test connection link. If successful a connection
succeeded message will be displayed. You should also see a list of tables found
using the selected database schema.
1. You will not be required to set a username or password for this connection, so
just leave the fields blank.
2. To test the connection, click the test connection link. There will be a popup
message informing you that no username was set, click OK. If successful a
connection succeeded message will be displayed.
Name URLFormat
Informix jdbc:informix-sqli://<host>:<port1533>/<database>:informixserver=<dbservername>
JDataStore jdbc:borland:dslocal:<file>
MySQL jdbc:mysql://<host>:<port3306>/<database>
PostgreSQL jdbc:postgresql://<host>:<port5432>/<database>
Progress jdbc:jdbcProgress:T:<host>:<port2055>:<database>
Included with the standard Java Runtime environment is the Sun JDBC-ODBC driver.
This driver allows a JDBC connection to an existing ODBC source. In all cases it is
more reliable to connect to a database via a native JDBC driver. In the case that a
JDBC driver doesnt exist for the source database, this may be a viable alternative.
On the database source page, by default, the Sun JDBC-ODBC driver will be
available in the driver drop down. It is listed as sun.jdbc.odbc.jdbcodbcDriver.
jdbc:odbc:<data-source-name>[;<attribute>=<value>]
For more information about the Sun JDBC-ODBC driver please visit:
http://java.sun.com/j2se/1.5.0/docs/guide/jdbc/getstart/bridge.doc.html
rd
Note: You can also consider using 3 party JDBC-ODBC bridges that have been
optimised for the database you wish to connect to. Please see the installation manual
for more details.
1. Complete the Minimum and Maximum connections. These determine the number
of connection within the connection pool.
For example if you have a maximum of 5 connections and 5 users create very
large reports at the same time no other user will be able to access the source
until these reports have completed processing.
Yellowfin automatically creates and keeps the minimum connects open and will
use up-to the maximum if required. Setting the connections permits you to
optimise system resources.
The refresh recycles the connections after the set period. This is done to ensure
that no connections have become stale / or been left open even though the user
is no longer using them.
3. The timeout is the time that is allowed for the SQL statement to return results. If
queries against this source are likely to be large this field will have to be set to
accommodate them.
To disconnect from a source database you can make a connection unavailable. This
is useful if the DBA of the source database requires all connections to that database
to be closed. Select unavailable from the connection management options.
Note: Whilst the connection is closed users will not be able to edit or add views or run
any reports from the source.
1. Unsecure. This allows all users to access the source system for writing SQL
queries or creating new views (in both cases the user must still have a role which
grants them functional access to these actions) or
ii. Who has the ability to create new views against the source
iii. Who can write SQL or Jasper reports directly against the source
1. Once you have selected the secure option from the connection details page the
security management step will be displayed.
2. You will need to search for which users or groups have access to the source.
Click the search link and select the user or group required.
3. Select the appropriate access level. Note at least one user must have DELETE
access else the source will be locked to all users for update purposes.
4. Click the add button to add them to the access list. You can add as many users
or groups as users to the list as appropriate.
1. Select source filters on the connection details page. This will make the source
filter step available in the wizard.
2. Click Add to add in a new filter or edit to edit an existing record. If you click add
you will be prompted for the type of filter you wish to create.
In each case you will need to enter records consisting of four fields:
Identifier Type The Identifier Type and Identifier are used to identify a
Yellowfin user. The Identifier Type can be either Email
Address,
Yellowfin Person ID or
User ID.
Identifier The Identifier field will then be the corresponding user id.
Filter Type The Filter Type field is used to determine what type of filter
this is. This is critical to assist users when creating views or
reports. Select a user friendly type name.
Access Filters also have a Refresh Type option, which allows you to specify how the
filter will be processed when changes are made. The default option is for updates to
be appended to the existing entries. In this case, the new records entered will be
added to those already saved. If you choose to overwrite the existing entries, any
previous records will be discarded before saving the new records.
The filter type is used to link the data in your source system with Yellowfin meta-data.
It also provides a mechanism to categorise the type of filters that you can make
available for your views.
1. From the Source entry page you will see the Available filter types on the right
hand side of the page. Click Edit to add new filter types.
2. From the popup click the add link to add a new filter type. This will open a
section at the bottom of the popup. Enter a code and description of the filter type
you are creating.
3. Once you have created a new type click the add link and then the OK link to save
all your changes. This will take you back to the main access filter page and you
should see a filter type specified in the available list.
4. If you wish to delete a filter type then from the edit popup select a type and click
the delete link. You will be prompted to click OK to save your changes.
Note: If you delete a type which is in use this may impact your reporting filter
process.
Note: If records exist you can view these by clicking the view record link located at
the bottom of the entry section.
When you choose to create an Access Filter by uploading a data file, the screen will
show a file selection box. Click on the Browse button to open the CSV file containing
the filter records. The file must consist of records of the four fields listed above. The
file may contain a header row, which must have the titles Identifier Type, Identifier,
Reference Type and Reference Id.
The query will run against the source database, and must return four fields
corresponding to the fields described above.
Click on the Test Query link to run the query and report any errors. This will test the
SQL syntax, but will not validate the data returned.
Once you have set up one or more Access Filters on a data source, you can assign
them to any views created against that source.
1. Create your view as normal, and then on the Fields page, select a field that
corresponds to one of the Reference Types you have created.
2. On the Access tab, select the correct type from the Access Filter selection. You
will not be able to select Reference Types that dont have any filter records saved
against them.
4. Once you have finished assigning access filter types to the fields on the view, go
to the View Security page. You can select a default filter to be applied to reports
created against this view here, or choose not to have one. If you select a default
filter, any subsequent report created against this view will have the filter applied.
Users creating reports that have the appropriate access level can change or
remove the filter on a per-report basis.
On the Report Data page, open the Report Data section in the Report Options box on
the right hand side. The Access Filter selection box contains any filters that have
been attached to the selected view.
If you select a filter, it will be applied to the results for each user when they run the
report.
Note: that only users with the appropriate security access level will be able to change
the Access Filter on a report.
SQL structures called items that map to actual SQL structures in the database
such as columns, tables, and database functions. Items are grouped into
categories. Items and categories are visible to report writers through the report
builder interface and as data presented in a report.
A schema of the table or view used in the database. Items are built from the
database structures that have include in your source schema. The schema is only
available to Yellowfin report writers. It is not visible to report writers.
Report writers select a view to run queries against a database. They can do data
analysis and create reports using the items in the view, without seeing, or having to
know anything about, the underlying data structures in the database.
The role of a view is to provide an intuitive interface for non-technical report writers to
run reports and perform data analysis against a database.
A view administrator should have the following skills and level of technical knowledge:
Skill/Knowledge Description
Ability to analyse user needs The view administrator must have the skills to
conduct user needs analyses to create categories
and items that are relevant to the user vocabulary,
The items that report writers see in a view infer SQL structures that
have been inserted into a database schema.
Dimension items retrieve the data that will provide the basis for analysis in a
report. Dimensions typically retrieve character-type data (employee names,
company names, etc.), or dates (years, quarters, etc.)
Metric items retrieve numeric data that is the result of calculations on data in
the database.
Metrics tend to be dynamic: the values they return depend on the dimensions
they are used with. For example, if you include Person and Age in a query,
Age per person is calculated.
Pre-Defined Filters are items where a set of conditions have been set up
when the view was created. This assists users to limit the data returned in a
query to only the expected results. For example if the filter is called United
States then only data from the united states would be included in the results.
Parameters are items which are used to capture user defined values and pass
them into calculated fields or filters. These parameters can assist in
conducting what if analysis.
By using a view, the end user automatically has access to data within your source
system. Access to data is restricted by the items that are available in the view. These
items have been created by the administrator based on the report users needs.
A view can represent the data needs of any specific application, system, or group of
users. For example, a view can contain items that represent the data needs of the
Marketing or Accounting departments in a company.
A view can also represent the data needs of a section within a department or any set
of organized procedures such as a payroll or inventory system.
Yellowfin report writers use views for reporting and analysis. The view should provide
them with categories and items relevant to their business domain.
The analysis of user requirements and design are the most important stages in
the process. Users must be heavily involved in the development process if the
view is going to fulfil their needs both with the business language used to name
items and the data that can be accessed.
a. You must fully understand the data analysis and reporting needs of the target
audience for the view. Do not create items by looking at the columns
available in the database, but identify columns that are required as a result
your user needs analysis.
b. Understand the source system data and business rules required for
generating the required items for users.
You create an entity relationship diagram for the underlying database structure of
your view. This includes the selecting the appropriate tables and columns of the
source database and the joins by which they are linked.
3. Defining Items
Select columns form your source system tables and organise these items into
categories. These are items that you have identified from an analysis of user
reporting needs. You can create additional calculated items and filters to enhance
user reporting capabilities and optimise query performance.
Test the integrity of your view structure. You should also perform tests using the
report writer on the view.
You can publish your view to users for testing, and eventually for production use,
by expanding the number of users that have access to the view.
The table below outlines the major phases in a typical view development cycle:
Prepare Identify the target data source and become familiar with its
structure.
Know what data is contained within each table required for the
view and the joins that related the tables to each other.
Implement Build the view either on the database or through the Yellowfin
view builder.
Evolve Update and maintain the view as the data sources and user
requirements change and grow.
Note: View design should always be driven primarily by user requirements and NOT
the data source structure.
1. To create a new view click the add view link from within the source record.
The view initiate page will prompt a select of the type of view you wish to create
and the data source connection to use. The choices you have are:
Drag and Drop Use the Yellowfin builder to create a view on your database.
2. Select a category for the view. This is used to limit the field item categories to an
appropriate set. For example only Sales Related field categories will be
displayed for a sales view.
3. To create a new category click the create category link. This will open a popup
window in which you can add a new category.
The drag and drop builder is covered in detail in subsequent chapters. This option
allows you to use Yellowfin to simply join multiple tables from a single selected
database through a web interface.
Note: When writing an SQL view it is very important that you do not include an order
by since results are sorted by the Java application not the database. The order by
will cause your view to fail.
A composite view allows you to create a view which joins multiple data sources
together. This allows users to create a report which includes data from these multiple
databases.
The view builder for a composite view differs in that rather than displaying tables from
a selected database it allows you to join existing Yellowfin views together and create
virtual tables from any defined database.
1. To create a composite view select the composite view option from the author
drop down.
2. You will also need to select a database in which you wish to store the view
results. This is needed since composite views can be highly complex and result
in slow query performance by your users. As a result Yellowfin schedules a
1. To create an OLAP cube view select OLAP cube from the author drop down
menu.
2. Choose the source connection Yellowfin will only provide OLAP source
connections for you to choose from.
If no source exists you will have to create a specific OLAP source connection
record.
Note: When creating an OLAP cube as a view you will have limited options for
updating field information. This is because most of the metadata is already contained
in the cube itself.
With Yellowfin you can connect to stored procedures running on your application
database.
1. To connect to a stored procedure select the stored procedure options from the
create view drop down list.
2. Select the Database and then the stored procedure you wish to connect to.
3. Click the next arrow to continue to the stores procedure parameters page.
Yellowfin will automatically detect parameters which exist in your stored
procedure and display this list on the page.
4. You must fill in a value for each parameter. The value is only used to return
column at this stage of the view builder. (The non-return fields will become
automatic filters on the reports created from this stored procedure).
5. When you have completed the parameter section click accept to return the list of
fields in the result set.
6. Complete the metadata as you would for a standard view. Note that the non-
return parameters exist as filter fields.
Complete the View Business name, description and audience this is displayed to an
end user when writing reports to assist them to make the correct decision about the
source of the data they wish to report off.
You can set the maximum row to be returned for any report written from this view.
If you wish you can change the view category this will change the field categories
available
Security on the view is used to set who has access to the view.
a. Unsecure all users with functional access to the database can write reports
against this view.
b. Edit restricted only defined users will be able to create a report using this data.
All other users will be able to read the reports that have been created by
authorised users.
c. Restricted only defined users can read or write reports from data in this view.
1. Once you have selected the secure option from the view option the security
management step will be displayed.
4. Click the add button to add them to the access list. You can add as many users
or groups as users to the list as appropriate.
The general tab provides a View summary, including the purpose and the intended
audience, and the option to edit this information using the Edit Metadata link. In
addition you will be able to export a view summary PDF or DOC.
The Test Report button allows you to create a report based on a draft view in order to
ensure it is returning the desired results before activation.
When the view is in draft mode you are also presented with the option to change the
data source, this is useful when you need to switch from a development connection to
production. Click on the Change link next to the data source and you will be able to
select one of the same type to redirect to.
The columns tab provides summary information of all the columns that are included in
the view.
The SQL tab displays the SQL that has been generated as a result of the business
rules implied through the entity relationship diagram and the columns that have been
created. You can use this tab to verify that the view you have built is generating the
expected output SQL.
The elements tab provides a list of all source tables or views used in the view. The
source database name, its description and alias are provided. In addition any joins
and conditions are specified in detail.
This tab provides view caching information. You can use this tab to populate the data
manually and view the caching settings.
2. Complete the form most of the information may already have been completed.
Note: Only ACTIVE views are available for reporting by end users.
4. Click Save to save the view as Active and return to the View Summary page.
1. To edit a view click the edit link from the view summary page. This link is only
visible if the view is ACTIVE.
If you edit the existing view then no users will be able to run reports against that
view until you have activated it. Any changes you make to the view may impact
existing reports and corruption may occur. You will also not be given the option to
rollback the view to its previous state.
If you clone a view then the changes are made independently of report users. On
activation the view will replace the previous version.
4. When activating the view you will be prompted to update the view name and add
a description of the changes made. This information will be available when rolling
back the view.
1. Click on the Rollback link found on the View Summary page. This will only be
enabled if a clone has been saved.
2. You will now notice there is an extra option on the Edit View page allowing you to
view the change description of the current view version and Rollback those
changes.
1. To delete a view select the view from the views list by ticking the checkbox. Click
the Delete link.
2. You will have to confirm your deletion. The confirm page will show you how
many active reports are currently attached to the view. If you delete the view all
these active reports will be deleted as well.
If you wish to copy a pre-existing view and use it as a base for a new view you can do
so by selecting the view you wish to copy from the view list and clicking the copy link.
This will copy the view and take you into edit mode.
1. On the Cache tab of the view summary page, click on the Create a cached copy
of this view link.
2. You will now have a series of options to configure. Select the name of the data
store you have setup.
3. Decide if you wish the caching to be incrementally loaded. If Yes, you will be
prompted to select an incremental load key from the view. This field must be an
incrementing column as it will be used to determine which records are new since
the previous refresh.
4. Once you have set the refresh schedule, click Save. The view is now set to
regularly cache its data, but will wait for the scheduled date to populate the first
set of data. If you wish to populate the data manually click the Populate Data Now
link.
5. Yellowfin will now populate the data. Depending on the number of records and
the complexity of the view logic, this task may take several minutes.
You can now click on the data tab to view a snapshot of the data.
Note: For some of these options to occur you must set your view categories to be
visible from the administrators configuration page.
The view category is used to limit the available folders for field categories. For
example if you have sales, financial and HR reporting it is likely that the field
metadata will be quite unique for each of the areas. Therefore being able to limit the
number of field categories makes it easier to create views and assign fields.
In the example below the available list of field categories is limited by what is
contained in the Yellowfin view list.
If you are reporting of a large complex application you can use the view categories to
assist you to limit the views displayed when managing your views. For example:
when connecting to an ERP application.
In the example below you can see another folder below the data source folder which
contains a set of views.
The view category is also used to assist users to select an appropriate view when
building reports. In the example below the view category is displayed when creating
a report.
Note: you must have Filter Views by Category switched on, on the configuration tab,
for this option to be visible.
This section describes how to use the view builder to create views of your database
that end users can access for reporting purposes. These views are built by first
creating an entity relationship diagram which joins all required tables together.
This chapter is only relevant if you have selected the Drag and Drop option
from the initial view options.
By using the Yellowfin view builder you can optimise the SQL that will be generated
by the query. For example if you create a view where multiple tables are joined
Yellowfin will only select data from the tables necessary to return data required for the
report. This means that you can create relatively complex views without
compromising on performance.
For example you may want to build a fairly complex view that provides significant
flexibility to your end users (more fields and tables). In general reports that are
written will not include all possible fields. In this way you can deliver less views to
your end users therefore reducing the administration complexity.
The relationship diagram contains tables and joins. The tables contain columns to
which you apply a metadata so that business end users can use for creating reports.
The joins link the tables so that the correct data is returned for queries that are run on
more than one table.
1. The process wizard assists you to move between the various steps in building
your view.
2. The search and expand option allows you to search for tables in your data base
3. The virtual table allows you to create your own tables using freehand SQL.
4. The data base tables allow you to view all the available tables in your data
source.
5. Drag the table to resize the table list and expand the size of your canvas.
6. The canvas it is on this section that you drop your tables and create joins
between them.
By expanding the node next to a table name you display the fields for the table. The
list also provides an indication if the element selected is a table or a database view.
Database table
Database View
Virtual Table
Note: the number of default tables shown is a configuration item 50 is the default
In your view you can drag multiple versions of the same table. This may be needed if
you which to access the same table but in different ways. See how to create aliases
in the next section.
When adding more than one of the same table to a view Yellowfin automatically
creates table aliases, since two tables cannot have the same name. An alias is
created by updating the table name.
To change the table name you can update the display name in the options menu.
Note: that the source name continues to be displayed in the original format.
Note: once columns have been selected and meta data applied to them the table
alias can no longer be edited.
If you wish to see example data from the table that is currently being updated you can
click the view data link located in the main table properties section or on the table
within the table on the entity builder.
Any conditions that have been applied to the table will be applied to the select
statement for the example data. However, if the joins to the table have implied
conditions these will not be included in the example select data.
1. To add a field into your view click the table properties link to display the
properties in the View Options pane.
3. Select the columns you wish to add (Use the Select All link to select all columns)
4. Columns selected will be displayed in bold within the table on the canvas as
depicted below.
5. You can also add columns from the table data view see above. Simply click on
the column to highlight the column these will then be added to your column list.
A join is a clause that combines rows from two or more tables. Joins are used to
ensure that queries containing data from multiple tables do not return an incorrect
result. The tables usually have a parent-child relationship. If a query does not contain
a join, the database returns a result set that contains all possible combinations of the
rows in the query tables. Such a result set is known as a Cartesian product and is
rarely useful.
Note: With the Yellowfin you cannot create loop joins. A loop join is where a table is
joined to multiple tables that join back on themselves creating a closed loop.
Inner Joins
An inner join (sometimes called a "simple join") is a join of two or more tables that returns
only those rows that satisfy the join condition.
Outer Joins
An outer join extends the result of a simple join. An outer join returns all rows that satisfy
the join condition and also returns some or all of those rows from one table for which no
rows from the other satisfy the join condition.
The outer join is specified by selecting the appropriate From Table as the starting point
for the join builder. The outer table contains the column for which you want to return all
values, even if they are unmatched.
Note: The view builder has the limitation of not being able to have an INNER JOIN on
the discretionary end of an OUTER JOIN. If you have a join error whilst creating an
outer join you can change the direction of the join creation.
So if you are currently creating an outer join from Table A to Table B, go to Table B and
create the outer join back to Table A instead.
Cross Join
A cross join (sometimes called a Cartesian join) is a join that will include all rows from
one table with all rows from the other table. No matching will be applied.
1. To create a new join click on the Join icon on the table you wish to include in the
join. This will open the join popup.
2. Select the join type and the table you wish to join to
Note: you can also use the detect join option if the tables have key fields with the
same name,
3. Select the From Column, the operator and the To Column that you want to be
included in the join. Click Add to add the column relationships to your join.
Note: Multiple join columns can be added into the join definition. For more detail
on joins details see the conditions section below.
4. Click Save and Close to save your join and return to the view canvas
5. The tables will now have a join displayed as a line between them.
If you want to delete an existing join without deleting the associated tables
2. Click the delete join link on the popup and the join will be deleted.
1. The item that has been selected on the report data page for filtering. E.g. Cost.
2. The Operand drop down lets you select what type of filter to be used. For
example if the date is greater than 0
4. The brackets allow for greater complexity in data filtering by using AND and
OR with the where clause operator.
5. The where clause operator allows the user to set multiple filters using AND or
OR. For example filter all People where AGE is Greater than 50 or Gender =
Female.
6. The move up and down buttons allows the user to build complex bracketing
7. The condition logic display allows a user to read a summary of the filter that
they have defined. Click the refresh link to update the logic if conditions have
changed in the form.
When defining a filter initially set the operand drop down to the desired value. The
options within the drop down will vary based upon the type of field that the filter is to
be applied to.
Operand Description
Greater than or equal Greater than or equal to a single alphanumeric or string value
to
Less than or equal to Less than or equal to a single alphanumeric or string value
Not Between Not between variable 1 and variable 2 these will need to be
legitimate parameters such as date, age etc.
2. Click the conditions expand icon to show the conditions and click the add link.
This will open the conditions popup.
Figure 99 Condition
3. Select the columns you wish to place a condition on. Select the operand and
enter a value. Click Add to add the condition into the list.
4. Continue to add conditions in this manner use the AND OR operands and
bracketing to create complex conditions.
Click the OK link to close the popup window and apply the changes to the
conditions section of the table properties.
1. On the condition popup select the date that you wish to filter on. Based on
selecting a date the current date option will be displayed.
2. Select the + - for setting the condition and the number of days which are relevant.
3. Click Add to add the item to your condition list. Click OK to save and close the
popup.
Dynamic conditions can be used in a variety of ways such as converting metric into
empirical measures, converting currencies or converting product descriptions into
preferred languages.
The dynamic condition works by allowing you to join you data to a translation table
e.g. Currency. This table will have multiple values for each currency of interest so
normally you would create multiple records if the join had been applied by with no
condition.
A dynamic condition is then applied to ensure that for each user only one possible
currency is used. This privatises the data based on the currency selection in the user
profile.
1. Tick the dynamic condition option when creating a join, and select the filter type
that you wish to apply. This will be a list of all the valid user parameter reference
codes that exist.
2. Choose the default value this is used as the default if the user has not selected
a preferred value in their profile.
To remove or clear the conditions from a table select the table properties and click the
Clear link. This will remove all the conditions associated for that table.
You can include complex calculations and functions in a virtual table. These
operations are performed before the result set is returned to a report, which
saves time and reduces report complexity.
Virtual tables can, in some cases, replace aggregate tables stored on a database.
These aggregate tables are costly to maintain. Derived tables can return the
same data and provide real time data analysis.
1. To create a new virtual table drag the virtual table icon from your table list onto
the canvas.
2. The virtual table has an additional SQL link, click this to open the SQL popup.
You can update the name of the table and insert the SQL to create your derived
fields.
Note: Your SQL cannot contain order by statements as this will cause the reports to
fail. For aggregate columns ensure that you define the column name (as statement).
This is required by Yellowfin to generate column names.
3. Click the Validate SQL Link to test your SQL against your target database.
4. Click Save to save you SQL. This will show you a list of columns returned from
your SQL statement.
To edit the SQL of your virtual table click the edit link on the virtual table summary
page. This will open the SQL editor.
If you have already attached columns from your Virtual table to your view you will
have to be aware of the impact that any changes you make will have. For example
you may drop columns or rename ones that are already in use.
If the shipping charges and other header-level facts cannot be allocated successfully,
then they must be presented in an aggregate table for the overall order. We clearly
prefer the allocation approach, if possible, because the separate higher-level fact
table has some inherent usability issues. Without allocations, wed be unable to
explore header facts by product because the product isnt identified in a header-grain
fact table. If we are successful in allocating facts down to the lowest level, the
problem goes away.
We shouldnt mix fact granularities (for example, order and order line facts) within a
single fact table. Instead, we need to either allocate the higher-level facts to a more
detailed level or create two separate fact tables to handle the differently grained facts.
Allocation is the preferred approach. Optimally, a finance or business team (not the
data warehouse team) spearheads the allocation effort.
Whereas an index for transactions may be on the primary key for reporting these may
be on multiple dimensional attributes. This can create a conflict of requirements that
will determine your overall data architecture strategy depending on the size and
complexity of your underlying database. As a result you may have to extract data
from your underlying tables into specific reporting tables in the form of a data mart or
OLAP cube to ensure optimised reporting.
When creating a join with inner joins the "direction" of the join is not relevant, but
when creating an outer join the direction does matter. A join rule in Yellowfin is that an
inner join cannot reside on the discretionary end of an outer join.
If you require complex joins like this you may have to use a virtual table, a SQL view
or a hard coded view on the database. Even though the view above would only
require simple insertion of brackets, Yellowfin does not cater for complex nested joins
such as:
A inner join B outer join (C inner join D) outer join E outer join (F inner join G outer
join H)
1. Each field originally selected will initially be unattached. The process of adding
columns to the view requires that metadata be applied. Drag columns from the
unattached table list to the folders you wish to apply them to.
2. Fields are categorised into folders. These folders are related to the view
category. The purpose of this is to assist end users to find the columns they
require. Columns displayed in the list provide some indication of their metadata,
such as; hierarchies, dimensions or metrics, and business name.
3. Click the edit category link to create or delete categories for the current view
type.
4. On the field edit section a set of tabs provides reference to the metadata and
business logic you can apply.
5. The definition tab allows you to change the Business Name and Description of
the column, as well as setting it to metric/dimension and active/draft.
Unattached fields are grouped into their source table folders in the Unattached Field
list. Click on the field name and drag it into the appropriate folder.
Note: You can add the same field multiple times into your view. This is useful if you
wish to use the same field in multiple hierarchies or with different formatting applied.
If you do add the same field multiple times ensure that the business
descriptions are unique since Yellowfin needs to be able to differentiate the fields
during import and export processes.
Each field has to be defined in your view prior to it being used for report generation.
Some of the field information is automatically loaded into the field list from the
database but additional information is required.
1. Once a field has been added into the main folder section double click the field
name to open the edit tabs.
2. Give the field a business name this is the name displayed on the report.
3. Add the field to a category this is used on the report data page to group fields
into logical groups. If you need new groups click the edit category link.
For text fields this lets you convert a text field such as a blob into a geometry type
field. This is used where a data base does not natively support GIS columns but the
data exists. Yellowfin will convert the text to enable use for GIS visualisation.
The formats are limited to the data type For example the data type below is integer
so only number based formats are permitted such as currency, decimal, percentage
or time stamp.
Note: The formats displayed in the drop down list are configurable by your
administrator. Should you require specific format types which are not catered for then
please contact your administrator to have these created for you. Details of this
process are specified in the Analytical Functions section of this guide.
Based on the type of field that the column being formatted is there are various format
options. The ones listed below come default with Yellowfin, however as this is
customisable there may be additional ones that comes as part of your installation.
Link To URL Allows you to pass the value of the returned data into a URL link. Use
the hashes ## to indicate to Yellowfin where you want the column
value to be placed in the URL itself. For example: Formatting on a
column of IP addresses and the URL typed in is:
http://www.google.com.au/search?hl=en&q=##
This essentially means that every IP address will be placed into it i.e.:
Org Reference Converts the text in the cell to the value of an internal lookup table.
Code E.g. AU to Australia
Raw Displayed the data as it would have been returned from the database
Formatter no additional formatting applied.
Text
Email Address Creates a hyperlink on the text that will open an email client and pre-
populate the sent to address.
URL Hyperlink Creates a hyperlink on the text and will open web page on click.
Assumes the text is a legitimate URL.
Flag Formatter If your data contains ISO country codes you can display these as flags
of the world instead of text.
Date
Part Date
Formatter
Numeric
Numeric Displays value as a decimal allows you to set the decimal places to
be used.
Percentage Converts a percentage value less than or equal to 100 into a bar.
Bar
The display options are used to change the data format of the column such as the
number of decimal places and the prefix or suffix to be applied.
Option Description
Sub Format Depending on the format option you have chosen for the column
Date Other If you select Other from the date sub format you will be able to build
your own custom date format.
yyyyMd
Decimal Places If you have a defined a numeric format you can set the number of
decimal places to be defined. This can be used to define cents in a
decimal place for $20.00 by adding in:
Prefix The prefix is used to include additional characters before the value
that is returned from the data base. This can be used to define
currency for $20.00 by adding in:
Suffix The suffix is used to include additional characters after the value
that is returned from the data base. This can be used to define
percentage for 30% by adding in:
Rounding The rounding format allows you to choose how a decimal value
should be rounded.
Thousand Turns the defaulted thousand separator for your instance on or off.
Separator For example:
1000 to 1,000
The additive type option should be set to Semi-Additive when there are fields
upon which the metric is constrained by use (when business rules dictate
how the column should be used in a report). When this is the case a new tab
labelled Constraint is displayed to enable the user to select these constraints.
When the field type is a metric then you will be able to set the default
aggregation (e.g. Sum, Average etc).
This is used when adding the metric to a report it will automatically set the
aggregation based on this default value. The options in the dropdown when
the field type is a date are count, max and min. For all other field types the
dropdown options are sum, average, count, max and min
1. You wish to translate a value held in the data source into business terminology.
For example if male and female are stored as M and F you may want to translate
these into Male and Female
2. If you wish to apply customised sorting to a field. For example: data returned in
a query is usually displayed in Alpha / Numeric sort order. If your result set
included: Admin Staff, Managers and Executive Management your report may
look like this:
Executive Management 10
Management 50
Hierarchically your data may actually need to be displayed in the following way:
Executive Management 10
Management 50
This can be achieved by creating reference codes for the values and assigning a
sort order to those codes.
2. To use an existing reference code the user can simply select the code from a
dropdown box once they have ticked the existing type option.
3. To create a new reference code the user must tick create a new type option and
then select to pre-populate from the database or not. A pop up window will
appear so the user can add their new reference code. In this window the user can
also edit an existing reference code or delete an existing reference code.
4. If you pre-populate from the database you will see values already in the code list.
You will have to give the reference code you are defining a name. This is so that
the set of translations can be re-used across multiple views.
When editing a reference code you can change the values and the sort order of the
codes stored in your database.
Click on the code hyperlink to open the edit section in the lower section of the popup
to change the name and sort order.
The access filter is used to indicate the type of field email address or employee id
this will be used for broadcast reports and automatic filters on reports thereby
privatising a report for a report reader.
Access level indicates if all users with access to the view can see the field or if it is
restricted to a sub set of users and finally if it is secure. If secure an SQL statement
where clause can be used to ensure granular security rules. (the associate report
functionality will be included in a later release)
Columns can be restricted to a user and/or a group. This will allow only those given
the permission to write reports with the restricted columns included.
Columns cannot be restricted by field level data. The entire column is either
restricted or available to end users.
1. To make a column secure the restricted option must be selected in the access
tab.
2. On returning to the view details page a new section is displayed for determining
who has access to restricted columns.
A user or group can be added to the restricted access list by going to the view
details page and adding the user or groups details in to the restricted column
access section.
This section is added to list so many people or groups can be added in.
The Yellowfin column security restricts all non-approved from viewing any restricted
columns in a view. For example it is not possible to place varying restrictions on
columns on either:
1. A value basis e.g. only display data where salary < 100,000 if employee id not =
29098
2. Restrict column A to user Fed and Jane, and restrict column B to Mary and Peter.
all columns will be restricted to a single set of users.
If column value based security is needed then this can be delivered via source
access filters. See the source management section of this guide.
Mandatory field is displayed when the access level is set to Global. It is used when
creating a report to determine if the field selected is a mandatory or suggested field.
Mandatory filter is displayed when the access level is set to Global. It is used when
creating a report to determine if the field selected is a mandatory or suggested filter.
1. If you wish to add a hierarchy select the top level of your dimension hierarchy
(country in the example below).
2. Click the hierarchy tab and select Yes for drill down
3. You will then select the column you wish to drill to.
4. As you progress down the hierarchy Yellowfin will display the drill path as
information for you.
The Constraint option is used for semi-additive values so that business users will be
prompted if they try to create a report with incompatible values. Use constraints to
define how the aggregation is to be applied if the field is semi-additive.
Fred 1 June
Jane 1 June
Mary 1 June
Fred 1 July
Jane 1 July
Sum 5 ----
Given the above data, to sum the Head Count alone would result in 5 if Month were
not included in the report. This would be misleading for a user (since 5 people were
never employed at one time). If you put a constraint rule on Month that it is a
mandatory field when Head Count is being summed, then this would result in the
following data:
3 June
2 July
As you can see from these results the report is more meaningful and correct. By
applying a constraint to the aggregation of headcount the correct usage of the
attribute is ensured by the end user in their reports. To access the rules applied to
fields the semi-additive option must be selected from the format tab; once it has been
selected the Constrain tab will appear, this is where the user defines the rules.
1. Aggregation not permitted allows the user to indicate which action is not
permitted for the metric. If sum or average is selected, the corresponding column
will not be available to constrain against.
These constraints are checked when creating a report and the metric is being
aggregated with sum or average.
The rules that can be applied to a field are: exclude, mandatory, and one of list. The
default rule is no constraint; this will result in no constraint being applied to the field.
Exclude Being selected as the rule will result in the field not being allowed to be used
in the report when the chosen aggregation is applied.
Mandatory Being chosen as the rule will indicate the field must be used in the report
when the relevant aggregation is applied.
One of list Constraint will result in at least one of these fields being present in the report
when being aggregated by the relevant field.
To categorise a field select a category from the category drop down on the Definition
tab. This will place the field into a folder with that category as title.
The categories are related to the type of view you are creating for example if the
view has been categorised as a Finance view then the categories available should be
those relating to the finance function.
By editing categories you can either add existing categories into the Finance subject
area or create brand new categories for the finance area.
1. To add or edit categories click the Edit Categories link on the view definition
page. This will open the add category popup. Existing categories for the view
subject area will be displayed on the right hand side whilst all other available
categories will be displayed in the left hand list.
2. Either select a category from the left hand column and click the add button to add
into the view subject area; or
3. Click the New Category Link to display a text box for a new category. Click Add
when to save.
4. Once your View Subject area has all the categories required click save & close
to close the popup and return to the field edit page.
The order in which fields are displayed in the report builder for the end user can be
modified by the view administrator.
By clicking on a field and dragging it above or below fields or to different folders you
can change the order of the field as it will be displayed to the user when creating a
report.
Note: If you are moving a field below a hierarchy of fields then a single move up or
down will move the field past the entire hierarchy not just a single field.
1. Pre-defined filters,
2. User Parameters,
These options will create very different field types as described below.
You can create new calculated fields within your view as required.
1. To create a new field open the Calculated Fields folder in the unattached folders
list. Here you will see sub folders for formula builder, freehand SQL, Formula
templates, or Date Hierarchy. These are different ways that you can create
calculations.
Select how you wish to create the field by either selecting to create a new
calculated formula, or type in an SQL statement, or use an existing function as
defined in the custom function XML file (See Using Custom Functions).
2. Choose the type you want and drag it into the report folders like you would a
normal field. This will open the field edit section. Define the metadata for the
field as usual.
3. Advance to the formula entry by clicking the Formula tab at the top of the dialog,
unless you chose the Date Hierarchy, this is set on the first tab.
1. By selecting the Create New Formula option the formula generation dialog will
open.
2. The formula builder will allow you to generate a valid formula that will be returned
by this column. Highlighted buttons will help guide you to create a valid formula.
More complex calculations can be created using the case statement. The case
statement allows you to create new values in columns based on business logic. For
example IF age is less than 20 then print Young.
1. To insert a CASE statement, click the CASE button. The When button will open a
popup dialog. It operates similar to the formula builder, only allowing formula
objects to be inserted where they are valid.
2. Once the CASE statement expressions have been created (Make sure you have
included the END FUNCTION), clicking the OK link will return the generated
expression to the formula builder.
3. On Save the formula builder will ask you to define the data type of the calculated
column. It will query the database with the formula to populate the available types
with formats that the formula is compatible with.
4. Once the calculated column is saved it will be added to the list of available
columns in the fields view.
5. The column can then be treated as a normal field within the Report Data page.
If you have SQL skills you may wish to write your SQL directly into the SQL edit box.
In this case select the Enter SQL option from the formula tab. This will open the
SQL edit box.
You should enter an SQL SELECT fragment, not including the SELECT keyword
or any FROM or WHERE clauses.
Any columns referenced must exist in this view, and aggregate functions (AVG,
MAX, MIN, SUM and COUNT) should not be used.
1. Select the type of calculated field as Formula, and select the formula you wish to
use from the drop down menu.
2. Functions defined in the XML file will require you to enter a number of parameters
(or arguments). Parameters can be chosen from a list of columns where the data
type matches the data type of the give parameter.
3. Assign a value by clicking each Argument and assigning a value to it. The value
can either be a fixed data value or a column reference.
4. Once values for each of the arguments has been assigned, click the save button
to save the column to the list.
These templates allow you to convert dates and timestamps into various formats,
which can then be used to build detailed date drill down hierarchies. The list of
available formats will vary depending on source database type.
1. Select the date format you want in your hierarchy and drag the field into an
appropriate category.
1. A common set of filters are used by report writers such as location, or business
unit; or
2. If there are particularly complex filters that can be built ahead of time and are
commonly used.
1. Filters can only be created using the formula builder. Like a standard calculated
field select the filter options from the unattached fields list. Drag the filter option
into the report folder list.
2. On dragging the field into your folder you will be presented with the filter formula
builder.
3. Select the field you wish to filter and then use the operator, brackets, and or
function buttons and text field to build your filter.
4. Click OK to save your filter and include it into your field list. The filter will be
highlighted with a filter icon.
When defining a filter initially set the operand drop down to the desired value. The
options within the drop down will vary based upon the type of field that the filter is to
be applied to.
Operand Description
Not Between Not between variable 1 and variable 2 these will need to be
legitimate parameters such as date, age etc.
The view builder for a composite view differs from the standard drag and drop builder
in that rather than displaying tables from a selected database it allows you to join
existing Yellowfin views together and create virtual tables from any defined database.
You will also have to define where the data from your source database will be stored.
The data from a composite view will be extracted out of your target databases and
stored in a separate database. Therefore, you will have to define a target database to
store your data into. The first step in this process is to specify which databases are
available to store results from your composite view.
The user specified in the source will have to have write access for the database
selected.
When initiating a new view (by clicking the create link) you will need to select
composite view from the I want to author the view using drop down.
This view will contain the subset of data and the keys which you will use to join in
your composite view.
Build these views through the normal view builder process and save the views to your
database. Ensure that the columns you wish to join on are included in the views you
create.
If you do not create initial views then you will have to use the Virtual Table builder
and write SQL when creating your composite view.
Note: All metadata applied to your baseline views will be applied in your composite
view.
Once you have initiated your composite view you will be able to join multiple Yellowfin
views together and also create virtual tables for freehand SQL queries against each
of your data sources. The process of creating a composite view is similar to the
standard drag and drop view builder. You will select views, define joins and select
the columns you wish to make available to your end users.
Choose views you wish to join. If you have already created a set of views for the
source systems you wish to connect then you will see these in the left hand database
tables list in the appropriate source system folder. You can treat these as normal
tables and join them as you would a standard view.
If you do not have the data you wish already defined in a pre-existing view then you
can create a virtual table. The virtual table popup will prompt you to specify which
source system you are connecting to.
In the example below the virtual table SQL has an additional drop down for the source
system. You will need to specify the source system for any freehand SQL statements
that you wish to generate.
Note: that for any aggregations used such as sums etc you will have to follow the
aggregate function with an as Column Name statement so that Yellowfin can
generate a valid column name.
The view will be refreshed by default on a daily basis at 12 midnight. You can change
the schedule based upon your specific needs.
In the view summary you can preview data created by your view by navigating to the
Data Tab and populating the view. If you fail to do this no data will be returned in
your report until the first cycle of the schedule has run.
1. Go to the Data tab and click on the Populate Data Now link.
2. You will now be told the view is being populated, click Refresh Page to view the
data. If you have a large amount of data this may take some time to complete.
3. Once the population is complete you will see a preview of the data your view will
return.
The security of your reports is managed at the category and subcategory level, not at
the individual item level. The purpose of this is to simplify the creation of reports in
the system.
For Example Rather than having to specify who is allow to see a specific report each
time you create a new report the security for the item is inherited from the
subcategory of the report that is created.
This section explains how your report are organised and how to setup the security on
the various content categories.
Reports are managed on a two level hierarchy of Category and Sub category, with
individual reports attached to a subcategory.
The purpose of this is to allow you to define the way in which your reports are
accessed by your users. It is critical that you carefully consider how your report
taxonomy is to be implemented.
An important part of the report management process is the creation of you report
taxonomy. Taxonomy is how you categorise and define the information you wish to
publish. It is used to help people find and search across all reports in your repository.
Imagine a "Creatures of the World" web site. It may have a taxonomy like this...
Animals
o Vertebrates
Mammals
Birds
Fish
Reptiles
o Invertebrates
Arthropoda
Insects
Already you may be thinking, I wouldn't have organized the Creatures like that, my
users need to access them like this...
World
o Seas
o Land
Making a Taxonomy for your company or area of expertise can be very difficult.
However, the context of information usage in your company will determine the most
appropriate form of taxonomy to implement.
To access a list of all your report categories click on the Report Categories link from
the Administration Panel. This will open a page containing all your report categories.
Your secure categories and your default draft folder are highlighted by the use of
icons on the left hand side.
By deleting a category it will no longer be available for user to attach reports into.
1. Select the category that you wish to delete by ticking the associated check box
2. Click the delete link and the category will be deleted. If the category is already
in use you will not be able to delete it.
2. Select the Category or Subcategory Level. In your hierarchy of content you must
first create a category level before you create its associated sub-categories.
If a subcategory has been chosen you will have to choose a category to link the
subcategory to. In the example below the subcategory is being linked to the
Content Category created previously.
3. Complete the short description as it will be displayed on the side navigation for
content, and associated drop downs.
Note: if you leave the category in DRAFT mode users will not be able to access
reports or create reports for this category.
The draft report category is used to store reports in DRAFT mode for all users. The
purpose of defining a draft category is to assist users to manage their DRAFT reports.
This will be the default category where reports are saved. A user can still save
DRAFT reports into the folder of their choice.
In the report Category edit page the Publish Access and Approvals section allows
you to determine which users can publish public reports to the category.
a. If you select Users with Functional Access then all users with the public report
function can write to this folder
b. If you select a person or expert group then only specified users can publish
reports into that folder. If a user does not have access to publish to that folder
the report will be routed to an Export for approval.
Note: See Chapter 2 Security, Audit & Approvals for more information on the Report
Approval process.
One option available within Yellowfin is the ability to maintain previous instances of a
report. This is known as a management information report. When a user selects
this option not only is the report definition saved but the data as well. This allows
users to view previous versions of the report and compare result sets.
All versions of the report data are stored in the Yellowfin Database. As the
administrator you can determine how much history and the maximum size of reports
you wish to save. This is an application management process that permits you to
control the use of your infrastructure.
Version History The version history allows you to store the data returned in a report.
If version history is not set to YES then every time a report is viewed
a new set of data will be returned from the data source.
Max Size The maximum size for data to be saved in cache or in the database
where version history is required.
Max Items The maximum number of items to be displayed on the history drop
Displayed down list for management information reports.
Delete Period After what period of time should archived reports be deleted
You can secure your categories to restrict users access to the report writing and view
capability for the selected category. The options for setting the security are as
follows:
2. Secure (users will have to logon before being able to view the content but all
users of your site will be able to view it).
3. Access Security Level required only selected users will be able to access this
content.
If you choose to secure the category then you must select a person or group and then
the level of access that they are permitted. Three types of access exist:
Read Users will only be able to read the content but not create new items of
this type of content.
Edit & Update If a content item exists a user will be able to edit and update an existing
piece of content but not create new or delete items in this category.
They will also be able to read all content in this category.
Delete Users with delete access will be able to read, edit, create and delete
content of this type. You must have at least one person with delete
access.
Tip If you want all your users to be able to read the item make sure you
have a group created with all your users. Use this group for read
access.
When you have selected a person, and or a group click add to add them to the
access list. You can have as many groups and people in the list as you wish. You
cannot finish the process if you do not have at least one person or group with delete
access. Select a person with delete access to finish.
Access to Yellowfin is based on users existing within the system. Through the
Administration Panel administrators can create, edit and delete users within the
application.
The user list provides you with the ability to browse all the users within the system.
To access this list click the User Management link on the Administration Panel. This
will open a new page a display a list of all users.
If you have many users and you want to find a specific user you may have to use the
search facility or use the forward and previous links to browse the list.
1. Type in the users first or last name (filter by role drop down) and click the GO
button.
1. To create a new user click the create new user link on the Administration Panel
or the add link on the User List page.
2. This will open a new user form. Complete the form by filling in their name, email
address, time zone, allocate a role and provide a password this will be changed
the first time they login.
If a user forgets their password as the administrator you can change it. Open their
profile through the user management section.
If the role a person has a large number of permissions this could put you at risk if the
person should no longer have access.
1. To load you bulk users navigate to the manage users page. Below the list of your
users you will see the Bulk Import Link. Click this link to continue.
2. You users should be contained in a CSV format with data contained within
quotes. See the example below and on the screen for more detail. The file must
contain the following parameters:
First Name, Last Name, Initial, Salutation Code, Language Code, Time Zone
Code, Email Address, UserName, Password, Role Code
4. Click the Upload Data File to load and save your new users.
2. Select the person you wish to delete by ticking the check box and clicking the
delete link
Groups can be created and managed through the Administration Panel. Once a
group has been defined there are processes within Yellowfin that will automatically
maintain members of a group on a regular basis.
To delete a group so that it is no longer available for adding into reports and use for
security select the group you wish to delete, and click the delete link.
This will not physically delete the Group from the system since the group may be in
use. The status of the group will be changed so that it is no longer available for use.
2. Select the members you wish to add and click add to include them into the
members list. If you wish to specifically exclude a member tick Exclude from
the member control option.
To assign users to a group you will have to create member records. This is done by
deciding how members should be assigned. To assign members you can either add
in specific users or specific types of users. For example you could create a group
that includes all users with the role of Public Writer.
Role If you wish to select all users from a selected Yellowfin role such
as administrators then select role.
LDAP Group If you have configured your assess to use LDAP directories then
you will be able to select an LDAP group. Yellowfin will synchronise
with this group on a daily basis.
The member control allows you to determine if the user should be included or
excluded from the group. For Example you might want to include all Public Writers in
a group but exclude John Smith.
If a user is excluded from a group then this overrides any record from which they
might be included. The exclusion process is the last step of building the group
members.
The role list is accessible via the administration panel. As a default you will have a
number of pre-configured roles. These are listed below.
Administrator The Yellowfin Administration role has access to database and user
administration functions. These functions include managing users,
groups and other configuration parameters.
It also has all the report writing and reading access supplied by the other
roles below plus advanced functions, including:
Public Writer The Yellowfin Report Public writer has access for creating and editing
Public reports.
All users that are to publish reports for Public use must have the Public
Role to do so.
Report The Yellowfin Report Consumer can only read reports that have been
Consumer published to the Public repository.
Report Writer The Yellowfin Report Writer has access to favourites, a dashboard and
Private report creation.
3. You can choose to make this you default role. This means that every time you
add a new user this will be the default role they receive unless you choose to
allocate them a different one.
5. Some functions will require you to provide the appropriate CRUD functionality.
The acronym CRUD refers to all of the major functions that need to be
implemented. Each letter in the acronym can be mapped to a standard SQL
statement:
6. The last option you have in the role settings is to specify what columns should be
made available to users when viewing the report list.
7. Click Save when you have completed editing to make your role available.
Note: Yellowfin will do a function check to ensure you do not breach your license
agreement.
Function Description
General Permissions
Draft Report List Shows a list of draft reports on the user dashboard page
Allow users to access the discussion page and read, write, and
Discussion Admin delete comments
Dashboard Permissions
Public Dashboards CRUD Allows users to create and edit Public dashboards.
Hide Dashboard Maximise Report Hide the maximise option on dashboard reports
Hide Dashboard Report Menu Hide the drop-down menu on reports on the dashboard
Draft Public Reports Allow users to see draft versions of public reports created by
Hide Advanced Report Search Hide the advanced search on the report list page
Hide the columns option on the report list page. Users will not
Hide Columns Option (Report List) be able to change the columns displayed
Hide Report Details (Report List) Hide the report details on the report list page
Hide External Links Removes external direct links to reports and dashboards
Hide Report Details (Report Menu) Hide the report details item on the report menu
Configuration Permissions
Configure Support Email Allow users to set the support email address
Administration Permissions
Client Organisation Management Allow users to set up and manage client organisations.
Create and Edit Tags Allow users to create and edit tags used in discussions
Data Sources CRUD Allow users to create, edit, and delete data source connections
Database Views CRUD Allow users to create, edit, and delete Yellowfin views
Show Draft Views Allow users to see views being edited by other users
Hide DBMS Messages Replaces error messages from DBMS with generic messages
User Administration
Permissions
Disable profile email change Stops users from changing their email address in My Profile
User Management CRUD Allow users to create, edit, and delete user accounts
Group Management CRUD Allow users to create, edit, and delete user groups
Roles Management CRUD Allow users to create, edit, and delete security roles
The sections describes the process of importing and exporting these components into
Note: When exporting definitions from Yellowfin there are certain limitations. You
cannot export security settings for categories, source systems or views. These will
have to be reset when importing them into the new instance of Yellowfin Source filter
information will be exported but only if it is a scheduled SQL query. Manual records
and data file records will not be exported.
If you are using the import and export functions to migrate Yellowfin across platforms
then you will have to be cognisant of hard coded platform SQL. Examples of this may
occur if you have:
Yellowfin cannot test for these SQL anomalies and you should test your import and
export processes across platforms in your test environment prior to migrating into
production.
a. From the drop down menu choose the item type (source system, categories,
views etc). Based on your selection you will be presented with a list of items
to choose from.
b. Select those items you wish to export and click the add button to add
selected items to the list. Click next to continue.
Select those items you wish to include in the export process and click add to add
them to the list.
5. You will be prompted to save the file to your local drive. Save the file onto your
local file server for later use.
2. Select the exported XML file from your file server by clicking the browse button
and using the file upload form to select the appropriate file. Click next to
continue.
3. Yellowfin will now display each element in the import file on the right hand side of
your screen and provide you import options in the central form on your screen.
You can choose to import or skip any item in the import file. If you skip
dependent items such as a data source for a report then Yellowfin will prompt you
to select the appropriate substitutes for those specific items.
Choose your import options for each item and click next to navigate through all
the items in the file till you get to the summary page.
4. On the summary page if all items have been processed correctly you can click
import to import these.
If an error has been detected with a report Yellowfin will display an error
message. You can however continue to import the file regardless of the error and
then manually update the file from within Yellowfin.
To access the schedule list go to Administration > Manage Schedules. Click the
manage schedule link.
By clicking on the expand icon next to a task, you can view its schedule details.
To edit a schedule simply click on the Edit Schedule link on the task and make the
changes you require. When finished, click the Save link to commit your changes.
From the list of scheduled items select the ones you want to delete and click the
Delete link.
1. Click the Add link to open the add new image page.
2. Type in the name and description of the image you wish to load and select
Image from the drop down.
3. The page will now display the browse and upload section. Browse for your image
file and click the upload link to load the image to the server.
4. The image thumbnail will now be displayed. Click save to save your changes and
return to the list.
Now that the image has been loaded when creating a chart you will see on the
background options drop down the ability to add images to the chart.
The raster maps can be used for any type of location reporting not just geographic
maps. For example you could use these for:
1. Floor Plans
3. Network Maps
4. Country Maps
With each zone of your map identified by a unique colour you need to link these
zones to a specific value. These values are defined as reference codes.
With each zone defined by colour and linked to a reference code Yellowfin will be
able to substitute the values into the map.
1. To load a Raster Map Image ensure that your image has unique colour for every
region required.
2. Ensure that you have reference code setup for your map data. E.g. For the
example in Yellowfin you have a country reference code defined by ISO code.
These ISO codes will be linked to each zone.
3. Similar to loading an image click the add link, provide a name and select map
type.
4. You will now see a Map details section. For a basic Map you can leave the
reference type as None.
5. In the layer section you will have to load the actual image you want to use. Maps
support multiple layers for the same map. For example you could have a layer
for country or region which uses the same world outline.
a. On the layer choose the name and description for the image layer that you
are loading
d. Choose the zone reference type. This is used to link the zones to specific
reference code values.
1. Select the map style chart option and image map from the chart selection list.
2. Complete the map details e.g. select the map you want to use, the layer, and
the label (which is the data from your report containing the appropriate reference
codes) and click refresh.
1. To load a WMS Layer go to the Images and Maps link in Administration. Select
the WMS Layer image type and enter the server details as per your WMS server.
Click the Load Layers link to view all the WMS layers on the server.
2. You should now have a list of layers that you can preview and save by selecting
the checkbox next to a layer and then clicking the Preview and Save links.
3. Once saved, you should then see the WMS layer listed on your Images and Maps
list.
2. You will then see the Layer popup window, from which you can select your WMS
Layer and click Add.
1. Analytic Functions These are used to transform results and apply post
processing after the initial query result set has been
returned to the server. Functions examples included with
Yellowfin include Top 10, % of Total, Running Sum etc.
The functions are database independent since they are
calculated by the Java code. These functions are applied
by the user at the report building stage.
2. Custom Functions Custom functions are functions that are hand designed
and that are stored in XML format on the Yellowfin server.
These functions usually consist of advanced SQL
functions that cannot be generated by the formula builder.
The XML schema allows for the custom defined SQL
functions to have parameters embedded so that numeric
or column values can be assigned when the column is
inserted into a report.
3. Data Format The Yellowfin application has the ability to format different
data types based on a user-defined java class. This
allows for parsing the returned database value and
transforming it into another format. For example you can
choose how you render values from your database such
as dates, currencies etc.
The Analytical Function Interface consists of the following methods that must be
implemented in a custom Analytical Function class.
String Name()
String Description()
String ColumnPrefix()
This returns the text that precedes a column when displayed on a report. It may be
Percentage of , Total of .
String Category()
This returns the text that will group this function with other functions with the same
Category. This is used to group functions on the Yellowfin user interface. If Category()
is not implemented the function will be placed in the Other group.
This Setup function allows Yellowfin to determine what the Analytical Function is
capable of. By default the Analytical Function will not be available to any column data
types. The Analytical Function has to be explicitly enabled to be compatible with a
specific data type (either Numeric, Text or Date data types). Enable these by calling
the following instructions.
acceptsNumeric(boolean);
acceptsText(boolean);
acceptsDate(Boolean);
It is possible for the Analytical Function to accept more than one data type.
The Analytical Function will assume that the return value is the same as the original
data type. However this can be set manually using:
returnType(int returnType);
TYPE_UNKNOWN = 0;
TYPE_TEXT = 1;
TYPE_NUMERIC= 2;
TYPE_DATETIME = 3;
TYPE_PERCENTAGE = 4;
TYPE_INTEGER = 5;
TYPE_CURRENCY = 6;
If the Analytical Function is relies on the order of the data, ie a running total or running
percentage, you will need to set the order dependent flag. This will tell Yellowfin that
the column needs to be recalculated if any of the other columns in the report are
sorted. The function to call is:
orderDependent(boolean);
By default the analytical function will allow the column to have the following SQL
aggregations applied: SUM, COUNT, MIN, MAX and AVG. If it is not logical for your
Analytical Function to allow these aggregations they can be toggled individually using
the following functions from within the Setup function.
handleAverage(boolean);
handleMaximum(boolean);
handleMinimum(boolean);
handleCount(boolean);
The Analytical Functions can also accept parameters. These are also defined in the
setup routine.
Use AnalyticalParameter.PARAMETER_VALUE or
AnalyticalParameter.PARAMETER_FIELD.
fieldType defines the type of parameter. This defines the type of fields that will be
allowed to be assigned to this parameter if the parameter is defined as a field.
fieldType can be:
TYPE_UNKNOWN = 0;
TYPE_TEXT = 1;
TYPE_NUMERIC= 2;
TYPE_DATETIME = 3;
TYPE_PERCENTAGE = 4;
TYPE_INTEGER = 5;
TYPE_CURRENCY = 6;
TYPE_BOOLEAN = 7;
mandatory is a flag that defines whether the parameter is required or not. The
Yellowfin User Interface will validate that this field is assigned before letting the user
proceed.
defaultValue is an object that will be assigned to the parameter by default. This can
be null.
getValue(String parameterName)
If the parameter references a field, the getValue() function will return a Object array
containing the entire column of data.
This function is used for pre-computing values vertically on the selected column. You
will need this if you a generating data based on the entire columns data, such as a
running total or percentage of total. The function parameter is an Object array of all of
the data in the selected column.
This function is called for each row in the dataset. This function will return the data
that you would like to replace the existing data with. The parameters are rowNumber
and value. The value is a java Object containing the original valueger and the
rowNumber is an integer representing the values index in the original dataset. If you
would like to remove rows from the dataset you can call the remove(rowNumber)
function that will flag the row to be removed from the resulting dataset.
There is a development library with the classes required for creating Analytical
Functions. This library is called i4-devel.jar. This will allow you to compile your class
file without having to include all the Yellowfin libraries in your classpath.
<custom-functions>
Most senior hierarchical object, encapsulates entire document. Only has one allow
child type, <function>.
<function>
This defines a unique function, and encapsulates the data fields needed to define it.
Child objects include <name>, <argument>, <sql>, <return> and <aggregate>.
<name>
Name defines the display name of the custom function within the application. It is the
primary identifier for each of the custom function, therefore the names of each
function must be unique. Each function can only have one name only.
<argument>
Argument defines an argument (or parameter) that can be inserted into the custom
SQL at report design time. Arguments are defined by 3 attributes, <index>, <name>
and <datatype>.
<index>
The index parameter of argument uniquely identifies the argument in the context of
the function and must be an integral positive value. The index is used for inserting the
<name>
The name parameter of argument is the display name for the argument in the
application.
<datatype>
The datatype parameter of argument defines the datatype of the argument. This
allows the application to only allow compatible columns and values to be entered into
this argument. Datatype must be one of numeric, text or datetime.
<sql>
Sql defines the actual database SQL statement to be made for this custom function.
The SQL in this field will be inserted into a parent SQL statement as a single column,
so a full SELECT FROM WHERE is not required and therefore the SQL must be
compatible with single column syntax. See the example below for a simple CASE
WHEN ELSE END example of a single column custom function. This SQL can also
contain variables where arguments should be inserted. $1 will be replaced with the
column or data value assigned to the argument with index 1.
<aggregate>
The aggregate parameter defines which columns are aggregated within the custom
function. This tells the application to not place these columns in the GROUP BY
clause when generating the report SQL. The value of the aggregate parameter can
also be a argument variable, for instance $1 for the argument with index 1.
<groupby>
The group by parameter defines which columns should be inserted into the GROUP
BY clause when the application is generating the report SQL. The value of the
groupby parameter can also be a argument variable, for instance $1 for the
argument with index 1.
The return function defines the data type of the information that is returned by the
entire custom function. This must be one of numeric, text or datetime.
2. Once these have been added into the directory you will need to restart Yellowfin
for these to become available.
Developers can create their own formatter class that extends the class:
com.hof.mi.interfaces.CustomFormatter
See Appendix A for the full source of this class.
This method returns a display name for your formatter. This is the name that is
displayed to the user when choosing a formatter. Example:
This method determines which native data types can be handled by this formatter.
The available native types are defined in the super class of CustomFormatter:
Your class should return true for types that it supports, and false otherwise. Example:
publicbooleanacceptsNativeType(int type) {
// we accept text and numeric data
if (type == TYPE_TEXT || type == TYPE_NUMERIC) {
return true;
} else {
// dont allow any other types
return false;
}
}
Another example:
publicbooleanacceptsNativeType(int type) {
// we can handle any type
return true;
}
This method renders a single value. The renderType argument determines which
output type we are rendering for:
Example:
if (renderType == RENDER_LINK) {
// Render the value for a drill-through link.
// In this case we almost always want to return a generic
// representation of the value.
returnvalue.toString();
}
The renderType parameter gives you a hint as to how to display the value. When
outputting to document formats such as PDF/XLS, the RENDER_TEXT type is used.
In some cases you may want to return a HTML string from your formatter. This may
be useful to customise the displayed text (eg. with embedded bold/italic tags), or
present a link. This can be achieved by overriding the method:
publicbooleanreturnsHtml() {
return false;
}
By default, this method returns false, indicating that any HTML entities in the
formatted values should be escaped when outputting to HTML. By overriding this to
return true, Yellowfin will not do any HTML escaping. An example of a formatter that
includes HTML output:
publicbooleanreturnsHtml() {
return true;
}
if (renderType == RENDER_LINK) {
returnvalue.toString();
} else if (renderType == RENDER_HTML) {
return <b> + value.toString() + </b>;
} else {
// rendering to non-html output
returnvalue.toString();
}
}
See Appendix B for a full example of a custom formatter that takes a numeric value,
and formats it as a currency value.
i4-core.jar
i4-mi.jar
These are located in the WEB-INF/lib/ directory within the Yellowfin webapp in a
standard installation this is at:
Yellowfin/appserver/webapps/ROOT/WEB-INF/lib/
Once you have compiled your custom formatter to use with Yellowfin, it must be
packaged in a jar file along with a service descriptor file. The service descriptor file is
named com.hof.mi.interfaces.CustomFormatter and is a text file containing the full
classname of your formatter. This must be located in the META-INF/services/
directory inside the jar file.
Using the example formatter from Appendix B, the contents of the jar file should look
like this:
META-INF/services/com.hof.mi.interfaces.CustomFormatter
com/example/formatters/CurrencyFormatter.class
Your jar file can contain multiple custom formatter classes. In this case, each
formatters full classname should be included on a separate line in the service
descriptor file.
The jar file should be copied into Yellowfins WEB-INF/lib/ directory, and Yellowfin
must be restarted to pick up the new formatter. You should then be able to select the
formatter for columns of the appropriate data types:
/**
* Base class for Custom Formatters<br/>
* Copyright (c) 2007 Heaps of Flavour Pty Ltd<br/>
*/
/**
* Returns the display name for this custom formatter
* @return name
*/
public abstract String getName();
/**
* Returns true if this custom formatter accepts the given
native type.
* @param type the data type to check
* @return true/false
*/
public abstract boolean acceptsNativeType(int type);
/**
* Returns whether or not the value returned from this
formatter
* includes html code. If this returns false, a String value
* will have any html entities parsed before output.
* @return true/false
*/
public boolean returnsHtml() {
return false;
}
/**
* Method to render a value using this custom defined
datatype format.
* This is called internally when the report is rendered.
package com.example.formatters;
import com.hof.mi.interfaces.CustomFormatter;
import java.text.*;