Teradata AppCenter User Guide
விளம்பரம்
விளம்பரம்
AppCenter
User Guide
Release Number AP6.00
Product ID: B700-3000-600K
June 2015
The product or products described in this book are licensed products of Teradata Corporation or its affiliates.
Teradata, Active Data Warehousing, Active Enterprise Intelligence, Applications-Within, Aprimo Marketing Studio, Aster, BYNET, Claraview,
DecisionCast, Gridscale, MyCommerce, QueryGrid, SQL-MapReduce, Teradata Decision Experts, "Teradata Labs" logo, Teradata ServiceConnect,
Teradata Source Experts, WebAnalyst, and Xkoto are trademarks or registered trademarks of Teradata Corporation or its affiliates in the United
States and other countries.
Adaptec and SCSISelect are trademarks or registered trademarks of Adaptec, Inc.
AMD Opteron and Opteron are trademarks of Advanced Micro Devices, Inc.
Apache, Apache Avro, Apache Hadoop, Apache Hive, Hadoop, and the yellow elephant logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries.
Apple, Mac, and OS X all are registered trademarks of Apple Inc.
Axeda is a registered trademark of Axeda Corporation. Axeda Agents, Axeda Applications, Axeda Policy Manager, Axeda Enterprise, Axeda Access,
Axeda Software Management, Axeda Service, Axeda ServiceLink, and Firewall-Friendly are trademarks and Maximum Results and Maximum
Support are servicemarks of Axeda Corporation.
Data Domain, EMC, PowerPath, SRDF, and Symmetrix are registered trademarks of EMC Corporation.
GoldenGate is a trademark of Oracle.
Hewlett-Packard and HP are registered trademarks of Hewlett-Packard Company.
Hortonworks, the Hortonworks logo and other Hortonworks trademarks are trademarks of Hortonworks Inc. in the United States and other countries.
Intel, Pentium, and XEON are registered trademarks of Intel Corporation.
IBM, CICS, RACF, Tivoli, and z/OS are registered trademarks of International Business Machines Corporation.
Linux is a registered trademark of Linus Torvalds.
LSI is a registered trademark of LSI Corporation.
Microsoft, Active Directory, Windows, Windows NT, and Windows Server are registered trademarks of Microsoft Corporation in the United States and other countries.
NetVault is a trademark or registered trademark of Dell Inc. in the United States and/or other countries.
Novell and SUSE are registered trademarks of Novell, Inc., in the United States and other countries.
Oracle, Java, and Solaris are registered trademarks of Oracle and/or its affiliates.
QLogic and SANbox are trademarks or registered trademarks of QLogic Corporation.
Quantum and the Quantum logo are trademarks of Quantum Corporation, registered in the U.S.A. and other countries.
Red Hat is a trademark of Red Hat, Inc., registered in the U.S. and other countries. Used under license.
SAP is the trademark or registered trademark of SAP AG in Germany and in several other countries.
SAS and SAS/C are trademarks or registered trademarks of SAS Institute Inc.
SPARC is a registered trademark of SPARC International, Inc.
Symantec, NetBackup, and VERITAS are trademarks or registered trademarks of Symantec Corporation or its affiliates in the United States and other countries.
Unicode is a registered trademark of Unicode, Inc. in the United States and other countries.
UNIX is a registered trademark of The Open Group in the United States and other countries.
Other product and company names mentioned herein may be the trademarks of their respective owners.
T
HE INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED ON AN
"
AS
-
IS
"
BASIS
,
WITHOUT WARRANTY OF ANY KIND
,
EITHER
EXPRESS OR IMPLIED
,
INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY
,
FITNESS FOR A PARTICULAR PURPOSE
,
OR
NON-INFRINGEMENT
. S
OME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES
,
SO THE ABOVE EXCLUSION
MAY NOT APPLY TO YOU
. I
N NO EVENT WILL
T
ERADATA
C
ORPORATION BE LIABLE FOR ANY INDIRECT
,
DIRECT
,
SPECIAL
,
INCIDENTAL
,
OR CONSEQUENTIAL DAMAGES
,
INCLUDING LOST PROFITS OR LOST SAVINGS
,
EVEN IF EXPRESSLY ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES
.
The information contained in this document may contain references or cross-references to features, functions, products, or services that are not announced or available in your country. Such references do not imply that Teradata Corporation intends to announce such features, functions, products, or services in your country. Please consult your local Teradata Corporation representative for those features, functions, products, or services available in your country.
Information contained in this document may contain technical inaccuracies or typographical errors. Information may be changed or updated without notice. Teradata Corporation may also make improvements or changes in the products or services described in this information at any time without notice.
To maintain the quality of our products and services, we would like your comments on the accuracy, clarity, organization, and value of this document.
Please email: [email protected].
Any comments or materials (collectively referred to as "Feedback") sent to Teradata Corporation will be deemed non-confidential. Teradata
Corporation will have no obligation of any kind with respect to Feedback and will be free to use, reproduce, disclose, exhibit, display, transform, create derivative works of, and distribute the Feedback and derivative works thereof without limitation on a royalty-free basis. Further, Teradata
Corporation will be free to use any ideas, concepts, know-how, or techniques contained in such Feedback for any purpose whatsoever, including developing, manufacturing, or marketing products or services incorporating Feedback.
Copyright © 2000-2015 by Teradata Corporation. All Rights Reserved.
Table of Contents
Preface
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Chapter 1: Introduction to AppCenter
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
AppCenter User Guide
Chapter 2: Installing and Setting Up AppCenter
. . . . . . . . . . . . . . . 19
3
4
Occasional or One-Time Tasks of the AppCenter Administrator . . . . . . . . . . . . . . . . 31
AppCenter User Guide
AppCenter User Guide
Chapter 3: Developing and Setting Up Apps
. . . . . . . . . . . . . . . . . . . . . 61
Modifying App Attributes in App Builder and Updating Eclipse Project . . . . . . . . . 134
5
6
Chapter 4: Using AppCenter
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
AppCenter User Guide
AppCenter User Guide
Chapter 5: AppCenter Data Visualizations
. . . . . . . . . . . . . . . . . . . . . . 175
7
8
How to Associate the App Result Data with the Data Visualization Plugin . . . . . . . . . . 233
Example of Creating a New Visualization Plugin for a Hierarchical Data Structure . . . 234
Using the App Builder for Bundling a new Data Visualization Plugin with an App. 240
Chapter 6: Integrating AppCenter with
External Software
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Appendix A:
Visualizer Function Specification
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
AppCenter User Guide
AppCenter User Guide
Appendix B:
Open-Source Software
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
9
10 AppCenter User Guide
Preface
About This Guide
This guide describes how to install and use AppCenter.
Related Documentation
Additional Aster Database documentation:
• Aster Database upgrades, clients and other packages: http://downloads.teradata.com/download/tools
• Documentation for existing customers with a Teradata @ Your Service login: http://tays.teradata.com/
• Documentation that is available to the public: http://www.info.teradata.com/
Conventions Used in This Guide
This document assumes that the reader is familiar with Windows, Linux/UNIX, and SQL environments.
This document uses the following typographical conventions:
•
•
•
Command Shell Text Conventions
Typefaces
Command line input and output, commands, program code, filenames, directory names, and system variables are shown in a monospaced font. Words in italics indicate an example or placeholder value that you must replace with a real value. Bold type is intended to draw your
AppCenter User Guide 11
Contact Teradata Global Technical Support (GTS) attention to important or changed items. Menu navigation and user interface elements are shown using the
User Interface Command font.
SQL Text Conventions
In the SQL synopsis sections, we follow these conventions:
• Square brackets ([ and ]) indicate one or more optional items.
• Curly braces ({ and }) indicate that you must choose an item from the list inside the braces. Choices are separated by vertical lines (|).
• An ellipsis (...) means the preceding element can be repeated.
• A comma and an ellipsis (, ...) means the preceding element can be repeated in a commaseparated list.
• In command line instructions, SQL commands and shell commands are typically written with no preceding prompt, but where needed the default Aster Database SQL prompt is shown: beehive=>
Command Shell Text Conventions
For shell commands, the prompt is usually shown. The
$ sign introduces a command that’s being run by a non-root user:
$ ls
The
# sign introduces a command that’s being run as root:
# ls
Contact Teradata Global Technical Support
(GTS)
For assistance and updated documentation, contact Teradata Global Technical Support
(GTS).
• Support Portal: http://tays.teradata.com/
• International:
212-444-0443
• U.S. Customers:
877-698-3282
• Toll-Free Number:
877-MyT-Data
12 AppCenter User Guide
About Teradata Aster
About Teradata Aster
Teradata Aster provides data management and advanced analytics for diverse and big data, enabling the powerful combination of cost-effective storage and ultra-fast analysis of relational and non-relational data. Teradata Aster is a division of Teradata and is headquartered in San Carlos, California.
For more information, go to: http://www.teradata.com/Teradata-Aster/overview/
About This Document
This is the “AppCenter User Guide,” version AP6.00, edition 1. This edition covers AppCenter version AP6.00 and was published June, 2015.
Product Safety Information
This document may contain information addressing product safety practices related to data or property damage, identified by the word Notice. A notice indicates a situation which, if not avoided, could result in damage to property, such as equipment or data, but not related to personal injury.
Example:
Notice:
Restoration temporarily places AppCenter in maintenance mode. While an app is being backed up, all users other than admin are logged out. Before restoring a backup, ensure other users are not logged in.
AppCenter User Guide 13
Product Safety Information
14 AppCenter User Guide
CHAPTER 1
Introduction to AppCenter
•
•
What is AppCenter?
AppCenter is a platform that enables developers to build, execute, and share Big-Data apps.
It enables non-technical people to run the apps, visually study the data, and share their insights with others.
What is an app?
An app is a composition of logic (SQL/SQL-MR/Java) and, optionally, a user interface and data visualizations that are composed to address a specific need or use case.
Examples:
• Import email files for analysis
• Analyze textual data for topics or sentiments
• Visualize social network data and highlight interesting network attributes
• Generate and display a list of customer phone numbers to call
Technically speaking, an app is a zip archive containing:
• XML file to describe the app
• a file containing SQL statements or java code
• an icon
Using the built-in AppBuilder wizard, developers can quickly define the App Name, Icon, User
Interface, and other attributes; then, they can define the logic of the app.
As a rule of thumb, apps leverage "in-database" functions. The app logic performs only remote calls that perform operations on a remote database (e.g., calling SQL-Map_reduce functions or other SQL statements). Apps are not expected to process data in the app logic itself. In the end, the app logic can generate a visualization of the data.
AppCenter User Guide 15
Introduction to AppCenter
Key Features at a Glance
Key Features at a Glance
• Collaborative, Web-based, Platform-Independent Portal
Apps can be organized into collections, shared with other users, and searched. Search app reports and organize them with tags, mark favorites, and group reports into libraries.
Share and view other users’ reports. (See
• User Interface Builder
For app developers, AppCenter includes an automatic user interface builder, and therefore requires no previous knowledge of user interface programming.
Easily convert any SQL script into a user-facing application with a graphical interface.
• Copying and Modifying Apps
AppCenter adds the unique capability of copying apps and quickly modifying the copies, right inside AppCenter as needed. (See
• Data Mapping
Configure an app to work with any data set through simple and quick data mapping (less than a handful of data tables per app).
• Scheduler
Built-in app scheduling and auto-repetition of app tasks. (See
• Advanced Data Visualizations
Visualize data in one of 14 interactive and innovative data visualizations. (See
• Plug and play" for New Visualization Types
The Plug-in Visualization API enables easy creation and installation of custom data visualizations without requiring any system down time. (See
• Full Access Control
Control users’ access to any given app or report.
Define default Access Control settings for each app and the app reports. (See
• Publishing Reports
Make app reports available to users who do not have access to AppCenter. (See
Configuring Publishing Settings .)
• Embedding Reports in External Portals with Auto Update
AppCenter supports the embedding of reports into external web portals. The embedded reports can be automatically updated whenever the app generates a new report. (See
Configuring Publishing Settings .)
16 AppCenter User Guide
AppCenter User Guide
Introduction to AppCenter
Key Features at a Glance
• Aster Lens Support
Simplified and enhanced support for Aster Lens catalogs. (See
.)
• A Visualizations Server
For integration with external tools and for those who want to generate visualizations from command line, AppCenter can serve as a visualization rendering web server.
No need to log into the AppCenter portal. Visualizations can be generated and displayed with a simple URL. (See
Integrating AppCenter with External Software .)
• Monitor any Running and Scheduled Tasks
(See
and
.)
• Statistics
Usage statistics on each app and database connection.
• LDAP and DB Account Integration
Leverage the existing user and group/role definitions from an Aster Database or the organization's Active Directory or LDAP server. (See
Configuring Authentication Settings .)
Access can be limited to a specific branch of the user directory.
Supports LDAPS.
• Customizable Look
Customizable and skinable. Apply any organization's logo and color scheme. (See
Customizing AppCenter Appearance .)
• Backup
Manual or Scheduled backup and restore with daily, weekly, and monthly schedules. (See
Configuring Backup Settings .)
• Logs
System log with verbosity control. (See
App log for each app. (See
• Open RESTful API
Full, open REST API enables users to control and operate AppCenter through web-service
RESTful calls, for the purpose of executing apps in a workflow, integrating with external tools, or even replacing the web portal entirely.
• Easy Installation
Simple and easy, step-by-step guided installation. Installable on a variety of Linux systems. Can be installed on a Virtual Machine for demo or development purposes.
Easily configurable through a web-based user interface. (See
.)
• Example Apps
Bundled example apps are usable out of the box, requiring only minimal data mapping, and can be modified as needed. (See
Configuring Input and Output Tables .)
17
Introduction to AppCenter
Key Features at a Glance
18 AppCenter User Guide
CHAPTER 2
Installing and
Setting Up AppCenter
•
•
Recommended System Configuration
•
•
•
•
•
•
•
Managing Users and Access Rights
•
Configuring AppCenter Settings
•
•
•
Installation Considerations
AppCenter can be installed on various Linux systems. AppCenter response time depends on the hardware and the response time of the Aster Database with which AppCenter is configured to work.
When apps are executed, they trigger operations (tasks) on the Aster Database. The time it takes for operations to complete and the number of concurrently running operations are affected by the following factors:
• Aster Database hardware and configuration
• Type and amount of data being processed
• Availability of the Aster Database if used for purposes other than AppCenter
• Nature of the operation
AppCenter User Guide 19
Installing and Setting Up AppCenter
Recommended System Configuration
Visualization display time will be impacted primarily by network speed, the hardware configuration of the system displaying the report, how busy or available the system is, and the amount of the data to be displayed.
in the
Recommended System Configuration
section identifies the recommended configuration.
Recommended System Configuration
Use this configuration as a guide, and consider a faster CPU and RAM if AppCenter needs to support a larger number of concurrent browsing requests. If the length of the app operations and concurrency need to be enhanced, consider additional or faster Aster clusters.
Table 2 - 1: System Configuration
System Configuration
Production System (AppCenter installed on an Aster Database Appliance4 Queen configuration)
•
CPU:
2 CPU x 10 cores each, at 2.5 GHz
•
RAM
: 256GB
•
Network Cards
: 2 network cards (10Gb each)
Supported Operating Systems
AppCenter version 6.00 supports the following operating systems:
• SLES 11 SP1
• SLES 11 SP2
• Red Hat Linux 6.4
• Red Hat Linux 6.5
Supported Browsers
AppCenter version 6.00 supports the following browsers:
• Microsoft Internet Explorer (IE) version 11
• Google Chrome version 39
• Mozilla Firefox version 34
Tablet Support
AppCenter supports Apple Safari and Google Chrome browsers on Apple iPad Air.
20 AppCenter User Guide
Installing and Setting Up AppCenter
Ports Used by AppCenter
Ports Used by AppCenter
lists the ports used by AppCenter when installing AppCenter on an Aster (backup)
Queen, and on any other (non-queen) system.
Before running AppCenter, make sure that these ports are not blocked by other applications.
Table 2 - 2: Ports used by AppCenter
Process
HTTP
Queen Non Queen Protocol
10 80 HTTP
Tomcat
Tomcat
Postgres
6625
Aster jdbc
444
8185
8184
2406
443
8009
8005
6625
2406
HTTPS
All unencrypted (HTTP) requests are automatically routed to a secure port.
AJP connector port
Shutdown port
Aster JDBC connection
Files appserver/webserver/apache2/ conf/httpd.conf
appserver/webserver/apache2/ conf/jk.conf [for redirection] appserver/webserver/apache2/ conf/extra/httpd-ssl.conf [for listening] appserver/tomcat/current/ conf/server.xml [for proxy port] appserver/tomcat/current/ conf/server.xml [tomcat end of AJP channel] appserver/webserver/apache2/ conf/httpd.conf.d/ mod_jk_workers.properties
[apache end of AJP channel] appserver/tomcat/current/ conf/server.xml
/data/appserver/conf/ appserver.properties
aster-jdc.properties
AppCenter User Guide 21
Installing and Setting Up AppCenter
Installing AppCenter
Installing AppCenter
•
Obtaining the Installation Package
•
Creating Directories on the Target System before Installation
•
Installing AppCenter on a Clean System
•
Setting Up Example Apps and Example Data
•
•
Installing AppCenter on an Aster Backup Queen
•
Installing a Security Certificate
•
Installing AppCenter on a RedHat System
Obtaining the Installation Package
Obtain the AppCenter Installer package from Teradata Aster. The name of the installer package is:
AppCenter-Installer-6.00.00.00.run
.
Creating Directories on the Target System before Installation
Before installing AppCenter, create the following directories on the target system:.
Table 2 - 3: Pre-Installation Directories
Directory
/tmp
/data
Description
Used during installation.
In addition to the AppCenter installation directory, AppCenter creates the directories
/appserver and
/appserver-backup inside
/data for storing runtime and configuration information
.
We recommend that you set up the
/data directory in advance, on a partition separate from the system partition.
22 AppCenter User Guide
Installing AppCenter on a Clean System
Tip:
The installation requires root access. Use the sudo command when needed.
Installing and Setting Up AppCenter
Installing AppCenter
5
6
2
3
After the directories have been created on the target system as described in
following to install AppCenter on a clean and dedicated Linux node:
1
On the Aster Database cluster on which you plan to store visualization data, install Aster
Analytics Foundation 5.10 or higher.
Copy
AppCenter-Installer-6.00.00.00.run
to your system.
Make the
AppCenter-Installer-6.00.00.00.run
package executable.
4
7
#
sudo chmod +x AppCenter-Installer-6.00.00.00.run
Run
AppCenter-Installer-6.00.00.00.run
as root:
#
sudo ./AppCenter-Installer-6.00.00.00.run
---------------------------------------------------------------------
Welcome to the AppCenter 6.0 Setup Wizard.
---------------------------------------------------------------------
Please read the following License Agreement. You must accept the terms of this agreement before continuing with the installation.
...
Follow the installation instructions to install AppCenter.
Enter y to accept the license agreement.
...
Do you accept this license? [y/n]: y
---------------------------------------------------------------------
Do one of the following:
• Press enter to install AppCenter in the default directory.
OR
• Type the full path of any other directory name where the directory
/appserver should be created, containing AppCenter binaries and utility scripts.
...
This is where AppCenter will be installed [/opt/teradata]:
---------------------------------------------------------------------
Tip:
In addition to this directory, AppCenter also creates /appserver and /appserver-backup directories inside /data, for storing runtime and configuration information. We recommend that you set up the /data directory in advance, on a partition separate from the system partition.
AppCenter User Guide 23
Installing and Setting Up AppCenter
Installing AppCenter
8
When prompted, enter the admin password twice.
Password must be 8-16 characters long and only use upper case, lower case, numbers or these special (!, @, #, %, *) characters.
AppCenter Admin Password :
Please re-enter the password :
---------------------------------------------------------------------
Setup is now ready to begin installing AppCenter 6.0 on your computer.
9
When prompted, enter y to continue installation.
Do you want to continue? [Y/n]: Y
---------------------------------------------------------------------
Please wait while Setup installs AppCenter 6.0 on your computer.
Installing
0% ______________ 50% ______________ 100%
########################################Info: The AppCenter is now running on <host>:10. Point your browser to address of this host to view AppCenter
Press [Enter] to continue :
#
---------------------------------------------------------------------
Setup has finished installing Appserver 6.0 on your computer.
View Readme file? [Y/n]: n
Tip:
You can change the password in the AppCenter GUI or by running the /opt/teradata/appserver/ set_appserver_admin_password.sh script.
10
To access the AppCenter web-based GUI, open a supported browser on a client system
(listed in the section
) and the following URL in the URL field:
<ip_address_of_AppCenter>
The AppCenter login screen appears.
In some cases, you must specify the port number (10):
11
<ip_address_of_AppCenter>:10
To log into AppCenter, enter admin in the Username field and the password you during installation.
Tip:
The installation log file is located in the /tmp directory (/tmp/install.log).
24 AppCenter User Guide
After successful login, the AppCenter home page appears.
Figure 2 - 1: AppCenter Home Page
Installing and Setting Up AppCenter
Installing AppCenter
Setting Up Example Apps and Example Data
After AppCenter installation is complete, we recommend that you install example apps to become familiar with developing new apps. Obtain the example apps bundle from Teradata, and follow the instructions included.
Upgrading from Aster Lens
Aster Lens is Teradata Aster's data visualization portal released in 2013.
AppCenter 6.0 is the evolution of Aster Lens. AppCenter provides all functionality available with Aster Lens, and much more. (See
.)
Aster Lens and AppCenter can run in parallel, and both can access the same Aster Database; however, they cannot be installed and run on the same system.
If you have Aster Lens installed, we recommend that you upgrade to AppCenter. The upgrade process is managed automatically by the AppCenter installer.
AppCenter User Guide 25
Installing and Setting Up AppCenter
Installing AppCenter
When installing AppCenter on a system that already has Aster Lens installed, the AppCenter installer will offer to perform the upgrade.
Note:
Because data visualizations are stored on the Aster Database, they will remain untouched during the upgrade, and you will just need to register these visualization tables with AppCenter as described in this section.
During installation, AppCenter will attempt to automatically transfer the Aster Lens configuration to AppCenter. If this fails, you can find the saved Aster Lens configuration file in the following location:
/opt/AsterLensConfigurations/asterlens.properties-backup-during-upgrade
You can manually enter the Aster Lens configuration into AppCenter.
Aster Lens uses catalog tables to keep track of tables containing visualization data. You can continue adding and managing these catalogs in AppCenter, as described in the section,
Adding Visualization Catalogs .
If you have been using Aster Lens with the cFilterViz and nPathViz functions for generating data visualizations, these functions are still supported by AppCenter; however, we recommend that you use the new and more powerful AppCenter function "Visualizer," which is described in the chapter
.
The following steps summarize the use of the Visualizer function:
1
Create a catalog table to enable AppCenter to know of tables that contain visualizations.
create table
my_catalog
(id bigint, schema_name varchar, table_name varchar, category_name varchar) distribute by hash(id);
2
3
4
Create a table to store visualizations.
create table my_visuals
(id bigint, json varchar) distribute by hash(id);
Register the visualizations table in the catalog.
insert into my_catalog values
(1,'public',' my_visuals ','my catalog');
Run the Visualizer function to generate a visualization, and add it to the visualizations table.
insert into my_visuals select id,json from
Visualizer(on
aster_lens.npath_output_sales_shopping_order
partition by 1
Viztype('sankey')
Title('Npath Demo Visualization') asterfunction('npath'));
26 AppCenter User Guide
Installing and Setting Up AppCenter
Installing AppCenter
Installing AppCenter on an Aster Backup Queen
You can use the standard AppCenter installer to install AppCenter on an Aster Backup Queen system. The installer will automatically detect an Aster Queen system and configure
AppCenter port numbers accordingly.
Upon completion, users will need to specify the port number 10 in the AppCenter URL to log into AppCenter.
http://<AppCenter host ip or DNS name>:10
We recommend that you do not run AppCenter on a running Aster Queen system. Before installing AppCenter on the Backup Queen, make sure that no Aster Queen services are running, and that you disable the nodes’ services in such a way that they will not restart after a system reboot. For more information about Aster nodes, see the Aster node-specific documentation.
Installing a Security Certificate
Communication with AppCenter is encrypted using SSL (HTTPS). During installation,
AppCenter installs a self-signed certificate; however, because the certificate is not officially signed, you need to add a security exception to the browser to access AppCenter.
The HTTPS certificate for AppCenter consists of two files:
• Certificate file (AppCenter_install-dir/appserver/webserver/apache2/conf/server.crt)
• Key file (AppCenter_install-dir/appserver/webserver/apache2/conf/server.key)
1
2
We recommended that the administrator log into the system running AppCenter as root and replace the self-signed certificate with the organization’s official certificate as follows:
Replace the server.cert and server.key files with the new certificate and key files.
Set the permissions of both the files to
600
: chmod 600 <
path>
/server.crt
3 chmod 600 <
path>
/server.key
Restart AppCenter:
<AppCenter_install-dir>
/appserver/restart.sh
The new certificate should now be in effect.
AppCenter User Guide 27
Installing and Setting Up AppCenter
Uninstalling AppCenter
Installing AppCenter on a RedHat System
When installing AppCenter on a RedHat Linux system, you might encounter the following error message:
FATAL: could not create shared memory segment: Invalid argument
Typically, this error means that the PostgreSQL request for a shared memory segment exceeded the value specified by the SHMMAX parameter of the kernel.
You can either reduce the request size or reconfigure the kernel with a larger SHMMAX value.
To reduce the request size, reduce the PostgreSQL shared memory usage by reducing the value of the shared_buffers or max_connections parameters in the postgresql.conf file.
If the request size is already small, the size may be less than the value of the SHMMIN parameter of the kernel, in which case increasing the request size or reconfiguring SHMMIN resolves the issue.
Tip:
The PostgreSQL documentation contains more information about shared memory configuration.
One way to prevent this error is to increase the shared memory segment of the kernel. To do so, set 'kernel.shmmax' to a higher value than the original in the /etc/sysctl.conf file.
For example: kernel.shmmax = 54359738368
Tip:
You can find the original value of shmmax in the /proc/sys/kernel/shmmax file.
Uninstalling AppCenter
To uninstall AppCenter:
1
Go to the
<install dir>/appserver directory.
Tip:
The default install dir is /opt/teradata/.
2
3
Run the uninstall.sh
script.
# sudo ./uninstall
When prompted whether to uninstall AppCenter and all of its modules, enter
Y
.
28 AppCenter User Guide
AppCenter User Guide
Installing and Setting Up AppCenter
Uninstalling AppCenter
4
When prompted to store a backup of AppCenter configuration before uninstalling, make a selection and then proceed with the rest of the uninstall process.
This backup file can be used to restore AppCenter content and settings later, if you choose to re-install AppCenter on this or another system. The backup file will be named "<date and time>-Backup_During_Uninstall.tar."
Do you want to create a backup of AppCenter? [Y/n]:
Y
---------------------------------------------------------------------
Info: Backup file has been created in /data/appserver-backup
Press [Enter] to continue :
Uninstalling AppCenter 6.0
0% ______________ 50% ______________ 100%
#########################################
Info: Uninstallation completed
Press [Enter] to continue :
The script deletes the AppCenter installation directory.
Tip:
The uninstall log file is located in the /tmp directory (/tmp/uninstall.log).
29
Installing and Setting Up AppCenter
Managing Users and Access Rights
Managing Users and Access Rights
•
AppCenter Users and Authentication Modes
•
Responsibilities of the AppCenter Administrator
AppCenter Users and Authentication Modes
Roles
AppCenter defines the following roles:
Table 2 - 4: AppCenter Role Types
Role
AppCenter administrator
App developer
App user
Description
AppCenter administrator can access and control anything in
AppCenter with one exception; the AppCenter admin cannot modify the code of apps developed by other app developers.
App developers can do the same as app users, plus they can develop and install apps, share apps with others (this capability can be disabled by the AppCenter admin), and define visualization catalogs.
AppCenter users can run apps, browse through and view reports, and share reports with other app users.
30 AppCenter User Guide
Installing and Setting Up AppCenter
Managing Users and Access Rights
User Management and Authentication
Users and user groups are not managed by AppCenter. AppCenter leverages external user management systems, such as OpenLDAP, Active Directory, and users and roles of an Aster database.
AppCenter user roles are not assignable. The roles are derived from the authentication mode by which the users log into AppCenter:
Table 2 - 5: AppCenter Authentication Modes
Mode
LDAP Authentication
Mode
DB Authentication Mode
AppCenter
Administrator account
Description
When configured, the LDAP authentication mode enables users of the organization's Active Directory or OpenLDAP service to log into
AppCenter. These users are logged in with the generic App User role.
In LDAP mode, AppCenter supports both LDAP as well as the secure option LDAPS. For LDAPS, simply enter:
LDAPS://directory.company.com:636
When configured, Aster database users can log in with their Aster database account by adding "db\" before the user name. These users are logged in with the App Developer role.
There is a single AppCenter administrator account. This account is always available, regardless of which authentication mode is used.
AppCenter can support both authentication modes at the same time.
Tip:
For controlling access to an app or app report, access can be given to individual users as well as to LDAP/Active
Directory user groups and database roles.
Responsibilities of the AppCenter Administrator
Occasional or One-Time Tasks of the AppCenter Administrator
• Define the administrator password.
This password is set during AppCenter installation, and can be set from the AppCenter
Settings page or by using the utility script in the AppCenter installation directory.
AppCenter User Guide 31
Installing and Setting Up AppCenter
Managing Users and Access Rights
• Configure the AppCenter authentication mode.
Figure 2 - 2: Authentication Settings
32
• Configure the schedule for AppCenter backups.
We recommend that you back up files to an external location on a regular basis.
AppCenter User Guide
AppCenter User Guide
Installing and Setting Up AppCenter
Managing Users and Access Rights
• Restore AppCenter from backup if needed.
The restore function will restore the entire AppCenter state; there is no way to restore a specific app or report by itself.
• Make backups of the Aster databases that are configured as connections in AppCenter to preserve data from reports generated by the apps.
• Optionally, define database connections and configure the prepackaged Teradata apps to a dataset and specify which users can access the apps and their reports.
This can also be done by app developers when they copy the bundled apps and configure their app copy.
• Customize the appearance of AppCenter by installing a package containing the company logo and company brand colors.
• Upgrade the installed Visualizers (chart types) when updated versions are released by
Teradata.
• Install and configure Teradata apps when new apps are made available by Teradata.
Ongoing maintenance responsibilities
• Keep the authentication mode password up to date.
• Monitor the connections that are defined in AppCenter by app developers, and potentially delete connections that are no longer used.
• Monitor the apps that are installed on AppCenter by app developers and potentially delete apps that are no longer used.
• Monitor the visualization catalogs that are installed on AppCenter by app developers and potentially delete catalogs that are no longer used.
• When users report a problem, review the AppCenter log. Look for "Error," "Warning," or
"Exception," and contact Teradata customer support if needed.
33
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Configuring AppCenter Settings
•
Configuring Authentication Settings
•
•
Configuring AppCenter Connections
•
•
Customizing AppCenter Appearance
•
Configuring Data Visualizations
•
Tip:
If you have used Aster Lens, the information used to configure AppCenter in this section matches the information in the asterlens.properties files.
Configuring Authentication Settings
•
•
•
Configuring User Authentication Settings
Switching to Offline Mode
Notice:
Switching to Offline Mode, logs out all users other than admin.
If you need to maintain AppCenter without other users being logged in, select
Settings
>
Authentication and click
Switch Maintenance Mode
. This option switches AppCenter to the Offline Mode and logs out any user other than admin. In Offline Mode, only the admin user can use AppCenter.
To exit this mode and restore AppCenter to normal operations, click
Exit Offline Mode
.
3
4
1
2
5
Changing Admin Password
To change the password of the AppCenter admin account:
Log into AppCenter as admin.
Click the
Click
Settings
Authentication
.
In the Admin Password section, enter a new password in the two fields.
Click
Save
.
button.
34 AppCenter User Guide
AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Configuring User Authentication Settings
3
4
1
2
5
Configuring AppCenter for Aster Database Authentication
To configure AppCenter to allow Aster Database users to log into AppCenter:
6
Log into AppCenter as admin.
Click the
Click
Select the
Settings
Authentication
Authenticate with Aster DB
To allow developers to share apps with other users, select the with other users button.
.
check box.
check box.
Enter the following information:
Table 2 - 6: Aster Database Authentication Settings
Allow developers to share apps
Field
Database Host
Database Name
Username
Password
Description
IP address or host name of the Aster Database host.
Name of the Aster Database where the information about user accounts and roles is stored.
Username that AppCenter uses to access the specified database. This user should be an admin-level user.
Password for the database user account.
If the password for this user account is changed in the database host, make sure that this field is updated accordingly to avoid connection errors.
7
8
Click
Test to make sure that AppCenter can access the Aster Database host.
Click
Save
.
3
4
1
2
Configuring AppCenter for LDAP Authentication
To configure AppCenter to allow LDAP users to log into AppCenter:
Log into AppCenter as admin.
Click the
Click
Select the
Settings
Authentication button.
.
Authenticate through the organization Active Directory over LDAP check box.
35
Installing and Setting Up AppCenter
Configuring AppCenter Settings
5
Using the information supplied by your organization’s LDAP server administrator, enter the following information:
Table 2 - 7: LDAP Authentication Settings
Field
URL
Base DN
LDAP user account
LDAP user password
Description
The LDAP server URL. For example: ldap://ba.example.com:389
The root of the LDAP organizational unit that defines the user accounts that you want to allow to access AppCenter.
dc=ba,dc=example,dc=com
The name of the LDAP user account that AppCenter uses to access the LDAP server. For example: [email protected]
(For Active Directory)
OR cn=john,dc=ba,dc=example,dc=com
(for OpenLDAP)
The password of the LDAP user account.
If the password for this user account is changed in the LDAP server, make sure that this field is updated accordingly to avoid connection errors.
6
7
Click
Test to make sure that AppCenter can access the LDAP server.
Click
Save
.
36 AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Configuring Backup Settings
Use the settings in the
Backup settings page (
Settings > Backup
) to create backups either manually or automatically based on schedule selections, and restore from backups. The backed-up data includes AppCenter settings, Apps, and visualizers.
Tip:
Backups do not include the actual visualization data or the app analytics reports; those reside in Aster Database and need to be backed up separately.
Backups are stored on the AppCenter server
/data/appserver-backup
. We recommend that you set up an external, automated backup system to copy the backup files to an external location as well.
In the
Backup Schedule section, specify the times you want AppCenter to back up apps.
Figure 2 - 3: Backup Tab
AppCenter User Guide 37
Installing and Setting Up AppCenter
Configuring AppCenter Settings
1
2
3
Creating a Manual Backup
To create a manual backup:
Click the
Settings
>
Click
Create Backup
.
Backup
.
Enter a label for the backup file.
The backup files are stored in the
/data/appserver-backup directory.
1
2
Creating Automatic Backups
To create an automatic backup:
Click
Settings
>
Backup
.
Specify the automatic backup schedule by selecting the backup time (hourly, daily, weekly, and monthly).
The backups will be automatically created at the specified time in the
/data/appserverbackup directory.
Restoring a Backup
To restore a backup:
Notice:
Restoration temporarily places AppCenter in maintenance mode. While an app is being backed up, all users other than admin are logged out. Before restoring a backup, ensure other users are not logged in.
1
2
3
4
Click
Settings
>
Backup
.
In the Restore section, from the
Select a file to restore from drop-down menu, choose the backup file to restore.
To replace installed visualizations with those from a backup, select the
Visualizations from the backup will replace installed visualizations check box.
Click
Restore
.
38 AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Configuring AppCenter Connections
•
Creating a Database Connection Profile
•
AppCenter Connections - Under the Hood
•
Editing Database Connection Profiles
•
Creating a Database Connection Profile
To enable AppCenter to access the database with data the apps will use, you must define a connection profile for that database.
The
Settings > Connections window displays the existing connections and enables you to define new ones.
Figure 2 - 4: Connections Tab, Existing Connections
To create a connection profile:
1
2
3
Log into AppCenter as admin.
Click the
Click
Settings
Connections
.
button.
AppCenter User Guide 39
Installing and Setting Up AppCenter
Configuring AppCenter Settings
4
Click
Create New Database Connection
.
Figure 2 - 5: Connections Tab, New Connection
40
5
Enter the following information:
Table 2 - 8: Database Connection Profile Settings
Field
Database Connection
Name
Aster Database Host
Database Name
Database Username
Database Password
Description
Name of this connection profile. Every profile must have a unique name.
IP address or host name of the database host.
Name of the database containing the data used by AppCenter apps.
Username that AppCenter uses to access the specified database.
Password of the database user account. If the password for this user account is changed in the database host, make sure that this field is updated accordingly to avoid connection errors.
6
7
8
Keep the
Limit Concurrent Connections Of This Profile setting at the default value of
25
.
Change this value only if you experience performance degradation while running multiple apps.
Click
Test Connection to make sure that AppCenter can access the specified database.
Click
Save
.
Tip:
The
Save
button appears only after the connection settings have been validated.
AppCenter User Guide
AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
AppCenter Connections - Under the Hood
When a connection is created, AppCenter ensures that it can be used for apps and for visualization creation by doing the following:
• Tests if the Visualizer function is available to the specified database user on the specified database.
If it is not available, AppCenter will automatically attempt to install the function for this user.
Note:
If the Visualizer function is already installed on the same database for another user's connection, you might see an error message regarding access rights to the Visualizer function. In this case, the DBA should log into the Aster Database and update the access rights for the Visualizer function, and make it available to all database users.
• Attempts to create a table for storing the app's data visualizations.
Because these tables are created for each connection, you might see multiple visualization tables in your Aster Database. The visualizations table will be deleted automatically when the connection is deleted from AppCenter.
5
6
7
3
4
1
2
Editing Database Connection Profiles
To edit a connection profile:
Log into AppCenter as admin.
Click the
Click
Settings
Connections
.
button.
Locate the connection profile to edit and click its corresponding
Edit link.
Use the
Filter button for help locating the desired profile. (See
.)
Edit the connection profile settings.
Click
Click
Test Connection
Save
.
to make sure that AppCenter can access the specified database.
Tip:
The
Save
button appears only after the connection settings have been validated.
41
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Filtering Connection Profiles
If you have a long list of connection profiles, you can click the
Filter button and use the filtering fields to narrow the list. The filtering fields are not case-sensitive.
Figure 2 - 6: Connections Tab, Filter
42 AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Adding Visualization Catalogs
AppCenter allows you to add references to visualization catalogs in your database. These catalogs point to tables containing visualizations.
Figure 2 - 7: Catalogs Pointing to Visualization Tables
AppCenter User Guide
When you add a visualization catalog, AppCenter adds all visualization reports available in the corresponding visualization tables to the reports area of AppCenter. In addition, AppCenter updates the reports area whenever new visualizations are added.
Tip:
A catalog can have only one owner. The owner has control over who can see any one of the reports provided through the catalog.
43
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Figure 2 - 8: Catalogs Tab, Existing Catalogs
1
2
3
Adding a New Catalog
To add a new catalog entry:
Click the
Settings button.
Click
Catalogs
.
Click
Add New Catalog
.
Figure 2 - 9: Catalogs Tab, New Catalog
44
4
5
6
From the
Database Connection drop-down menu, choose a connection profile.
In the
Catalog Table Name field, enter the name of the catalog table.
This name must match the name of the catalog table in the database specified in the selected connection profile.
Click
Save
.
A new entry is added to the list of catalogs. You can use the filtering fields under the column headings to display a subset of the catalog entries.
AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Reloading Catalogs
To reload all visualization reports tracked by a catalog table, click the
Reload button.
Figure 2 - 10: Catalogs Tab, Reload Button
Editing a Catalog Entry
For any catalog, you can edit its settings by clicking the
Edit button for that catalog.
Figure 2 - 11: Catalogs Tab, Edit Button
AppCenter User Guide
You can edit the
Database Connection and
Catalog Table Name settings. If you make any changes, click
Save
.
Deleting a Catalog
You can delete a catalog from AppCenter by clicking
Delete
. When you delete a catalog, only the reference to the catalog from AppCenter is deleted, not the catalog itself that resides in a database.
Setting Catalog Ownership
To set catalog ownership:
45
Installing and Setting Up AppCenter
Configuring AppCenter Settings
1
Click
Set Owner
.
Figure 2 - 12: Catalogs Tab, Catalog Owner
46
2
3
4
5
Use the
Look up
... field to filter the list of users. (Type a string and press
Enter to apply the filter.)
Select a user from the list.
Click
Apply
.
Click
Save
.
AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Configuring Default Sharing Settings
For every catalog, you can define default sharing settings. These settings specify the users with which to share reports.
Tip:
You can override these settings on a per-catalog basis.
To configure default sharing settings:
1
Click
Default Sharing
(or the
Default Sharing button)
.
Figure 2 - 13: Catalogs Tab, Sharing Button
AppCenter User Guide
2
3
To share reports with all users, click share with all users
.
To share reports with specific users, use the
Look up... field to list users, by typing a string and press
Enter
.
This string could be the name, ID, or email address of the user, or parts of them.
For example, if you type sal and press Enter, all users whose user names, IDs, or emails contain “sal” are listed.
47
Installing and Setting Up AppCenter
Configuring AppCenter Settings
6
7
4
5
For every user with whom you wish to share reports, click their entry in the sidebar to move it to the right panel.
To apply these settings to the current catalog entries, select the
Apply to current catalog entries check box.
Click
Apply
.
Click
Save
.
Customizing AppCenter Appearance
Installed Color Schemes
AppCenter includes four built-in themes (color schemes).
Figure 2 - 14: Customization Tab, Installed Themes
48
The AppCenter administrator can specify which theme will be the default and which one is to be used when users first log in, by clicking on the pin icon next to the desired theme or by clicking the
Select a Visual Theme icon on the right side of the AppCenter toolbar.
Figure 2 - 15: Toolbar, Theme Menu
AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Users who log into AppCenter can change the default theme to any one of the available themes by clicking on the theme icon and selecting the desired theme.
Note:
The user's selection is stored in the current browser, so the user may need to repeat the selection when using another web browser.
The AppCenter administrator can modify the list of available themes by removing or adding new themes. The admin can also download the installed themes and save them as a backup.
Figure 2 - 16: Settings, Customization
Creating New AppCenter Themes
The AppCenter administrator can define new AppCenter themes, and upload them to
AppCenter using
Upload a custom theme pack
.
Almost any visual aspect of AppCenter, including fonts, colors, and logo, can be modified to match the organization's needs.
Figure 2 - 17: Settings, Customization, Upload a custom theme pack Button
AppCenter User Guide
A theme pack is a zip file that contains a style.css file and an images directory.
49
Installing and Setting Up AppCenter
Configuring AppCenter Settings
To make minor modifications such as font or background colors, or to replace the AppCenter company logo, modify the styles.css file as desired, or replace the logo.png file in the archive, rename the archive to the desired theme name, and upload the archive into AppCenter by clicking the
Upload a customer theme pack button.
Note:
AppCenter expects a zip file. You cannot upload only the style.css file.
You are not limited to changing only the items listed in the style.css file. This file is a template to help you get started, but you can identify any visual element in AppCenter with your browser's debugger, and specify the css element and value in your theme's style.css file. Your entry will be used instead of the default value.
Figure 2 - 18: Visual Changes Using Browser Debugger
50
For example, the following is an example theme pack style.css file that you can download and modify:
/*
CUSTOM STYLE THEME SAMPLE
Adding more styles here will override the standard system CSS.
Identify a CSS selector of the element you wish to customize (using browser developer tools) and add a corresponding CSS rule. Below are some examples of user interface styles.
*/
/* Header bar background settings */
#header {
background-image: -webkit-linear-gradient(90deg, #E6E6E6 0%, #FFF
100%);
background-image: linear-gradient(0deg, #E6E6E6 0%, #FFF 100%);
AppCenter User Guide
AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
}
#login #header{
background-image: -webkit-linear-gradient(0deg, rgb(239, 239, 239)
0%, #E6E6E6 100%);
background-image: linear-gradient(90deg, rgb(239, 239, 239) 0%,
#E6E6E6 100%);
}
/* Header bar company logo */
#header header h1 a {
background: url("images/logo.png") no-repeat scroll 0 0 / 100% 100% rgba(0, 0, 0, 0);
}
/* Header bar AppCenter title */
#header header h3 {
color: rgba(216, 216, 216, 0.7);
text-shadow: 0px 0px 0px rgba(63, 62, 62, 0.9);
font-size: 23px;
font-weight: 700;
}
#login header h3{
color:#989898
}
#login-form{
background: none repeat scroll 0% 0% rgb(248, 248, 248);
}
#login #footer{
background-image: -webkit-linear-gradient(0deg, rgb(225, 225, 225)
0%, rgb(228, 228, 228) 100%);
background-image: linear-gradient(90deg, rgb(225, 225, 225) 0%, rgb(228, 228, 228) 100%);
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.35), 0px -1px 0px 0px rgba(0, 0, 0, 0.25) inset;
}
#login #footer p{
color: rgb(146,146,146);
}
#footer ul#nav-footer li a{
color: rgb(146,146,146);
}
/* Header bar Welcome text */
#header header p {
color: #555;
}
/* Header bar icons */
#header header #nav-header > li > a, #icn-help-builder {
border:0 solid RGB(107,107,107);
}
#header .navbar-group .btn,
#header .sidebar-group .btn,
#header .user-themes .btn{
border:0 solid RGB(107,107,107);
color: #777;
}
51
Installing and Setting Up AppCenter
Configuring AppCenter Settings
#header .active-group div.quick-app img{
border:0 solid RGB(107,107,107);
}
#header .navbar-group .btn, #header .sidebar-group .btn {
box-shadow: none !important;
}
#header .active-group div.quick-app img {
opacity: 0.8;
}
#header .active-group div.quick-app img:hover {
opacity: 0.99;
}
#header .btn-default .caret {
border-top-color: rgba(255, 255, 255, 0.75);
}
#header header #nav-header > li > a {
background-image: none;
position: relative;
top: 1px;
display: inline-block;
font-family: 'Glyphicons Halflings';
font-style: normal;
font-weight: 400;
line-height: 2;
-webkit-font-smoothing: antialiased;
text-indent: 0;
color: #777;
overflow: hidden;
text-align: center;
}
#header header #nav-header > li > a:hover {
color: rgba(225, 112, 17, 0.9);
}
#header header #nav-header > li > a:before {
width: 30px;
display: inline-block;
}
#header header #nav-header li a.icn-settings:before {
content: "\e019";
}
#header header #nav-header li a.icn-tasks:before {
content: "\e013";
}
#header header #nav-header li a.icn-log:before {
content: "\e032";
}
#header header #nav-header li a.icn-help:before {
content: "\e085";
}
#header header #nav-header li a.icn-logout:before {
content: "\e163";
}
#header #toolbar-container .active-screen{
52 AppCenter User Guide
AppCenter User Guide
Installing and Setting Up AppCenter
Configuring AppCenter Settings
color: #e9872a;
}
/* Header bar icons end */
/* Sidebar panel */
#sidebar {
background: #EDEDED;
box-shadow: -1px 0px 1px 1px rgba(0, 0, 0, 0.05) inset;
}
/* Sidebar panel menu items */
#sidebar nav ul li a, #sidebar nav ul li a {
color: #787878
}
/* Sidebar panel menu headers */
#sidebar nav ul li.header {
color:#787878;
}
/* Sidebar panel menu icons */
#sidebar .glyphicon{
color:#787878;
}
/* Sidebar version block */
#version{
color: rgba(0,0,0,.57);
text-align: left;
}
/* Center content area */
#mainbar {
background: #F8F8F8;
color:#626262;
}
/* Generic button style */
.btn-default{
background-color: #fff;
border-color: #ccc;
border-radius: 2px;
background-image: none;
}
.btn-success{
background-color: #509f50;
background-image: linear-gradient(0deg, #509f50 0%, #67c367 100%);
}
.btn-danger{
background-color: #d9534f;
background-image: none;
border-color: #d43f3a;
}
53
Installing and Setting Up AppCenter
Configuring AppCenter Settings
Configuring Data Visualizations
By default, AppCenter includes the visualizers listed in
Figure 2 - 19: Settings, Data Visualizers
54
• To see an example of a visualization, click its icon.
• To upload a new visualization, click
Upload New Visualization
, select the visualization plugin file, and click
Open
.
• To uninstall a visualization plugin, click its
Uninstall button.
• To learn more about data visualizations, see
AppCenter Data Visualizations .
AppCenter User Guide
Configuring Log Settings
1
2
To configure log settings:
Click
Settings
>
Log
.
Choose a log level.
The log files are stored in the
/data/appserver/logs directory.
The supported log levels are similar to the Apache log4j levels.
To view the system logs, click
System Log
.
Viewing the AppCenter Log
Installing and Setting Up AppCenter
Viewing the AppCenter Log
To view the AppCenter log, click the
System Log button.
Figure 2 - 20: Toolbar, System Log Button
Monitoring Tasks
AppCenter lets you monitor the status of running and scheduled tasks.
Tip:
Running an app is a task that AppCenter monitors.
Monitoring Task Status
To view the status of tasks:
1
From the toolbar, click the
Tasks button.
Figure 2 - 21: Toolbar, Tasks Button
AppCenter User Guide 55
Installing and Setting Up AppCenter
Monitoring Tasks
AppCenter lists the tasks that are running or have stopped running (failed or completed).
Tasks that are not scheduled appear in the Tasks tab, as shown in
.
Figure 2 - 22: Tasks
2
Use the
Filter button to filter the list of tasks.
Figure 2 - 23: Task Filter Button
56 a
To use an existing filter, click
Saved Filters and choose one of the filters from the list.
Figure 2 - 24: Tasks, Saved Filters Button b
To save the filter, click the
Save button.
AppCenter User Guide
Installing and Setting Up AppCenter
Monitoring Tasks
3
4 c
To clear the filter, click the
Clear current filter button.
To delete a task, click its
Delete button.
To share the reports of a task that completed running, click the
Share button and specify the user.
Monitoring Scheduled Tasks
3
4
5
1
2
To view the status of tasks:
Click the
Tasks button.
Click
Schedule
.
AppCenter lists the tasks that are scheduled to run.
Use the
Filter button to filter the list of tasks.
To delete a task, click its Delete button.
To enable a task, select its
Enabled check box.
Scheduled tasks appear in the Schedule tab, as shown in
Figure 2 - 25: Schedule Tab
AppCenter User Guide 57
Installing and Setting Up AppCenter
AppCenter Configuration File
AppCenter Configuration File
The AppCenter server uses a properties file for configuration. In most cases, the default configuration should suffice and you are not expected to modify this configuration. It is provided here for reference only.
If you decide to modify the AppCenter configuration, follow the steps here to ensure the new settings take effect:
1
Open the configuration file located here:
2
/data/appserver/conf/appserver.properties
Edit the configuration properties as desired and save the file.
3
Refer to
for a list of all properties and descriptions.
Restart the AppCenter server using the restart shell script ( restart.sh
) in the AppCenter installation directory.
Configuration File Properties
Table 2 - 9: AppCenter Configuration File Properties
Property ldap.person.classes
ldap.group.classes
ldap.person.filter.ids
ldap.person.filter.name
ldap.person.filter.email
ldap.group.filter.fields
ldap.size.limit
Default Value
Description Default Value
Virtual
Machine Setup
(If Different)
List of schema classes that are looked for in an LDAP directory tree while searching for Users.
List of schema classes that are looked for in an LDAP directory tree while searching for Groups.
posixAccount,inetOrgPerson,organiz ationalPerson,person groupofnames,groupofuniquenames,gr oup,posixGroup
List of field names that uniquely identify a User in a user class object.
Field containing display name of the User.
uid,sAMAccountName displayName
Field containing email of the User.
List of field names that uniquely identify a Group in a group class object.
Maximum entries to be fetched during an LDAP search.
member,memberUid
100
58 AppCenter User Guide
Installing and Setting Up AppCenter
AppCenter Configuration File
Table 2 - 9: AppCenter Configuration File Properties (continued)
Property ping.host
db.host.maxConnections
dbcp.aster.maxActive
number_of_active_jobs max_number_of_queued_ jobs max.retries
max.wait.time
local.jdbc.driver
local.jdbc.url
local.jdbc.user
local.jdbc.password
viz.table.name
Default Value
Description
Used during test connection. If set to "ON," platform will first ping the host to see if the host is up.
Sets the maximum number of connections that can be made to a particular DB host across all connection profiles.
Sets the maximum number of connections that can be active at a given time for a connection profile.
Sets the maximum of number of jobs active at a time before they start getting queued.
Sets the maximum number of jobs that can be queued.
Sets the number of retries that the platform can make to get a database connection if max limit is reached for number of connections to a
Database host.
Sets the total amount of wait time in milliseconds that a thread can wait to get a connection, once the max limit is reached for the number of connections to a Database host.
Sets driver class for postgres.
Sets the jdbc url used to connect to local postgres instance.
Default Value
ON
25
25
50-100
100
10
43200000
Virtual
Machine Setup
(If Different)
15
15
25-50
50 org.postgresql.Driver
jdbc:postgresql:// localhost:6625/ appserver?charset=UTF-8 appserver
User name used to connect to local postgres instance.
Encrypted password for the appserver user to connect to local postgres instance
Name of the visualization table that is created for every connection profile. This table is used to store visualizations.
cca4316d3da55a0cc29c413c5caed412
54c25559c9f17ef4edfa8ca0bd8463eb app_center_visualizations
AppCenter User Guide 59
Installing and Setting Up AppCenter
AppCenter Configuration File
Table 2 - 9: AppCenter Configuration File Properties (continued)
Property max.cache.files
app.file.size.limit
app.directory.size.limit
Description
Maximum number of results that can be stored in cache. The Cache is managed with a "least recently used" eviction policy.
Maximum size of a file that can be uploaded through an app.
Maximum size of an app's workspace directory into which the app can upload files.
Default Value
100000
50GB
100GB
Default Value
Virtual
Machine Setup
(If Different)
1000
1GB
3GB
60 AppCenter User Guide
CHAPTER 3
Developing and Setting Up Apps
•
•
•
•
•
•
Setting Rules for Sharing Reports
•
•
Viewing App LogsApps List View, Download Button
•
Installing Apps
To install an App:
1
2
3
Log into AppCenter as admin (or as a user with a database account, e.g., developer).
Click
Install an App
.
Select the zip file of the app and click
Open
.
AppCenter User Guide 61
Developing and Setting Up Apps
Building Apps
Building Apps
To build an App, you need to perform the following tasks:
•
•
•
•
•
•
•
•
•
•
•
•
•
Generating Data Visualizations
•
•
•
Developing Java Apps Using Eclipse
•
62 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Defining the App Attributes
To build and define the app attributes:
1
2
Log into AppCenter as admin (or as a user with a database account, e.g., developer).
Click
Build an App
.
The
Building an app window appears.
Figure 3 - 1: Building an app Window
AppCenter User Guide 63
Developing and Setting Up Apps
Building Apps
3
Configure the basic settings of the app as described in
Table 3 - 1: App Basic Settings
Field/Button
Set icon
App Name
App Version
Developer Name
Developer ID
Description
Description
(Optional) Click this button to select an image to be the icon for your app. If you don’t select an image, AppCenter will assign a default icon
For the icon, you can select an image file of the format PNG, JPG, or
BMP. Windows icon files (ICO) are not supported.
Enter the name of the app. This is the name that users see in
AppCenter.
Once you save the app, you cannot change the App Name.
Enter the version of the app.
Enter the name of the developer.
Enter the ID of the developer. This entry must be unique.
It is recommended that you use a globally unique id. Common practice is to use reverse domain notation. For example: com.my_comany_name.my_organization_name.my_name_or
_id
Once you save the app, you cannot change the Developer ID.
Enter a description of the app.
4
AppCenter uses the App Name, App Version, and Developer ID fields to create a unique internal name for the app.
(Optional) To enable any of the following app options, select the corresponding check box.
Table 3 - 2: App Options
Option
Constants
UI
Portable
Dependencies
Custom Visualizations
Documentation
Description
App defines constant values that can be configured after the app is installed.
App has a user interface and takes input from the user.
App is portable and can be used with various data schemas.
App has dependencies on SQL-MR functions.
App includes custom visualizations.
App provides documentation and setup instructions.
64 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Whenever you enable an option, a new tab for that option is added to the App Builder window.
Figure 3 - 2: Selected Options for New App
5
Click
Save Draft
(or click
Save as a new App Draft if editing a previously saved app).
Defining the App Logic
App logic can be defined in either SQL or Java, but not both at the same time.
To define the logic of your app:
1
2
Click
Logic
.
To define the SQL logic of the app: a
Click the
SQL radio button.
b
Enter the SQL/SQL-MR code.
In the SQL/SQL-MR code, you must use fully-qualified column names.
To reference parameters or constants in the SQL/SQL-MR code (these are parameters defined in the Input Parameters and Constants tabs), use the following format:
${paramter_name}
AppCenter User Guide 65
Developing and Setting Up Apps
Building Apps d e c f g
To reference the user name, password, or database name of a defined Aster Database connection, use the following format:
%dbusername%
%dbpassword%
%dbname%
To add code that visualizes the results of the SQL-MR code that you added in the previous step, click
Generate Visualization Code
.
A pop-up window appears.
In the
Data field, enter the name of the table containing the data to visualize.
From the
Data Format drop-down menu, choose the data format of the table.
Although AppCenter supports generic statistical visualizations for tables with an X and a Y column, most visualization types are specific to Aster Function result tables. In this section you specify which Aster function generated the data to be visualized, and by doing so, you identify the table structure for the Visualizer function.
From the
Visualization Type drop-down menu, choose a visualization type.
In the
Visualization Title field, enter the title of the visualization.
Figure 3 - 3: SQL Code for App Logic
66 h
To view and select additional options for this visualization, click the
Options button.
The options that are available depend on the visualization type selected.
For more information about visualization code generation, see
AppCenter User Guide
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
3
To define the app logic in Java: a
Click the
Java radio button.
Tip:
To access the API documentation and download the App-SDK or the project as an Eclipse project, click the information icon and then click either the
App-SDK
or
Eclipse project
links under
General Instructions
.
b c d
Enter the Java code Logic.
In your code, use the Context object, ctx
, to gain access to services provided by the
AppCenter platform, such as ctx.runSqlStatement()
, ctx.runSelectQuery()
, ctx.visualize()
, and ctx.visualizeTable()
.
The Logic window provides an
Advanced visualization options link that displays the online help for building apps.
To add Java code that visualizes the results of the SQL-MR code that you added in the previous step, click
Generate Visualization Code
.
f e g
In the Data field, enter the name of the table containing the data to visualize.
From the Data Format drop-down menu, choose a the data format of the table.
Although AppCenter supports generic statistical visualizations for tables with an X and a Y column, most visualization types are specific to Aster Function result tables. In this section you specify which Aster function generated the data to be visualized, and by doing so, you identify the table structure for the Visualizer function.
From the Visualization Type drop-down menu, choose a visualization type.
67
Developing and Setting Up Apps
Building Apps h
In the Visualization Title field, enter the title of the visualization.
Figure 3 - 4: Java Code for App Logic
4 i
To view and select additional options for this visualization, click the
Options button.
The options that are available depend on the visualization type selected.
Click
Save Draft
(or click
Save as a new App Draft if editing a previously saved app).
Defining Constants
1
2
To define constants for use in your app:
Click
Constants
.
Click the
Add Constant button.
68 AppCenter User Guide
Figure 3 - 5: Add Constant Button
Developing and Setting Up Apps
Building Apps
AppCenter User Guide
3
Configure the following constant fields:
Table 3 - 3: Column Definition Fields
Field
Constant Type
Name
Label
Default Value
Optional constant?
Description
Choose the constant type from the drop-down menu.
Enter the name of the constant. You can use this name for your app code.
Enter a label for the constant to be displayed in the app’s settings
(configuration) area.
Enter the default value of the constant.
Select this check box if this constant is optional. Optional means that it is not required for the app to be able to run, but if specified, will be taken into account by the App logic.
4
5
Repeat these steps to add another constant.
Click
Save Draft
(or click
Save as a new App Draft if editing a previously saved app).
69
Developing and Setting Up Apps
Building Apps
Defining Input Parameters
AppBuilder includes a built-in app GUI builder.
App developers do not need any background in developing GUIs to build user-friendly interfaces for their AppCenter applications.
Developers define the app GUI in terms of "input parameter" (type and name), similar to the way scripts and functions are defined. The GUI builder takes care of converting the parameters into GUI widgets.
Background
Input parameters are defined with XML tags in the app.xml
file of the app archive.
Developers can add and modify these tags manually (which is most useful when modifying parameter definition in bulk); however, the easiest way to do this is with the AppCenter's
AppBuilder tool.
When the app is opened by the user, graphical input parameter widgets are made available to the app user for providing parameter values.
When an app task is started and the app logic is executed, the app logic can accesses the input parameter values to execute according to the app user needs.
Four Perspectives of an Input Parameter
Table 3 - 4: Input Parameter Perspectives
Perspective
XML Tag
In the App Builder
In the App UI
Input Parameter Values
Description
Parameters and their attributes are defined as XML tags in the app.xml file.
Parameters appear as graphical elements, making it safe and easy to define and manage them.
Parameters appear as GUI widgets for the app user to provide values.
Values are accessible by the app code through tags or java function calls.
70 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Defining App Input Parameters with the App Builder
To define app input parameters, select the
UI checkbox in the main App Builder page.
Figure 3 - 6: App Info Tab, UI Checkbox
An
Input Parameters tab will appear in the App Builder, as shown in
Working In the Input Parameters Tab
Figure 3 - 7: Input Parameters Tab Fields
AppCenter User Guide
• Use the
Add Parameter button to add a new box for defining a parameter.
• Use the
Trash bin icon ( ) at the top-right corner of a box to delete a parameter.
• Use the
Expand All and
Collapse All buttons to expand and collapse all the input parameter boxes.
• Use the
Facing arrow button ( )at the top-left corner of each parameter box to expand or collapse the individual input parameter box.
• Drag boxes up or down to rearrange the order by which the parameters will be displayed in the App UI.
71
Developing and Setting Up Apps
Building Apps
Common Input Parameter Attributes
Every Input Parameter has the seven common input fields as shown in
Figure 3 - 8: Common Input Parameter Attributes
Type
This is the type of the input parameter. Apps can use one of 15 types of input parameters.
Figure 3 - 9: Input Parameter Types List
Name
Each input parameter needs to be assigned a unique name to identify the parameter in the
Java/SQL code. This is the name used by developers to access the data entered by the user.
Label (Optional)
This is the name that is seen in the App UI by the app users.
72 AppCenter User Guide
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Example: "Database table view" in
is the parameter label.
Figure 3 - 10: Input Parameter Label
Tip:
When a label is not provided by the developer, the parameter name will be used for the label.
Default value (Optional)
By default, most input parameters appear blank to the user in the App UI. The developer can add a value to the parameter when the App UI is shown to the user.
Optional parameter
The developer can specify that an input parameter value is optional, which means it’s not required from the app user. If this checkbox is not selected, the user is forced to enter a value for the parameter before they can run the app.
When optional parameters are specified, AppCenter requires the app code to check if a value is valid before attempting to use it. In Java, a check is made to see if the value is NULL.
73
Developing and Setting Up Apps
Building Apps
Description (Optional)
The description of the parameter instructs the app user how to use the parameter.
Example: In
, the text "Enter the fully qualified name" is the parameter description.
Figure 3 - 11: Input Parameter Description
Tab (Optional)
Input parameters can be organized in different sections (tabs) in the UI. The developer can type a new tab name in the selector, and a tab will be created for this parameter. To combine parameters into the same tab, specify the same tab name for the other input parameters.
Developers can define as many tabs as they want.
Types of Input Parameters
Text Input Parameter
A text field is a basic text control that enables the user to type a small amount of text, and has seven common input fields.
74 AppCenter User Guide
App Builder View
Figure 3 - 12: Text Input Parameter Type, App Builder View
Developing and Setting Up Apps
Building Apps
AppCenter User Guide
App UI View
Figure 3 - 13: Text Input Parameter, App UI View
XML Tag
<parameter description = "" label = "" name = "" type =
"Text"
optional =
"false"
default = "" tab = "" />
Access the Parameter
Table 3 - 5: Text Input Parameter, Java and SQL Code
Java
String text = (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
75
Developing and Setting Up Apps
Building Apps
Text area Input Parameter
Text area is similar to a text field, but the user can enter more that one line of input. It has an additional setting,
Custom text area width
, which is used to specify the width of the text area in the App UI. The width is specified in pixels.
App Builder View
Figure 3 - 14: Text area Input Parameter Type, App Builder View
76
App UI View
Figure 3 - 15: Text area Input Parameter, APP UI View
XML Tag
<parameter description = "" label = "" name = "" type =
"textarea"
optional =
"false"
default = "" tab = "" size = "
5 00px"
/>
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Access the Parameter
Table 3 - 6: Text area Input Parameter, Java and SQL Code
Java
String textarea = (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
Password Input Parameter
Password fields are similar to text fields; they have seven basic attributes. The difference is that what is entered in a password field shows up as dots on the screen to prevent others from reading the password on the screen.
App Builder View
Figure 3 - 16: Password Input Parameter Type, App Builder View
AppCenter User Guide
App UI View
Figure 3 - 17: Password Input Parameter, App UI View
XML Tag
<parameter description = "" label = "" name = "" type =
"password"
optional =
"false"
default = "" tab = "" />
77
Developing and Setting Up Apps
Building Apps
Access the Parameter
Table 3 - 7: Password Input Parameter, Java and SQL Code
Java
String password = (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
Number Input Parameter
The Number parameter is similar to text field, but the user input is restricted to only numbers
(decimal or integer). The number is always converted to double format when accessed by Java/
SQL. Additional settings include
Min and
Max fields, which limit the user to the minimum or maximum value of the number.
App Builder View:
Figure 3 - 18: Number Input Parameter Type, App Builder View
78
App UI View
Figure 3 - 19: Number Input Parameter, App UI View
XML Tag
<parameter description = "" label = "" name = "" type =
"number"
optional =
"false"
default = "" tab = "" min = "" max = "" />
AppCenter User Guide
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Access the Parameter
Table 3 - 8: Number Input Parameter, Java and SQL Code
Java
Double number = (Double) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
Date Input Parameter
Date enables the user to enter the date in the UI date selector as shown in
additional settings allow the developer to restrict users to the minimum or maximum date.
The
Format selector enables the developer to select one of the following formats that are available to the app during runtime:
• Unix Epoch, Timestamp (MM-dd-yyy HH:mm:ss)
• Timestamp with time zone (MM-dd-yyy HH:mm:ss+- HH:mm)
• Date (MM-dd-yyyy)
If the developer chooses
Unix Epoch
, the app will receive a Long type value; similarly, if the developer chooses
Timestamp
,
Timestamp with time zone
, or
Date
, the value returned will be a
String datatype.
79
Developing and Setting Up Apps
Building Apps
App Builder View
Figure 3 - 20: Date Input Parameter Type, App Builder View
80 AppCenter User Guide
Date Input Parameter (Continued)
App UI View
Figure 3 - 21: Date Input Parameter, App UI View
Developing and Setting Up Apps
Building Apps
AppCenter User Guide
XML Tag
<parameter default = "" optional = "false" description = "" label = "" max = "" tab = "" min = "" name = "" format = "" type =" Date "
/>
Access the Parameter
Table 3 - 9: Date Input Parameter, Java and SQL Code
Java
String date = (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
Long unix_epoch = (Long) ctx.getParameters().get("name_of_inp ut_parameter");
${name_of_input_parameter}
81
Developing and Setting Up Apps
Building Apps
Checkbox Input Parameter
A checkbox is an input parameter that permits the user to make a binary choice (i.e., a choice between one of two mutually-exclusive options. For example, the user may have to answer
'yes' (checked) or 'no' (not checked) on a simple yes or no question. It has only the basic seven attributes.
App Builder View
Figure 3 - 22: Checkbox Input Parameter Type, App Builder View
82
App UI View
Figure 3 - 23: Checkbox Input Parameter, App UI View
XML Tag
<parameter description = "" optional = "false" label = "" name = "" default = " true " name = "" type =" Checkbox " tab = "" />
Access the Parameter
Table 3 - 10: Checkbox Input Parameter, Java and SQL Code
Java
Boolean checkbox = (Boolean) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Range Input Parameter
Range is a horizontal, graphical element slider with a single handle that can be moved with the mouse or arrow keys. In the additional settings section, the
Min value,
Max value, and
Increment are required fields. The
Range parameter accepts only integer values.
App Builder View
Figure 3 - 24: Range Input Parameter Type, App Builder View
AppCenter User Guide
App UI View
Figure 3 - 25: Range Input Parameter, APP UI View
XML Tag
<parameter default = "" optional = "false" description = "" label = "" increment = "" max = "" min = "" name = "" type =" Range " tab = "" />
83
Developing and Setting Up Apps
Building Apps
Access the Parameter
Table 3 - 11: Range Input Parameter, Java and SQL Code
Java
Integer range= (Integer) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
Label Input Parameter
Label provides instructions to the user from the developer. It does not have a default value or
Label field because it does not have any role in logic functioning of the app.
App Builder View
Figure 3 - 26: abel Input Parameter Type, App Builder ViewL
App UI View
Figure 3 - 27: Label Input Parameter, App UI View
XML Tag
<parameter label = "" name = "" type =" Label " tab = "" />
84 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Upload Input Parameter
Upload enables users to upload files from their system for use when a job is run. The files could be text files, image files, or other data. For text files, file input would allow more convenient mechanisms than typing (or cutting and pasting) large pieces of text. The type of file could be specified in the
Additional settings section. The uploaded file is placed in the server in an app workspace location. The developer can access the file using the name from this location.
App Builder View
Figure 3 - 28: Upload Input Parameter Type, App Builder View
AppCenter User Guide 85
Developing and Setting Up Apps
Building Apps
Upload Input Parameter (Continued)
App UI View
Figure 3 - 29: Upload Input Parameter, App UI View
XML Tag
<parameter format = "
.pdf, .xml
" optional = "false" name = "" type = "Upload" description = "" label = "" default = "" tab = "" />
Access the Parameter
Table 3 - 12: Upload Input Parameter, Java and SQL Code
Java
String file_location= (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
86 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Menu Input Parameter
Menu is a drop-down list of items. It also allows users to type information to search for the required item. In the additional settings, the menu item can be added with name and value.
The name shows up to the users; the value is returned to the app. Users can type text if the required option is not present in the dropdown. The
Menu parameter also enables multiple inputs to be selected.
App Builder View
Figure 3 - 30: Menu Input Parameter Type, App Builder View
AppCenter User Guide 87
Developing and Setting Up Apps
Building Apps
Menu Input Parameter (Continued)
App UI View
Figure 3 - 31: Menu Input Parameter (App UI View)
XML Tag
<parameter allows-input = " true " max = "0" min = "0" multiple = "true" name = "" t ype =" Menu " description = "" label = "" default = "" tab = "" optional = " false
" >
<options>
<options label = " " value = "" />
</options>
</parameter>
Access the Parameter
Table 3 - 13: Menu Input Parameter, Java and SQL Code
Java
String multiple_false= (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
List<String> multiple_true=
(List<String>) ctx.getParameters().get("name_of_inp ut_parameter");
${name_of_input_parameter}
88 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Date look back Parameter
Date look back enables developers to declare a menu type with past dates drop-down as shown in
The user can add individual items apart from the default types, if the developer chooses
Allow users to enter number of days
. It enables users to enter an integer number. The days entered will be deducted from the current date and returned to the app.
The developer can choose from the formats shown, which need to be available to the app. If the developer chooses
Unix Epoch
, the app will receive a Long type value. If the developer chooses
Timestamp
,
Timestamp with time zone
, or
Date, the value returned is a String datatype.
App Builder View
Figure 3 - 32: Date look back Parameter, App Builder View
AppCenter User Guide
App Builder View (Continued)
Figure 3 - 33: Date look back Parameter, Format, App Builder View
89
Developing and Setting Up Apps
Building Apps
Data look back Parameter (Continued)
App UI View
Figure 3 - 34: Date look back Parameter, App UI View
XML Tag
<parameter allows-input = " true " name = "" type =" Date look back " description = "" label = "" default = "" tab = "" optional = " false
" />
Access the Parameter
Table 3 - 14: Date look back Input Parameter, Java and SQL Code
Java
String date = (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
Long unix_epoch = (Long) ctx.getParameters().get("name_of_inp ut_parameter");
${name_of_input_parameter}
90 AppCenter User Guide
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Input tables selector Input Parameter
Input table selectors is similar to
Menu
; the items in the dropdown are the input tables declared in the app as part of portability. The input table names are returned to the app. The developer can choose to allow multiple selections of input tables. In Java, the actual name is returned as string; if multiple selection is selected then List<String> is returned.
App Builder View
Figure 3 - 35: Input tables selector Input Parameter, App Builder View
App UI View
Figure 3 - 36: Input tables selector Input Parameter, App UI View
91
Developing and Setting Up Apps
Building Apps
Input tables selector Input Parameter (Continued)
XML Tag
<parameter name = "" type =" Input tables selector " description = "" label = "" default = "" tab = "" optional = " false " multiple =" true " />
Access the Parameter
Table 3 - 15: Input tables selector Input Parameter, Java and SQL Code
Java
String multiple_false= (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
List<String> multiple_true=
(List<String>) ctx.getParameters().get("name_of_inp ut_parameter");
${name_of_input_parameter}
92 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Table column selector
Table column selector enables column names to be selected from a specific table. The column needs to be chosen from the list of column names from the Table column dropdown. In Java, the actual name is returned as a string. If multiple selection is chosen, List<String> is returned.
App Builder View
Figure 3 - 37: Table column selector Input Parameter, App Builder View
AppCenter User Guide 93
Developing and Setting Up Apps
Building Apps
Table column selector Input Parameter (Continued)
App UI View
Figure 3 - 38: Table column selector Input Parameter, App UI View
XML Tag
<parameter name = "" type =" Table column selector " description = "" label = "" default = "" data-source = "" tab = "" optional = " false
" multiple =" true "
/>
Access the Parameter
Table 3 - 16: Table column selector Input Parameter, Java and SQL Code
Java
String multiple_false= (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
List<String> multiple_true=
(List<String>) ctx.getParameters().get("name_of_inp ut_parameter");
${name_of_input_parameter}
94 AppCenter User Guide
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Column values selector Input Parameter
Column values selector presents to the app user all values of a column in a drop-down list, filtering out any duplications.
Use the option field
List values from column to specify the source column. You can select either a column of a predefined input table, or type in the fully-qualified name of the column
(e.g., sales_table.item).
Using the option field filter table rows by parameter values
, you can use other app input fields to define a filter for the values listed by the column value selector.
For example, a column value selector named "sold item” has been defined to list the values in
, which includes sold items and sale location.
Table 3 - 17: Column values selector Input Parameter, Example Filter item
Sunscreen
Snow boots
Sunglasses
Umbrella location
CA
CO
CA
NY
If "sales.item" is specified in the
List values from column field, you can enable the app user to limit the listed items by specifying the location in another input field by defining another input field named "location" to match the name of the column to filter by. (This field can be a text input field, or a column value selector of this same table, etc.). For
Filter table rows by parameter values
, you would enter the name of that field: "location."
The user will be presented with the following two input fields in the app UI:
• location
• sold item
When the user enters "CA" in the "location" input field, the "sold items" will list only items sold in CA. The "sold item" selector issues the following select statement to select the values to be listed: select (distinct "item") from "sales_table"."item" where "item" IS NOT
NULL and "location" = "CA";
You could also build a recursive dependency of column value selectors, enabling the user to filter down table rows by adding filters on multiple columns. For example, in a car sales inventory, filter by make, then by year, then by color, etc.
Note:
When using input tables as a source for the column value selector, note that the column names of the configured input table may not match the name of the input field to filter by.
95
Developing and Setting Up Apps
Building Apps
Column values selector Input Parameter (Continued)
App Builder View
Figure 3 - 39: Column values selector Input Parameter, App Builder View
App UI View
Figure 3 - 40: Column values selector Input Parameter, App UI View
96 AppCenter User Guide
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Column values selector Input Parameter (Continued)
XML Tag:
<parameter name = "" type =" Column values selector " description = "" label = "" default = "" tab = "" optional = " false " multiple =" true " data-source = "" filters =
"" />
Access the Parameter:
Table 3 - 18: Column values selector Input Parameter, Java and SQL Code
Java
String multiple_false= (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
List<String> multiple_true=
(List<String>) ctx.getParameters().get("name_of_inp ut_parameter");
${name_of_input_parameter}
Subselect Input Parameter
Subselect is a special type of input parameter; it is dependent on other input parameters, as shown in t
Figure 3 - 41 . The parent is the parent input parameter name that is a required field.
If Subselects are made non-optional, the parent must be non-optional. In Java, the Subselect is accessed similar to Input table selector.
Figure 3 - 41: Subselect Input Parameter Dependencies
97
Developing and Setting Up Apps
Building Apps
Subselect Input Parameter (Continued)
App Builder View:
Figure 3 - 42: Subselect Input Parameter Type, App Builder View
App UI View:
Figure 3 - 43: Subselect Input Parameter, App UI View
98
XML Tag:
<parameter name = "" type =" Subselect " description = "" label = "" default = "" tab = "" optional = " false
" multiple =" true " data-source = "" />
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Subselect Input Parameter (Continued)
Access the Parameter:
Table 3 - 19: Subselect Input Parameter, Java and SQL Code
Java
String multiple_false= (String) ctx.getParameters().get("name_of_inp ut_parameter");
SQL
${name_of_input_parameter}
List<String> multiple_true=
(List<String>) ctx.getParameters().get("name_of_inp ut_parameter");
${name_of_input_parameter}
Defining Input Tables
Input tables define the data table needed by the app to access the data. An input table is defined by its name and structure, which can be mapped later to actual data tables or views.
(See
.)
The app logic references the table name and its column names. At runtime, the AppCenter platform translates the actual data table (and its columns) names into the apps input table
(and columns) names.
To add input tables:
1
2
3
Click the
Click
Input Tables
Add Table
.
tab.
A parameter appears that defines the input table structure. To delete the table or one of its columns, click the
Delete button.
Configure the following table settings:
Table 3 - 20: Input table settings
Field
Input Table Name
Description
Optional table?
Description
Enter the name of the table.
Enter a description of the table. This description will appear in the app configuration page, and help those installing the app understand the type of data required.
Select this check box if this table is optional.
Optional means that the app can still operate without this data if, after installation, this input table is not mapped to any data table. The app code should check if the table is available before trying to access it.
4
To add columns to the table, click
Add Column
.
AppCenter User Guide 99
Developing and Setting Up Apps
Building Apps
Figure 3 - 44: Input Table, Add Column Button
100
5
Configure the following column fields:
Table 3 - 21: Column definition fields
Field
Column Name
Type
Description
Optional column?
Description
Enter the name of the column.
Choose the column type from this drop-down menu.
Enter a description of the column.
Select this check box if this column is optional.
8
9
6
7
10
11
Repeat the previous two steps to add additional columns.
To save time, import a table structure from an actual data table. (See
Repeat these steps to add another input table.
To delete a table or column, click its
Delete button.
To import the schema of an existing table, click
Import Table Structure
. (See
Click
Save Draft
(or click
Save as a new App Draft if editing a previously saved app).
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Defining Output Tables
Benefits
• The app is made portable. After installation, it can be configured to use tables with different naming conventions than those used in the app logic. The AppCenter platform takes care of table name mapping at runtime.
• Output tables are created automatically by the AppCenter platform during the app configuration time; therefore, any issue with creating the output table can be identified and resolved early on.
• Output tables enable concurrency.
• When the app is executed by several users or executed multiple times by the same user, the
AppCenter platform will generate a temporary table name (made by adding a unique id to the actual output table name). Once the task is complete, AppCenter transfers the result data into the app’s single official output table with the task id added as a qualifier. When a user wants to view the data (either as a data visualization or with a table-view visualization), AppCenter will select only the data added by the specific task.
• Output tables enable apps to run concurrently, while eliminating the need from the developer to manage the concurrency aspect. For additional guidelines, see
.
Guidelines
To use the output table later in your SQL code, address the table name. (AppCenter will take care of mapping the name to the actual configured name.)
To address a column of an output table in your SQL code, use the fully-qualified column name as in: my_table.my_column
.
In Java logic, you will need to use the ctx object to get the actual table name and column names.
Defining the Output Table and Structure
To define the name and structure of an output table for your app:
1
Click
Output Tables
.
You can add two types of output tables: normal tables and visualization tables. To add a normal output table, click
Add Table
.
Tip:
Visualization tables store visualizations generated by the SQL-MR Visualizer function.
AppCenter User Guide 101
Developing and Setting Up Apps
Building Apps
2
By default, a rectangular area appears. This area contains the fields that describe the default output table.
Complete the following fields:
Table 3 - 22: Output Table Fields
Field
Output Table Name
Distribution Key
Description
Description
Enter the name of the output table.
Enter the name of the column used for table distribution.
Enter a description of the table.
3
To add columns to the table, click
Add Column or
Import Columns.
(See
Figure 3 - 45: Output Table, Add Column Button
102
4
Configure the following column fields:
Table 3 - 23: Column Definition Fields
Field
Column Name
Type
Description
Description
Enter the name of the column.
Choose the column type from the drop-down menu.
Enter a description of the column.
5
6
7
Repeat the previous two steps to add additional columns.
Repeat all steps above to add another output table.
To delete columns or tables, click the corresponding
Delete button.
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
8
To add a visualization table, click
Add Visualization Table
.
The process of adding visualization tables is the same as normal tables, except for two additional fields:
Table 3 - 24: Visualization Output Table Fields
Field
Visualization ID
Column
Vis. Data Column
Description
Enter the name of the column that uniquely identifies a visualization.
Enter the name of the column containing visualizations.
9
Click
Save Draft
(or click
Save as a new App Draft if editing a previously saved app).
Adding Dependencies
When the app code requires the use of a SQL-MR function, it is good practice to define this dependency when building the app. When the app is later installed and configured to connect to a database, the AppCenter platform will test to see if the target database has the required functions installed and available, and if not, it will notify the user. Additionally, if the required function is uploaded and bundled with the app, it will get automatically installed by
AppCenter when the app is configured to connect to a database.
2
3
To add dependencies:
1
Click
Dependencies
.
This window enables you to add the names and versions of the functions on which your app depends.
Click
Add Dependency
.
Configure the following fields:
Table 3 - 25: Column Definition Fields
Field
Name
Version
Description
From the drop-down menu, choose a function on which your app depends.
Enter the version of the function.
4
To add a custom function, click
Add Custom Function
.
AppCenter User Guide 103
Developing and Setting Up Apps
Building Apps
Figure 3 - 46: Dependencies, Add Custom Function Button
5
6
To upload the function to the server so that it is available for use by the app, click
Upload function
.
Configure the following fields:
Table 3 - 26: Column Definition Fields
Field
Name
Developed By
Version
Description
From the drop-down menu, choose a function on which your app depends.
Enter the name of the developer.
Enter the version of the function.
7
Click
Save Draft
(or click
Save as a new App Draft if editing a previously saved app).
104 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Adding Custom Visualizations
3
4
1
2
5
To add custom visualizations:
1
In the
App Info tab, ensure the
Custom Visualizations check box is selected.
Click
Visualizations
.
Click
Add Custom Visualization
.
Click
Upload Visualization
.
Locate the Visualization and click
Open
.
Click
Save Draft
(or click
Save as a new App Draft if editing a previously saved app).
Adding Documentation
When building apps, you can provide documentation that users of the app can review to learn how to use the app.
3
4
1
2
To add user documentation for your app:
Click
Documentation
.
Enter the guide’s content in the field.
Use the formatting buttons and menus to format the content.
Click
Save Draft
(or click
Save as a new App Draft if editing a previously saved app).
Creating Setup Instructions
When building apps, you can provide setup instructions that AppCenter administrators can reference to learn how to deploy your app.
3
4
1
2
To add app setup documentation for your app:
Click
Setup Instructions
.
Enter the guide’s content in the field.
Use the formatting buttons and menus to format the content.
Click
Save Draft
(or click
Save as a new App Draft if editing a previously saved app).
AppCenter User Guide 105
Developing and Setting Up Apps
Building Apps
Installing the App
After you are done building the app, you can install it in AppCenter.
1
2
To install an app:
In the App Builder window, click
Install
.
To install a saved app draft, edit the draft and click
Save
.
AppCenter builds the app and installs it in AppCenter. The icon of the app appears in the
Apps section of AppCenter.
If you haven’t specified an icon for the app, a default icon will be assigned.
Figure 3 - 47: Default App Icon
To configure the app for running in AppCenter, see
To edit app settings that you configured while building the app, see
.
Downloading the App
To download an app to be installed on a a different AppCenter server:
1
In the App Builder window, click
Download
.
2
AppCenter builds the app and adds it to a zip file along with all supporting files.
Install the app on the target AppCenter server.
To configure the app for running in AppCenter, see
To edit app setting that you configured while building the app, see
.
106 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Generating Data Visualizations
•
Visualization Wizard Basic Options
•
Visualization Wizard Basic Options
Visualization wizard includes the four basic options shown in
Figure 3 - 48: Visualization Options
Table 3 - 27: Visualization Wizard Basic Options
Option
Data (Table/View)
Data Format
Visualization Type
Visualization Title
Description
Name of the view or the table that is the source of data for the visualization.
If the app has an output table, it appears in the drop-down.
Type of data. If data is the result of cfilter query, for example, the data format is cfilter output schema; however, if the data is not of any particular format, the type is "Any." Visualization wizard adapts to the source data format.
When the user selects a particular data format, the rest of the options in visualization wizard change based on the selection.
Updated based on the data format.
Title describing the visualization.
AppCenter User Guide 107
Developing and Setting Up Apps
Building Apps
Item 1
Milk
Milk
Milk
Milk
Bread
The options that are common to most visualizations include the following:
Aggregation: Ordered/Unordered
If ordered is selected, records between the same pair of column items will not be summed up
(i.e., direction is important). If unordered is selected, records between the same pair of items will be summed up.
: is an input example.
Table 3 - 28: Sample Input Data, Ordered Aggregation
Item 2
Bread
Butter
Butter
Bread
Milk cntb
4
4
2
3
2 cnt1
7
5
5
5
3 cnt2
5
7
5
5
5
Based on the aggregation type, the summed-up value (affinity) would be like the example in
Figure 3 - 49: Visualization Affinity Example, Ordered Aggregation
108 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
The same data represented in a sigma graph would be as shown in
Figure 3 - 50: Sigma Graph Example, Ordered Aggregation
AppCenter User Guide
Data Series Column
Column entered here would be used as a series qualifier. The number of series in the final visualization will be equal to number of distinct entries in this column.
includes sample data series.
Table 3 - 29: Sample Data Series
Category tablet tablet tablet phone phone phone desktop desktop desktop
50
100
200
100
Sales
100
200
250
80
60
Month
January
February
March
January
February
March
January
February
March
109
Developing and Setting Up Apps
Building Apps
If month is chosen as the data series columns, the visualization would have three series, namely, January, February, and March.
and
are examples of how the visualizations would look like for such multi-series cases:
Figure 3 - 51: Bar Chart Example, Month Data Series Columns
Figure 3 - 52: Pie Chart Example, Month Data Series Columns
110 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Visualization Options by Type
This section describes visualization types and the various options for each type.
Table-View Visualization Type
All table formats are supported for the Table-View data visualization. There are no special options available.
• When an app runs code to generate a Table-View visualization for a standard database table, all data in the table will be viewable by the end user.
• When an app runs code to generate a Table-View visualization for one of the app's official output tables, the data viewable by the end user in the table-view will include only data added during that particular run.
Figure 3 - 53: Visualization Options
AppCenter User Guide 111
Developing and Setting Up Apps
Building Apps
Chord Visualization Type
Chord is supported for the following data format:
• cfilter_output_schema
The options available for chord are:
• Aggregation
• Data Series Column
Figure 3 - 54: Chord Visualization Type Format and Options
112
Sigma Visualization Type
Sigma is supported for the following data formats:
• Cfilter output schema
• Npath output schema
The options available for Sigma are:
• Aggregation
• Data Series Column
• Dimension Table - Table containing additional information about vertices nodes in the sigma graph information
• Dimension Table Join Column - Column containing the node identifiers in the dimension table
• Columns containing dimension information - Columns containing additional information for the node
AppCenter User Guide
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Sigma Visualization Type (Continued)
For example, if we generate sigma on npath output schema as shown here, we can attach more information for nodes using a dimension table.
Table 3 - 30: Sample Sigma Data (id, storeid, cnt, path)
5
2
3
4
7
9 id
6
7
10 storeid
1
1
1
1
1
1
1
1
1 cnt
2
6
1
6
1
6
50
8
8 path
[butter,muffins,chocolate,milk,eggs,apples,cereal]
[muffins,butter,flour,apples,chocolate,milk,eggs]
[butter,chocolate,flour,soup,muffins,milk,eggs]
[eggs,flour,milk,chocolate,apples,soup,muffins]
[muffins,chocolate,soup,apples,eggs,cereal,milk]
[milk,butter,flour,eggs,cereal,apples,soup]
[milk,cereal,flour,eggs,butter,muffins,chocolate]
[eggs,butter,chocolate,apples,soup,milk,cereal]
[eggs,milk,muffins,flour,cereal,apples,soup]
Table 3 - 31: Sample Sigma Data (id, Data) id eggs muffins flour
Data
Brown Eggs
English Muffins
All Purpose Flour
113
Developing and Setting Up Apps
Building Apps
We can add the dimension table information as shown in
.
Figure 3 - 55: Sigma Visualization, Data Format and Options
114 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Sigma Visualization Type (Continued)
The generated Sigma would have the additional information attached to nodes for eggs, muffins, and flour.
Figure 3 - 56: Sample Sigma Graph
AppCenter User Guide
Sankey Visualization Type
Sankey is supported for the following data formats:
• Cfilter output schema
• Npath output schema
The options available for Sankey are:
• Aggregation
• Data Series Column
• Alignment - Determines if the root node(s) of the graph will be shown towards left or towards right
115
Developing and Setting Up Apps
Building Apps
Sankey Visualization Type (Continued)
Figure 3 - 57: Sankey Visualization, Data Format and Options
Tree Visualization Type
Tree is supported for the following data format:
• Npath output schema
The option available for Tree is:
• Data Series Column
Figure 3 - 58: Tree Visualization, Data Format and Options
116 AppCenter User Guide
AppCenter User Guide
Hierarchical Clustering Visualization Type
Hierarchical Clustering is supported for the following data format:
• Npath output schema
The option available for Hierarchical Clustering is:
• Data Series Column
Figure 3 - 59: Hierarchical Clustering Visualization, Data Format and Options
Developing and Setting Up Apps
Building Apps
dtree Visualization Type
dtree is supported for the following data format:
• Forest Drive output schema
The option available for dtree is:
• Data Series Column
Figure 3 - 60: dtree Visualization, Data Format and Options
117
Developing and Setting Up Apps
Building Apps
Pie, Bar, Line, and Statistics Visualization Types
Pie, bar, and statistics are supported for the following data formats:
• Cfilter output schema
• Sessionize output format
• A table with x and y columns
The extra options available for Pie/Bar/Line/Statistics are:
• Aggregation
• Data Series Column
• Axis 1 Title/Axis 2 Title - Provides a title to x and y axes of the two-dimensional graph
• Unit - Displays a unit for example miles, pounds, seconds, etc. to the axis values
• Type - CATEGORICAL/NUMERIC/DATETIME/ELAPSEDTIME: Defines the type of axes
There are four types of axes:
• Categorical axis - Used when the axis denotes categories. For example, in a graph depicting number of people for different cities. X-axis representing city name would be categorical
• Numeric axis - Used when axis denotes numbers. In the example, the Y axis denoting the number of people would be a numeric axis
• Datetime - Used when the axis contains sequence of dates
• Elapsedtime - Similar to Datetime, but time values represent duration
Figure 3 - 61: Pie, Bar, Line, and Statistics Visualization, Data Format and Options
118 AppCenter User Guide
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Columns that can be used as one of the axes listed should be one of the types indicated in
:
Table 3 - 32: Column Types for Axes
Coordinate Axes Type Acceptable SQL Data Types categorical numeric datetime elapsedtime varchar, bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint, character (n), text, interval, ip4, ip4range, date, time, timestamp bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint time [(p)] [without time zone], time [(p)] with time zone, timestamp
[(p)] [without time zone], timestamp [(p)] with time zone, date, bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint
Wordcloud/Wordbubble Visualization Types
Wordcloud and wordbubble are supported for the following data formats:
• tfidf output schema
• findnamedentity output schema
The options available for wordcloud and wordbubble are:
• Aggregation - supports only unordered (default)
• Data Series Column
Figure 3 - 62: Wordcloud/Wordbubble Visualization, Data Format and Options
119
Developing and Setting Up Apps
Building Apps
App Building Common Tasks
•
•
•
Importing Columns
When defining input and output tables for your app, you can save time by using the
Import
Columns functionality to import columns from tables in your Aster Database.
3
4
1
2
To import columns:
From the
Connection Profile
, select a connection profile.
From the
Table drop-down menu, select a table.
Click
Import Columns
.
For columns that you do not want to import, click the
Delete button.
Importing Table Structure
When defining input or output tables while building apps, you can use the
Import Table Structure functionality to import the structure of a table in your database.
3
4
1
2
To import table structure:
Click
Import Table Structure
.
From the
Database Connection drop-down menu, choose a database connection profile.
From the
Table drop-down menu, choose the table whose structure to import.
Click
Import Table Schema
.
Figure 3 - 63: Import Table Structure
120 AppCenter User Guide
Accessing App Drafts
To access app drafts:
1
Click
Drafts
.
Figure 3 - 64: App Drafts
2
Click the app to open the
App Builder window.
Developing and Setting Up Apps
Building Apps
AppCenter User Guide 121
Developing and Setting Up Apps
Building Apps
App Development Guidelines
The app you build may run perfectly fine each time you run it, but behave differently when executed by multiple users at the same time.
When the app creates or deletes a table and writes or reads data from a table, other running instances of the app may be doing the same thing on the same table.
To avoid race conditions and data corruption among apps, always run your app code inside a transaction and use temp tables.
When Transactions are not an Option...
In some cases, it is not possible to work inside a transaction (e.g., when using Aster driver functions such as cFilter). In this case, you can define an output table for the app. Output tables have unique instances per-app running instance.
Note:
Data from the unique instance tables accumulates as result data in the actual output table; therefore, if this data is used only for the purpose of internal data processing, remember to truncate the output table at the end of the run. (This truncation will apply only to the unique running instance data.)
Accessing Accumulated Data Between App Runs
In some cases, you may want to build an app that accumulates data between app runs and reads the data of previous runs, and it may be fine for multiple running instances of the app to just add more data into the same table. In this case, an app output table will not be appropriate, because the app has access to only the unique running instance of the output table during the run. Instead, you can create a normal fact table for the data accumulated from all running instances, but if your app takes parameters that affect the data, be sure to filter by these parameters with a select statement when reading from the table.
122 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Developing Java Apps Using Eclipse
AppCenter includes an app building tool, which is a good place to start defining and developing apps; however, the Java code editor of AppCenter is limited to basic features such as syntax highlighting and search (CTRL+F). This editor is useful for reviewing app logic or making minor changes.
For editing complex apps, it is recommended that you take advantage of a professional Java
IDE, such as Eclipse. IDEs like Eclipse offer code completion, online help, and much more.
Tip:
AppCenter supports editing apps in Eclipse version Luna or later.
As described in the section,
, an App is made of an archive containing an icon
(icon.png), an xml file (app.xml) and an app code file (MyApp.sql or MyApp.class); therefore, developing Java apps in Eclipse or other IDEs involves configuring the IDE to find the APP
SDK library, write a java class that implements the AppAPI interface, and include the compiled app's class file in the app's zip file.
AppCenter makes it easy to develop apps in Eclipse by providing a template project that already includes the App SDK and Javadoc. Everything is preconfigured, and all that is left to do is edit the app's java code.
Recommended Workflow
1
Go to the apps view, and click on
Build an app to open the App Builder tool.
Figure 3 - 65: AppCenter Home Page, Build an App
AppCenter User Guide 123
Developing and Setting Up Apps
Building Apps
2
Define the app's name, version, and other attributes.
Figure 3 - 66: App Info Tab
124 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
3
Download the app as an Eclipse project:
Switch to the
Logic tab, select the
Java option, and then click the
Download as an Eclipse project button at the bottom of the page.
Figure 3 - 67: App Logic, Java
AppCenter User Guide
The downloaded zip file contains an eclipse project.
Figure 3 - 68: Downloaded Zip File
4
Extract it to the location of your choice. For this example, we will use the location: c:\apps
125
Developing and Setting Up Apps
Building Apps
5
Open Eclipse, and take note of the workspace location.
Tip:
By default, the Eclipse workspace is: C:\Users\<user name>\workspace
6
Do the following to import the app project into Eclipse: a
Click
File->Import…
Figure 3 - 69: Java - Eclipse, File Menu, Import
126 AppCenter User Guide
AppCenter User Guide b
Select
Existing project into workspace
, and then click
Next
.
Figure 3 - 70: Java - Eclipse, Import Existing Projects into Workplace,
Developing and Setting Up Apps
Building Apps c
Browse to or enter the directory where you extracted and saved your app's Eclipse project, select your app project from the list of projects, and then click
Finish
.
Figure 3 - 71: Java - Eclipse, Import, Select root directory
127
Developing and Setting Up Apps
Building Apps
The project will be rebuilt (recompiled) automatically when loaded or when any change is saved. After the initial compilation, you should see a new
/output directory created in the project tree as shown in
.
Figure 3 - 72: Java - Eclipse, Output Directory
128 d
If you encounter any of the situations listed in
Table 3 - 33 , follow the recommended
action:
Table 3 - 33: Recommended Actions
Situation
You don’t see the output directory
You get notification about a compilation error
You get an error indicating
JAVA_HOME is not defined
Recommended Action
Select the project (Hello-World in the
example) and press
F5 to refresh the view.
Make sure you have Java SDK 7 installed and the environment variable
JAVA_HOME is set to point to the
SDK installation directory. (You will need to restart
Eclipse to apply the environment variable change.)
1
I n the
Java - Eclipse
window, click -
>Window
->Preferences
.
2 In the left pane, click
->Ant->Editor->Runtime.
3 In the
Classpath tab, expand
Global Entries
, click
.../tools.jar
, and then click
Apply
.
Note: The tools.jar location is based on Java installation directory (in the lib directory).
4
[Optional] Do the following to rename the app’s class and package: a
Browse to the java class and right-click -
>refractor->rename
.
b c
Rename the package mycompany to your organization's name.
Rename the class
MyApp to your app's name.
AppCenter User Guide
Figure 3 - 73: Java - Eclipse, MyApp Class
Developing and Setting Up Apps
Building Apps
5
Double click on
MyApp.java
to open your app in the editor, and begin writing the app logic.
Figure 3 - 74: Java - Eclipse, Code
AppCenter User Guide 129
Developing and Setting Up Apps
Building Apps
Writing java App Code
Java app classes implement the AppAPI interface (See
AppCenter AppAPI ), which defines the
following methods:
Table 3 - 34: Java App Code Methods
Method void onInstall(AppContext ctx) void onUninstall(AppContext ctx) void onLaunch(AppContext ctx) void onError(AppContext ctx, java.lang.Exception e)
Description
Called when the app is configured with a new database connection. This is an opportunity for the app to perform one-time operations for setting up administrative tables in the database, etc.
Called when the app database connection is changed or removed. This is an opportunity for the app to undo and clean up any setup that was done during onInstall.
Where the app's core logic is located. This method is executed every time the user launches a new task for the app.
Called when the onLaunch() method runs into errors (an exception is caught) or when the user actively cancels the running task.
130 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
CTX - The Task Context Object
Your code needs access to AppCenter services, such as logging, executing calls on the database, etc. For this purpose, each method gets a CTX object that can be used as shown in
Figure 3 - 75: CTX Object
AppCenter User Guide 131
Developing and Setting Up Apps
Building Apps
The AppAPI Javadoc
To review the AppAPI and the AppContext Javadoc, browse with your Eclipse package browser to doc->javadoc->index.html
. The documentation appears in the main view of
Eclipse as shown in
.
Figure 3 - 76: AppAPI and AppContext Javadoc
132
Concurrency Considerations
When developing app code, review and take into account the aspects of concurrency. For more information, see
AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Installing the app
Once you are done coding the app, click
Save
(CTRL+S) and Eclipse will build the app. In the directory
/output
, you will see two zip files; these files are your app with the source code and without the source code.
If you get any build errors, address them and try saving and building the app again.
Figure 3 - 77: Built App Directory
AppCenter User Guide
4
5
1
2
3
Testing the App
To test your app, install it on AppCenter as follows:
6
Open a web browser, and navigate to AppCenter.
In the
In the
All Apps
Open view, click on
Install an app
.
dialog, browse to the location where you saved your app (in our example it is: c:\apps
), and continue navigating to
<app name>\output\
.
Select the zipped app version, which includes the source code, and install it on AppCenter.
If your app requires configuration (at the very least - a connection to a database) be sure to follow the configuration instructions in
.
Open your app and try to launch it.
133
Developing and Setting Up Apps
Building Apps
Debugging the App Using the App Log
If you enter logging statements in your app code, such as ctx.logDebug("Some information")
, these messages will appear in the app log.
• To open the app log, go to the app UI, and click the
Log button.
Figure 3 - 78: App UI, Log Button
The log opens in a new tab of your web browser.
• If you run the app again, you can refresh the log tab to update the display.
• To clear the log, use the button shown in
Figure 3 - 79: App UI, Clear Log Button
Tip:
To avoid having to go back and forth between the app UI, the app log, and editing the app code, consider opening these in separate tabs of your browser.
Modifying App Attributes in App Builder and Updating Eclipse
Project
• To edit the app in the App Builder, click the wrench icon.
Figure 3 - 80: App UI, Edit App Button
Besides modifying code in the AppBuilder, you may want to update other attributes, such as the app icon, add an input parameter, etc.
To keep the app version in sync with the Eclipse editor and the online App Builder, select
Download as Eclipse project
(see
Developing Java Apps Using Eclipse
), and import the app back into Eclipse.
Hiding the Source Code
When you are ready to deploy your app for others to use, you can choose to reinstall the app without the source code. The app will function the same. The only difference is that no one has access to the source code of the app.
134 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
AppCenter AppAPI
The images in this section list the classes and interfaces included with the Java AppSDK.
Figure 3 - 81: Java AppSDK, Classes and Interfaces
AppCenter User Guide 135
Developing and Setting Up Apps
Building Apps
Interface Summary
Interface AppAPI
Figure 3 - 82: Interface AppAPI, Method Summary and Method Detail (onLaunch)
136 AppCenter User Guide
Interface AppAPI (Continued)
Figure 3 - 83: Interface AppAPI, Method Detail (onInstall. onUninstall, onError)
Developing and Setting Up Apps
Building Apps
AppCenter User Guide 137
Developing and Setting Up Apps
Building Apps
Interface AppContext
Figure 3 - 84: Interface AppContext, Method Summary
138 AppCenter User Guide
Interface AppContext (Continued)
Figure 3 - 85: Interface AppContext, Method Summary (Continued)
Developing and Setting Up Apps
Building Apps
AppCenter User Guide 139
Developing and Setting Up Apps
Building Apps
Interface AppContext (Continued)
Figure 3 - 86: Interface AppContext, Method Detail (getParameters, getConstants, runSqlStatement, runSelectQuery)
140 AppCenter User Guide
Developing and Setting Up Apps
Building Apps
Interface AppContext (Continued)
Figure 3 - 87: Interface AppContext, Method Detail (getTable, logInfo, logWarn, logError, logDebug)
AppCenter User Guide 141
Developing and Setting Up Apps
Building Apps
Interface AppContext (Continued)
Figure 3 - 88: Interface AppContext, Method Detail (getDbUserName, getDbPassword, getDbName,
StartTransaction, commit)
142 AppCenter User Guide
Interface AppContext (Continued)
Figure 3 - 89: Interface AppContext, Method Detail (rollback, visualize)
Developing and Setting Up Apps
Building Apps
AppCenter User Guide 143
Developing and Setting Up Apps
Building Apps
Interface AppContext (Continued)
Figure 3 - 90: Interface AppContext, Method Detail (visualize, visualizeTable)
144 AppCenter User Guide
Class Summary
Class TableSchema
Figure 3 - 91: Class TableSchema, Field Summary, Constructor Summary
Developing and Setting Up Apps
Building Apps
AppCenter User Guide 145
Developing and Setting Up Apps
Building Apps
Class TableSchema (Continued)
Figure 3 - 92: Class Table Schema, Method Summary, Field Detail (actualTableName, pseudoToActualColumnNames), Constructor Detail (TableSchema)
146 AppCenter User Guide
Exception Summary
Class AppException
Figure 3 - 93: Class AppException, Constructor Summary
Developing and Setting Up Apps
Building Apps
AppCenter User Guide 147
Developing and Setting Up Apps
Building Apps
Class AppException (Continued)
Figure 3 - 94: Class AppException, Method Summary
Class AppException (Continued)
Figure 3 - 95: Class AppException, Constructor Detail (AppException, AppException, AppException)
148 AppCenter User Guide
Annotation Types Summary
Annotation Type Transactional
Figure 3 - 96: Annotation Types Summary, Annotation Type Transactional
Developing and Setting Up Apps
Configuring Apps
Configuring Apps
After installing an app, the next step is to configure it. Locate your app in AppCenter and click the
Configure app button (top-right corner of the icon of the app).
Tip:
Use the app’s setup instructions for configuration.
Figure 3 - 97: App Buttons
If the
Configure app button is orange, the app is not configured.
The App configuration page appears with up to six tabs, depending on the app.
AppCenter User Guide 149
Developing and Setting Up Apps
Configuring Apps
Table 3 - 35: App Configuration Tabs
Configuration Tab
Database
Connection
Input Tables
Description
Specifies the database connection the app uses to access data.
Output Tables
Constants
Access Control
Publishing
Maps the built-in input table and column definitions to the table and columns your app uses.
Maps the built-in output table and column definitions to the table and columns your app uses.
Defines the values of constants used in the app.
Specifies user permissions for accessing the app.
Enables sharing reports of this app outside of AppCenter. Once publishing is enabled, users can select any report and make it public and available to people outside of AppCenter by sharing a link to the report or by embedding a code snippet in an external page to display the report.
Note:
Embedding reports in an external page will not work unless AppCenter is set up with an officially signed SSL
Certificate”.
Configuring Database Connection Settings
To configure database connection settings for an app:
1
2
3
Click the
Click
Configure app button.
Database Connection
.
From the drop-down menu, select a database connection profile.
Figure 3 - 98: Database Connection List
150
4
If there is no connection profile in the drop-down menu, click
Create a connection profile
, which takes you to the
Settings > Database Connection window.
Click
Save
.
AppCenter User Guide
Developing and Setting Up Apps
Configuring Apps
Configuring Input and Output Tables
When developers build apps, they might specify input and output table and column names that are different from the table and column names that will be used by the app once it is deployed.
AppCenter gives you the flexibility to map the default input and output table and column names to the table and column names defined in your database.
1
2
3
To configure the input tables settings for your app:
Click the
Configure app button.
Click
Input Tables or
Output Tables
.
From the drop-down menus, choose the corresponding table or column name. AppCenter filters the tables or column names based on what you type.
Figure 3 - 99: Input Tables, Table or Column Name
4
5
Click
Test Configuration
.
Click
Save
.
Configuring Constants
If your app defines constants, you need to provide values for them.
To configure constants:
3
4
1
2
Click the
Click
Configure app
Constants
.
button.
For every constant, provide its value.
Click
Save
.
AppCenter User Guide 151
Developing and Setting Up Apps
Configuring Apps
Configuring Access Control Settings
Access control settings enable you to configure user access to the app.
1
2
3
To configure access control settings for an app:
Click the
Configure app button.
Click
Access Control
.
To allow all Aster Database and LDAP users, as defined in the
Settings > Authentication window, to access the app, click the allow access to all users radio button.
4
To allow selected users to access the app: a
Click the select the users who can access this app radio button.
b
Use the lookup field to look up users.
c
Click a user to move it to the list on the right (the list of allowed users).
Figure 3 - 100: Access Control, List of Users
152
5
Click
Save
.
Note:
In AppCenter’s global settings, the administrator can turn off or on the ability of developers to share their apps with others. If you are logged in with a developer account, and don’t see the option to share the app, contact the
AppCenter administrator.
AppCenter User Guide
Developing and Setting Up Apps
Configuring Apps
Configuring Publishing Settings
Using the Publish feature, AppCenter users can share app reports with others who do not have an AppCenter account. Once enabled, there are several ways to publish app reports for users outside of AppCenter:
• App users can select a specific app report and click on publish to get a URL that they can share with others for viewing the report.
Figure 3 - 101: Report Publishing Settings
• App users can also copy javascript code and embed the code in external web portals to embed the report in that portal.
• In the app publishing settings, users can copy a javascript code snippet that can be embedded into external web portals. This snippet will embed the app’s most recent successful report, which will get updated each time a new report is generated by the app
(requires a page refresh).
Tip:
All the options above are reversible at any point in time. When a published report is unpublished, it becomes unavailable to others. When published again, the same original URL as before will become usable again for displaying that same report.
AppCenter User Guide 153
Developing and Setting Up Apps
Editing Apps
Figure 3 - 102: App Publishing Settings
Editing Apps
To edit an app:
1
Click the
Edit button.
Figure 3 - 103: App Icon, Edit Button
154
2
3
Make the necessary changes.
For more information about editing apps, see
.
Click
Save
.
AppCenter User Guide
Developing and Setting Up Apps
Copying Apps
To create a new version of the app that incorporates your changes, click
Save as a new App Draft in the lower left of the page. AppCenter creates a new app draft.
Figure 3 - 104: App Save Options
4
Click
Close
.
Copying Apps
Developers and the AppCenter administrator can copy installed apps.
Figure 3 - 105: App Icon, Copy Button
Copying an app can help address these needs:
• Using the same app with a different configuration (i.e., for a different dataset or to be used by a different set of users).
• Leveraging an existing app and modifying the app to perform a slightly different task.
When copying an app, the new copy will be opened in the app editor for the user to provide a new name for the app.
If the original app has been installed by a different user, the current user is not considered to be the owner of the app; therefore, in addition to providing a new name, the user will need to enter a developer name and developer id for the new copy. The current user will be the owner of the new copy.
Preventing Others from Copying an App
Any app that is shared with other developers can be copied by them. If you need to protect your intellectual property, develop your apps in Java, and install it without including the source code.
AppCenter comes bundled with several example apps. Experiment, copy, configure, or modify any of these example apps.
AppCenter User Guide 155
Developing and Setting Up Apps
Setting Rules for Sharing Reports
Setting Rules for Sharing Reports
AppCenter lets you set default access control rules that will be applied whenever a new report is generated.
To set the reports sharing rules for an app:
1
2
Click an App.
Click the
Sharing button.
Figure 3 - 106: Report Sharing Options
156
3
4
5
Do one of the following:
• To share the results with all users (as defined in the
Settings > Authentication window), click the share with all users radio button.
OR
• To share the reports with selected users, click the share with all users radio button.
In the lookup field, enter full or partial text identifying names, IDs, or email addresses. Then, press
Enter
.
To add a user to the list of users to share reports with, click its corresponding entry.
To apply these sharing settings to existing reports, not just future reports, select the
Apply to existing reports check box.
Click
Apply
.
AppCenter User Guide
Developing and Setting Up Apps
Uninstalling Apps
Uninstalling Apps
To uninstall an app:
1
Do one of the following:
• In the
Apps view of AppCenter, in the
Icons view, click the
Uninstall button of the App.
Figure 3 - 107: App Icon, Uninstall Button
OR
• In the
List view, click the
Uninstall button for the app in the
Actions column.
Figure 3 - 108: Apps List View, Uninstall Button
AppCenter User Guide
2
3
Click the
Uninstall link for the app.
When prompted whether to uninstall the app, click
Uninstall
.
If the app has dependencies (SQL_MR functions) installed with it, a pop-up message appears like the one shown in
157
Developing and Setting Up Apps
Uninstalling Apps
Figure 3 - 109: App Uninstall, Dependencies
4
If prompted to uninstall dependencies, click
Uninstall All to remove the dependencies (SQL-
MR functions) from the database, or click
Keep Dependencies to keep the dependencies
(SQL-MR functions) in the database.
Note:
If you select Keep Dependencies and reinstall the app at a later time, the error message shown here appears.
Figure 3 - 110: App Uninstall Error
158
5
If this error message appears, manually log into the database and either remove the SQL-
MR functions or use a connection profile of a different database to continue.
AppCenter User Guide
Viewing App Logs
To view an app’s log:
1
In the Apps List view, click the
Log button.
Figure 3 - 111: Apps List View, Log Button
Developing and Setting Up Apps
Viewing App Logs
2
Alternatively, click the app and click the
Log button.
Figure 3 - 112: App Toolbar, Log Button
3
To clear the log of the app, click
Clear app log link for the app.
Figure 3 - 113: App Toolbar, Clear App Log Button
AppCenter User Guide 159
Developing and Setting Up Apps
Downloading Apps
Downloading Apps
AppCenter allows you to download apps into a zip file. You can archive the zip file, or install the app on another AppCenter server by uploading the zip file.
To download an app:
1
In the List view, click the
Download button of the App in the Actions column.
Figure 3 - 114: Apps List View, Download Button
160 AppCenter User Guide
CHAPTER 4
Using AppCenter
•
•
•
•
•
•
•
•
•
Understanding Report Data Visualizations
•
How AppCenter Works
AppCenter is a web-based application server that lets you run analytics apps and view data in visualizations.
The Visualizer function takes the output of Teradata Aster functions and produces visualization descriptions in JSON format that you can view in AppCenter.
AppCenter User Guide 161
Using AppCenter
How AppCenter Works
Figure 4 - 1: AppCenter Home Page
162 AppCenter User Guide
Launching an App
To launch an app:
1
In AppCenter, locate the app.
To locate apps, use the options in the sidebar or the Search field.
Figure 4 - 2: Sidebar, Apps
Using AppCenter
Launching an App
2
3
Click the app.
The app window appears.
Click the
Documentation button for instructions on how to use the app.
Figure 4 - 3: Documentation button
4
5
6
7
In Title field, enter the title of the visualization report that the app generates.
(Optional) In the
Tags field, enter space-separated keywords.
These keywords can help users locate the reports when using the Search field.
As specified in the app documentation, provide the required information for running the app.
To run the app, click
Run
.
To run the app at a later time, see
AppCenter User Guide 163
Using AppCenter
Scheduling an App to Run
Scheduling an App to Run
To schedule an app:
1
Complete steps 1-6 in the section
2
The app window appears.
Click
Schedule
.
Figure 4 - 4: Schedule Button
The Schedule Job window appears.
Figure 4 - 5: Schedule Job Window
164
3
4
Enter the date and time for running the app and specify the running frequency.
Click
Add Entry
.
AppCenter User Guide
Using AppCenter
Creating an App Collection
Creating an App Collection
To group apps, you can create app collections.
To create an app collection, click
Create Collection in the sidebar, and enter a name.
To add apps to the collection, drag-and-drop app icons to the collection.
Figure 4 - 6: Create Collection Button
AppCenter User Guide 165
Using AppCenter
Viewing Reports
Viewing Reports
•
•
Viewing Reports in Icon View
To display reports in icon view, click one of the links in the Reports section, and then click
Icons
.
Figure 4 - 7: Icons Button
In
Icons view, each report is represented by an icon or a collection of icons.
166 AppCenter User Guide
AppCenter User Guide
Using AppCenter
Viewing Reports
is an example of a report icon. When you mouse over the bottom part of the report icon or click the
Information button, buttons appear at the bottom of the icon and additional information is displayed. “Holiday Sale” in the
example is the area where tags for the report are displayed.
Figure 4 - 8: Report Icon
is an example of an icon for a reports collection. Clicking the collection icon displays the reports contained in the collection.
Figure 4 - 9: Report Collection Icon
167
Using AppCenter
Viewing Reports
Viewing Reports in List View
To display reports in list view, click one of the links in the Reports section, and then click
List
.
Figure 4 - 10: Reports in List View
Use the filtering fields to filter the list of reports.
Figure 4 - 11: Report Filter Fields
168
• The
App drop-down menu searches for reports by app.
• The
Viz drop-down menu searches for reports by visualization type, if applicable.
• The
Title
,
Subtitle
,
Tags
,
Owner
,
Created
,
Favorites
,
Flag
, and
ID fields further filter the list of displayed reports.
• The
Favorites drop-down menu lists only those reports that you have tagged as favorite.
AppCenter User Guide
Using AppCenter
Searching Reports
• The
Shared drop-down menu limits the list to those reports shared by you or shared with you.
Figure 4 - 12: Shared Drop-Down Menu
• To delete a report, click its
Delete button.
• To share a report, click its
Sharing button. (See
Searching Reports
You can use the search, sorting, and filtering features in icon view to search for reports.
Figure 4 - 13: Search, Sort, and Filter Features, Icon View
AppCenter User Guide
You can enter a search string in the search field.
You can choose reports are sorted using the
Sort drop-down menu.
You choose filtering options from the
Filter drop-down menu.
169
Using AppCenter
Creating Report Libraries
Creating Report Libraries
To group reports, you can use libraries.
1
2
3
To create a library:
Click
Create Library
.
Enter the name of the library.
Drag-and-drop reports into the library.
Sharing Reports
1
2
3
To share reports with other users in your organization:
Click the
Sharing button on the report icon.
To share the reports with all users, click the share with all users radio button.
To share the reports with selected users, click the share with all users radio button.
4 a
In the lookup field, enter full or partial text identifying names, IDs, or email addresses; then, then, press
Enter
.
b
To add a user to the list of users to share reports with, click its corresponding entry.
Click
Apply
.
170 AppCenter User Guide
Using AppCenter
Understanding Report Data Visualizations
Understanding Report Data Visualizations
To view report visualizations, click the report icon in icon or list view.
A new window appears displaying the report, as shown in
Figure 4 - 14: Report Visualization
AppCenter User Guide 171
Using AppCenter
Understanding Report Data Visualizations
In all of the visualization reports, the following buttons are displayed in the top bar.
Figure 4 - 15: Report Option Buttons
• Click the
Share button to share the report with other users.
• Click the
Edit report tags button to modify or add space-separated keywords that users can use when searching for this report.
• Click the
Favorite button to mark this report as a favorite.
• Click the
Flag button to flag the report.
• Click
Download to download a zip file that contains all files needed to display the report in a web page.
• Click
Show Parameters to display information about the report.
Saving Visualization Reports
Saving the Current State of a Report
AppCenter data visualizations are interactive; users can adjust layout controls and apply filters. When a user sets the control in a certain state and wishes to preserve that state, they can click on the
Save button before closing the window. The next time the visualization is displayed, the state of the controls will be reapplied.
Figure 4 - 16: Report Save Button
172 AppCenter User Guide
Using AppCenter
Troubleshooting
Saving a Copy of a Report
Users can save a copy of the report with the current state of controls by clicking the
Save As button. There is no limit on the number of copies that can be made.
Figure 4 - 17: Report Save As Button
Troubleshooting
For assistance with troubleshooting, do the following:
• Review the AppCenter 6.00 Release Notes.
• Review the sections
and
Contact Teradata Global Technical
AppCenter User Guide 173
Using AppCenter
Troubleshooting
174 AppCenter User Guide
CHAPTER 5
AppCenter Data Visualizations
•
Visualization Families and Types
•
•
Building Data Visualization Plugins
•
Visualization Families and Types
Data Visualization Families
AppCenter visualization families are listed in
Table 5 - 1: Visualization Families
Visualization Family
Network
Statistical
Wordcloud
Text
Table View
Description
Network graph with a set of nodes joined by lines or edges that represent relationships between the nodes.
Statistical graph that represents two-dimensional data in the form of bars, lines, or arcs.
Graph composed of words, where the size of each word represents a value associated with that word.
Set of words with HTML formatting tags.
Window to view records of a database table
AppCenter User Guide 175
AppCenter Data Visualizations
Visualization Families and Types
Data Visualization Types by Family
AppCenter data visualization types by family are listed in
Table 5 - 2: Visualization Types
Visualization Family
Network
Statistics
Wordcloud
Text
Table View
Data Visualization Types
Sigma, Chord, Sankey, Tree, Hierarchical Clustering, dtree
Bar, Line, Pie, Statistics
Wordcloud, Wordbubbles
Text
Table View
Data Series
For any type of visualization, data can be provided in groups that are plotted in the same context for comparison with each other.
Data Series Example
In a line visualization, one set of points may be plotted in a line to represent data for the year
2014, while another set of points is plotted to represent data for the year 2015. Each of the two sets of points is a series.
176 AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Data Visualizations
•
•
•
•
•
•
•
•
•
•
•
•
Sigma
The Sigma visualization is appropriate for depicting data networks, intuitively portraying items and how they relate to each other. AppCenter's Sigma graph provides options to filter, search, navigate, and customize the layout of the data displayed.
Sigma Example
A Nodes table contains a list of employees. Each employee is associated with a value, for example, the number of sales made by the employee. The edge table contains relations among the employees, for example, a summary of calls made between two employees (where the edge value is the number of calls made from one employee to another).
Table 5 - 3: Nodes Table
Node ID Node Name Node Value
3
4
1
2
Tom
Jerry
Pluto
Donald
10
50
5
5
AppCenter User Guide 177
AppCenter Data Visualizations
Data Visualizations
Table 5 - 4: Edge Table
From Node To Node
3
4
1
1
4
3
2
2
Edge Value
3
9
100
30
For example purposes, let’s assume the user wants to better understand employee interaction within the organization. A data table is useful, but a visual representation might be easier to study. In
, each circle (node) represents an employee. The higher the value of the node, the larger the node will appear.
Figure 5 - 1: Sigma Visualization Sample
178
The direction of the arrows indicate who called who.
The width and color of the arrow (edge) indicates the relative value of the edge.
The color range goes from yellow to red. The higher the value of the edge, the wider and closer to red in color it will be.
Dimension Data
Consider that we would like to see different attributes of the employees, such as the Employee
ID, Location of the Office, etc. Information that may appear in the same or even in another table is shown in
Table 5 - 5: Dimension Data
2
3
Node Id
1
Employee ID
TM100001
JJ100002
PP100089
Office Location
SF
SJ
NC
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Table 5 - 5: Dimension Data
Node Id
4
Employee ID
DO100045
Office Location
NJ
This information can be associated with the nodes of the graph, so that when you hover or click on the node, the dimension information will be displayed.
Figure 5 - 2: Sigma Visualization Example, Dimension Information
AppCenter User Guide 179
AppCenter Data Visualizations
Data Visualizations
Node Clusters (Node Color)
Sigma visualizations form clusters based on modularity that is calculated using the gephi engine. It uses the Luvian graph clustering algorithm to find subnetworks in a graph based on the strength of the relation of any two nodes, and assigns a nodes-distinct cluster color to the nodes. In
Figure 5 - 3 , there are 120 nodes and 984 edges, and their distinct cluster colors are
shown. In this example, the nodes with the same color represent employees from the same department in the company.
Figure 5 - 3: Sigma Visualization Example, Node Clusters
180
Sigma Visualization Interaction
• Use the mouse wheel to zoom in and out.
• Drag the page background to pan and reposition the entire visualization.
• Drag a node to reposition it.
• Hover the mouse pointer over a node to display additional information about that node.
• Click on a node to limit the displayed nodes to only those directly connected to the selected node.
• Click on the visualization background to exit this neighbor view.
AppCenter User Guide
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Sigma Visualization Options
Table 5 - 6: Sigma Options
Option
Search for nodes (text box)
Color Theme (drop-down)
Reset Zoom (button)
Exit Neighbor View (button)
Description
Highlight nodes based on text associated with the node. The user can restrict the search to only node names using the checkbox beside the text box; otherwise, the search will also look into the node dimension data.
Select from the different background colors for the visualization.
Reset the zoom of the visualization to the initial setting.
Appears only after a node is selected (clicked on) to view the node neighbors. It restores and displays again all the visualization nodes.
Filters Tab
Table 5 - 7: Sigma Filter Options
Option
Node Value (slider)
Visible Node (drop-down)
Edge Value (slider)
Detached Nodes (check box)
Cluster (drop-down)
Node Value (drop-down)
Attribute (drop-down)
Description
Filters nodes based on the value associated with the node. The dual-slider head enables users to filter and limit the range of nodes with both a high and a low watermark.
Select specific nodes to be displayed.
Filters edges based on the edge value. The dual-slider head enables users to specify a range of edge values. The two text boxes allow users to manually enter the minimum and maximum edge filter values.
Detached nodes are nodes that are not connected to any other node. As you apply filters, some nodes will become detached. You can choose to view or hide the detached nodes.
Specify which node clusters are to be shown.
Filter nodes to show only those with the selected value.
When node dimension data is provided for the Sigma graph, enables users to view only nodes with a specific dimension data value. For example, if nodes represent people and each node has dimension data of the person’s state of residence, users can choose to view only those for state=california.
181
AppCenter Data Visualizations
Data Visualizations
The filters described in
in are based on graph attributes associated with each node by the gephi engine.
Table 5 - 8: Sigma Filter Options, Graph Attributes
Option
Eccentricity (slider)
Closeness Centrality
(slider)
Betweenness Centrality
(slider)
PageRank (slider)
In-Degree (slider)
Out-Degree (slider)
Degree (slider)
Download Visible Nodes
(link)
Description
Captures the distance between a node and the node that is furthest from it. Therefore, a high eccentricity means that the furthest away node in the network is a long way away; whereas, a low eccentricity means that the furthest away node is actually quite close. The slider enables users to filter and display only nodes with an out-degree within the given range.
Measure that indicates how close a node is to all the other nodes in a network, whether or not the node lays on a shortest path between other nodes. A high closeness centrality means that there is a large average distance to other nodes in the network. The slider enables users to filter between different closeness centrality ranges.
Measure based on the number of shortest paths between any two nodes that pass through a particular node. Nodes around the edge of the network would typically have a low betweenness centrality.
A high betweenness centrality might suggest that the node is connecting various different parts of the network together. The slider enables users to filter between different closeness centrality ranges.
Iterative algorithm that measures the importance of each node within the graph based on the importance of the other nodes related to it. The higher the PageRank, the more reputable or important the node is in that graph. The slider enables user to filter between different PageRank ranges.
Number of directed edges that end on the node. The slider enables users to filter and display only nodes with an in-degree within the given range.
Number of directed edges that start from the node. The slider enables users to filter and display only nodes with an out-degree within the given range.
Total number of edges associated with the node (in-degree + outdegree for directed graph). The slider enables users to select between different ranges of node degrees.
Downloads a Comma-Separated Values (CSV) file that contains the nodes visible in the Sigma visualization. When filtering the displayed nodes, this may be useful to focus on a specific group of items and download them for future work.
182 AppCenter User Guide
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Layout
Nodes
Table 5 - 9: Node Label/Size Options
Option
Show Labels (check box)
Label Threshold (slider)
Scale Nodes (slider)
Node label (drop-down)
Scale Node Label (slider)
Node Size Reflects (dropdown)
Description
Determines if node labels appear on the screen.
Filters the node labels to show up based on the node values. The higher the node value means those are the node labels that show up first.
Increase or decrease node sizes in the visualization. (Node label sizes scale accordingly.)
Selects what the nodes label displays (node label, node value, node dimension data, or a graph attribute).
Enables users to increase or decrease node label sizes in the visualization.
Specifies which attribute of the nodes will determine the size of the nodes in the visualization. The attribute can be the Node Value, the node's Eccentricity, Closeness Centrality, Betweenness Centrality,
PageRank, In-Degree, Out-Degree, or Degree.
The controls described in
are used to create the best layout of nodes in the visualization.
Table 5 - 10: Node Layout Controls
Option
Layout Running (counter)
Layout Mode (drop-down)
Gravity (slider)
Scaling Ratio (slider)
Edge Influence (slider)
Strong Gravity (check box)
Attraction (check box)
Description
Counts backward in seconds (10, 9, 8, 7, etc.,) while the nodes are being rearranged on the screen to indicate how long it will take to reorganize the nodes.
Preset to auto. Enables users to change to preset1, preset2, preset3, or custom. This will rearrange the graph nodes in different ways on the screen. The visualization will take five seconds to realign nodes.
Each preset mode is a combination of settings for the remaining controls in this list.
Draws nodes closer to the center of the visualization, if set to a high level; disperses them toward the edges of the visualization if set to a very low level.
Changes the scale of the visualization to fit into the current window.
Gets the nodes with edges between each other closer or farther from each other in the visualization. The smaller the edge influence, the farther away the nodes are from each other
Draws the nodes as close to the center of the screen as possible.
Brings the nodes of the same type closer to each other.
183
AppCenter Data Visualizations
Data Visualizations
Table 5 - 10: Node Layout Controls (continued)
Option
LinLog Node (check box)
Repulsion (check box)
Description
Makes clusters tighter.
Makes individual nodes either more or less sensitive to other nodes from which they differ. When repulsion is checked, it pushes these nodes farther apart.
Edges
Table 5 - 11: Edge Options
Option
Edge type (drop-down)
Edge color (drop-down)
Scale Edges (slider)
Edge Labels (check box)
Edge Decimals (slider)
Scale Edge Label (slider)
Description
Choose from curved line edges and straight line edges.
Provides options for coloring the graph edges based on the relative edge value within the range of all edge values (ranging from yellow=low to red= high), or based on the color of the source node, the color of the target node, or assigned a neutral color.
Increase or decrease edge sizes in the graph.
Determines if edge labels appear on the screen.
Choose between 1 decimal digit to 8 decimal digits for the value of the edge (only if edge values have decimals). If the slider is pushed to maximum, the labels show up in exponential format
Increase or decrease edge label sizes in the graph.
External View
The first option shown in
is a link to download the visualization information in
GEXF format, which enables users to view the graph in other graph-viewing software. The second link is to download the gephi software to view the gexf file.
Figure 5 - 4: External View Options
184 AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Node Info
This section is activated only when a node is selected in the visualization
.
Node Properties
Table 5 - 12: Node Information
Option
Node properties
Node statistics
Inbound Nodes
Outbound Nodes
Description
Node label properties for the selected node are viewed in this pane.
Select the Show as Tooltip checkbox to show the properties of the node in a tooltip when a node is hovered over.
Selected node's visualization properties calculated by gephi and dimension table properties can be viewed in this pane.
Select the Show as Tooltip checkbox to show the statistics of nodes in a tooltip when a node is hovered over.
Pane shows all nodes that have an edge pointing to the selected node and the value of edges connecting to and from the nodes.
Pane shows all nodes that the selected node has an edge pointing to and the value of edges connecting to and from the nodes.
AppCenter User Guide 185
AppCenter Data Visualizations
Data Visualizations
Sankey
6
7
4
5
8
9
2
3
Id
1
Sankey visualizations are a specific type of flow visualization in which the width of the arrows is shown proportionally to the flow quantity. Sankey visualizations are typically used to illustrate energy or material or cost transfers between processes. They can also illustrate the energy accounts or material flow accounts on a regional or national level. Sankey visualizations put a visual emphasis on the major transfers or flows within a system. They are helpful in locating dominant contributions to an overall flow. Often, Sankey diagrams show conserved quantities within defined system boundaries.
Sankey Example:
is a paths table that contains a statistical summary of the order by which customers add items into an empty shopping cart in a grocery store. The path column indicates the sequence; the cnt column notes how many times a particular sequence (order) was applied by customers.
Table 5 - 13: Sankey Paths Table Example
8
2
6
8
6
1
6
1 cnt
50 path
[empty cart,milk,cereal,flour,eggs,butter,muffins,chocolate,checkout]
[empty cart,eggs,flour,milk,chocolate,apples,soup,muffins,checkout]
[empty cart,muffins,chocolate,soup, apples,eggs,cereal,milk,checkout]
[empty cart,milk,butter,flour,eggs,cereal,apples,soup,checkout]
[empty cart,eggs,butter,chocolate,apples,soup,milk,cereal,checkout]
[empty cart,eggs,milk,muffins,flour,cereal,apples,soup,checkout]
[empty cart,butter,muffins,chocolate,milk,eggs,apples,cereal,checkout]
[empty cart,muffins,butter,flour,apples,chocolate,milk,eggs,checkout]
[empty cart,butter,chocolate,flour,soup,muffins, milk,eggs,checkout]
186 AppCenter User Guide
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
This information can be viewed in a Sankey visualization as shown in
.
Figure 5 - 5: Sankey Visualization Example
Reading Sankey Visualizations
In the visualization for this example, the purchased items are listed in each of the columns.
When reading from left to right, note that customers start with an empty shopping cart, then some customers choose to add butter, others choose to add eggs, some add milk, and some chose muffins.
The width of the line connecting the empty cart to any of these items indicates the portion of the shoppers who chose that particular transition (based on the cnt column of the data table).
In the example, most customers chose milk as the first item to add to their cart.
Based on the visualization
, a large share of the customers have taken the path of adding items in the following order to the cart: milk - cereal - flour - eggs - butter - muffins - chocolate
Customers who chose eggs as the first item ended up with very different sequences.
187
AppCenter Data Visualizations
Data Visualizations
The Sankey visualization in
detects sequence of web page transitions that lead to an error page.
Figure 5 - 6: Sankey Visualization Example, Sequence of Web Page Transitions
In this example, a marketing offer is causing many customers to get back to the same page and then to an error page.
Sankey Visualization Interaction
Table 5 - 14: Sankey Theme and Settings
Option
Theme (drop-down)
Settings (cog wheel)
Description
Choose between a light (white) and dark (black) background.
Shows or hides the graph settings pane.
188 AppCenter User Guide
Sankey Visualization Settings
Figure 5 - 7: Sankey Visualization Settings
AppCenter Data Visualizations
Data Visualizations
AppCenter User Guide
View Tab
Table 5 - 15: Sankey View Tab Options
Option
Filter (slider)
Vertical Height (slider)
Line Width (slider)
Box Width (slider)
Box Font (slider)
Number Font (slider)
Left Margin (slider)
Right Margin (slider)
Description
Limits the display to only show major or minor transitions. Users can also enter actual values in the text boxes located below the slider.
Change the vertical height of the Sankey visualization.
Increases the width of the edges or lines in the visualization. The left slider increases the minimum line width; the right slider increments the maximum line width.
shows increased max line width and decreased minimum line width.
Increases or decreases the width of the nodes in the visualization.
Increases or decreases the size of node labels in the visualization.
Increases or decreases the size of edge or flow line labels in the visualization.
Increases or decreases the size of margin on the left of the page; it pushes the visualization away or towards the left side of the screen.
Increases or decreases the size of margin on the right side of the page; it pushes the visualization away or towards the right side of the screen.
189
AppCenter Data Visualizations
Data Visualizations
Table 5 - 15: Sankey View Tab Options (continued)
Option
Detached Nodes (check box)
Description
When not selected, nodes (items) that are not connected to others will not be displayed (default setting). The visualization at the end of this section shows where the checkbox is selected to show all detached nodes.
Shows flow values that each edge represents.
Show edge values (check box)
Line labels (drop-down)
Select edge or line labels as actual value, percentage of flow, or both.
Example: Show Disconnected Nodes
Figure 5 - 8: Sankey Visualization Example, Disconnected Nodes
190 AppCenter User Guide
AppCenter User Guide
Color Tab
Figure 5 - 9: Sankey Color Settings
AppCenter Data Visualizations
Data Visualizations
Table 5 - 16: Sankey Color Tab Options
Option
Color seed (slider)
Hue (slider)
Saturation (slider)
Brightness (slider)
Description
Changes the color theme of the graph.
Change hue values of the colors in the graph.
Change color saturation values in the graph.
Change color brightness in the graph.
191
AppCenter Data Visualizations
Data Visualizations
Properties Tab
Figure 5 - 10: Sankey Properties Settings
Tree
192
Table 5 - 17: Sankey Properties
Option
Graph Properties (pane)
Description
Shows a summary of graph properties, such as the Max Node, Min
Node, Node Count, Edge Count, Stack Count, Max Edge value, and
Min Edge value of the graph.
4
5
6
2
3
Id
1
A Tree visualization consists of nodes and edges that do not contain any circles. This visualization is especially suitable for representation of hierarchical data where a root node is connected to parent nodes that are then connected to child nodes, etc.
Tree Example:
is a paths table that contains a statistical summary of the order by which customers add items into an empty shopping cart in a grocery store. The path column indicates the sequence. The cnt column notes how many times a particular sequence or order was applied by customers.
Table 5 - 18: Tree Example Paths
6
8
8
6
1 cnt
50 path
[empty cart,milk,cereal,flour,eggs,butter,muffins,chocolate]
[empty cart,eggs,flour,milk,chocolate,apples,soup,muffins]
[empty cart,muffins,chocolate,soup, apples,eggs,cereal,milk
[empty cart,milk,butter,flour,eggs,cereal,apples,soup]
[empty cart,eggs,butter,chocolate,apples,soup,milk,cereal]
[empty cart,eggs,milk,muffins,flour,cereal,apples,soup]
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Table 5 - 18: Tree Example Paths (continued)
Id
7
8
9
cnt
2
6
1 path
[empty cart,butter,muffins,chocolate,milk,eggs,apples,cereal]
[empty cart,muffins,butter,flour,apples,chocolate,milk,eggs]
[empty cart,butter,chocolate,flour,soup,muffins,milk,eggs]
This information can be viewed in a tree visualization as shown in
Figure 5 - 11: Tree Visualization Example
AppCenter User Guide
Reading Tree Visualizations
Each item is represented as a node (circle). Items are connected with edges (lines).
Edge colors range from yellow to red, repressing the relative value of the edges. The wider and redder the edge, the higher its relative value.
193
AppCenter Data Visualizations
Data Visualizations
Tree Visualization Interaction
The tree visualization is interactive. It enables users to collapse/expand each node and the sub tree originating from it, by clicking on the node.
Table 5 - 19: Tree Visualization Options
Option
Theme (drop-down)
Left to right/Right to left
(button)
Node size (slider)
Node spacing (slider)
Font size (slider)
Line width (slider)
Path selector (drop-down)
Description
Enables users to choose between a light (white) and dark (black) background.
Changes the orientation of the tree. This is helpful for languages that are read from right to left.
Changes the size of the nodes in the tree.
Changes the space between the nodes in a tree.
Changes the font size of the node labels in the tree visualization.
Sets the range of width for the tree visualization. The left slider increases the minimum width; the right slider increases the maximum width.
Switches quickly between expanding and collapsing the entire tree, or the Dominant Paths (the most important or highest weighted paths in the tree based on total edge value). The example at the end of this section shows Dominant Paths.
Figure 5 - 12: Tree Visualization Example
194 AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Chord
AppCenter User Guide
A chord visualization is a graphical method of displaying the interrelationships between data in a matrix. The data is arranged around a circle with the relationships between the points typically drawn as arcs connecting the data together.
Chord Example:
is an affinity table that contains combinations of products that are purchased together. It shows the number of times each product has been purchased and the number of times the products are purchased together.
Table 5 - 20: Chord Example Affinity Table apples apples milk milk milk milk milk chicken
Icol1_item1 carrots onions spinach onions onions onions onions onions potato chips eggs butter eggs apples apples apples grapes onions juice muffins cereal chocolate cheese hot dogs
Icol1_item1 peppers potatoes tomatoes broccoli tomatoes carrots spinach peppers salsa potato chips flour flour bananas oranges melons
3
3
2
3
2
2
2
2
1
1
2
1
1
2 cntb
1
1
1
1
1
1
1
3
1
9
9
9
9
9
1
6
1
9
9
9
9
5
9 cnt1
4
9
2
9
9
9
9
9
9
2
2
2
2
2
2
7
2
4
1
2
1
2
8 cnt2
3
2
4
2
2
2
2
7
7
195
AppCenter Data Visualizations
Data Visualizations
Table 5 - 20: Chord Example Affinity Table (continued)
Icol1_item1 chicken chicken chicken eggs soup soup
Icol1_item1 bacon onions eggs milk baked beans tomatoes
This data can be visualized as shown in
Figure 5 - 13: Chord Visualization Example
1
1
1
1 cntb
1
1
2
2
7
9 cnt1
3
7
9
1
6
4 cnt2
2
6
196 AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Reading Chord Visualizations
Each item sold is listed on the outer edge of the circle in an arch. The more times an item is sold, the larger its arch. The items are connected with edges. The wider the edge, the more often these items are purchased together. At a glance, this visualization indicates the items purchased the most and how they split in terms of related items.
Chord Visualization Interaction
Table 5 - 21: Chord Visualization Options
Option
Theme (drop-down)
Hover
Graph Parameters
Description
Choose between a light (white) and dark (black) background.
Hover over the different points on the arc of the circle to highlight the relationships of the products bought together.
Displays information about type of graph (directed true/false), number of nodes in the graph, and number of edges in the graph.
Statistics
The Statistics visualization is comprised of both bar and pie charts. A bar chart is a chart that uses either horizontal or vertical bars to show comparisons among categories. One axis of the chart shows the specific categories being compared; the other axis represents a discrete value.
Pie charts are generally used to show distribution of values between categories.
The Statistics data visualization enables the user to choose the visualization type that works best and switch freely between the two chart options.
Series in the Statistics Data Visualization:
When data is provided in a group (series) of values, the user can select to view each series on its own, or to view all the series together, either as a stacked bar, or as a pie chart with drill down capabilities, which shows all series and once a series is selected shows all categories of a series.
AppCenter User Guide 197
AppCenter Data Visualizations
Data Visualizations
Statistics Example:
is a "profit by category and month" table that contains profit data for each combination of month of sale and the product category. We will treat the department as the series column, and the months as our categories.
Table 5 - 22: Statistics Example “Profit by Category and Month” Table
6-JUN
6-JUN
6-JUN
7-JUL
7-JUL
7-JUL
8-AUG
8-AUG
8-AUG
9-SEP
9-SEP
9-SEP
3-MAR
3-MAR
4-APR
4-APR
4-APR
5-MAY
5-MAY
5-MAY month_of_sale
1-JAN
1-JAN
1-JAN
2-FEB
2-FEB
2-FEB
3-MAR
20
21
22
23
16
17
18
19
24
25
26
27
12
13
14
15
8
9
10
11
6
7
4
5
2
3 id
1
Electronics
Furniture
Appliances
Electronics
Furniture
Appliances
Electronics
Furniture
Appliances
Electronics
Furniture
Appliances
Furniture
Appliances
Electronics
Furniture
Appliances
Electronics
Furniture
Appliances department
Electronics
Furniture
Appliances
Electronics
Furniture
Appliances
Electronics
5000
7500
6400
2300
5900
9030
4200
9100
8400
2300
25000
12090
2300
7300
2300
5600
12000
12000
6700
9000
9000
5000
2000
3500 profit
1000
3000
2500
198 AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Table 5 - 22: Statistics Example “Profit by Category and Month” Table (continued)
30
31
32
33 id
28
29
34
35
36 month_of_sale
10-OCT
10-OCT
10-OCT
11-NOV
11-NOV
11-NOV
12-DEC
12-DEC
12-DEC department
Electronics
Furniture
Appliances
Electronics
Furniture
Appliances
Electronics
Furniture
Appliances profit
10000
12000
9000
34000
12000
18000
55000
32000
45000
Electronics
Furniture
Appliances
In a two-dimensional form, the same data would appear as shown in
Table 5 - 23: Statistics Example “Profit by Category and Month” Table, Two-Dimensional Form
Jan Feb Mar
1000 9000 3500
3000 5000 2300
2500 2000 7000
Apr May
2300
5600
120000
6700
12000 9000
June July Aug
5900
9030
4200
Sep Oct
9100 2500 7500 10000
8400 12090 6400 12000
2300 5000 2300 9000
Nov Dec
34000 55000
12000 32000
18000 45000
Electronics
This data can be grouped by series across all categories.
Table 5 - 24: Statistics Example “Profit by Category and Month” Table, Grouped by Series
1000 9000 3500 2300 120000 5900 9100 2500 7500 10000 34000 55000
Furniture 3000 5000 2300 5600 6700 9030 8400 12090 6400 12000 12000 32000
Appliances 2500 2000 7000 12000 9000 4200 2300 5000 2300 9000 18000 45000
AppCenter User Guide 199
AppCenter Data Visualizations
Data Visualizations
Or, the data can be grouped by category across all series:
Table 5 - 25: Statistics Example “Profit by Category and Month” Table, Grouped by Category
Jan
1000
3000
2500
Feb
9000
5000
2000
The statistics data visualization enables users to switch between these modes, and additionally switch between the representation (pie or bar) as needed. The visualization shown in
depicts all series (departments) of the data shown previously as a stacked bar chart.
Figure 5 - 14: Statistics Example, All Series )
200
The three colors represent the different departments: furniture in blue, appliances in orange, and electronics in green. The data is aggregated based on the month categories.
To focus on a particular month category across all series, users can click on a stacked bar. To review data on a series-by-series basis, users can use the
Group by Series button.
AppCenter User Guide
AppCenter User Guide
is a view of the same chart, grouped by series.
Figure 5 - 15: Statistics Example, Grouped by Series
AppCenter Data Visualizations
Data Visualizations
To view only a single series across all categories, users can click on the legends below the graph, use the drop-down on the top-left, or click on the series in the graph (when in grouped by series mode).
201
AppCenter Data Visualizations
Data Visualizations
is an example of selecting and displaying a specific series, furniture.
Figure 5 - 16: Statistics Example, Specific Series
Click the
ALL link in the graph to display all series.
202 AppCenter User Guide
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
is an example of displaying a specific category for all series, December, by clicking on a stacked bar.
Figure 5 - 17: Statistics Example, Specific Category
Click the
ALL link in the graph to display all categories in the stacked format.
203
AppCenter Data Visualizations
Data Visualizations
Users can view the same data that is shown in the original bar chart view (all categories), in a
Pie, by using the bar/pie selector.
Figure 5 - 18: Statistics Example, Pie Chart
The pie shows the aggregated values per category (which is the equivalent of the total value of each stacked category bar). Selecting a slice will drill down and display the values for each series in the selected category.
204 AppCenter User Guide
is an example of selecting the May category.
Figure 5 - 19: Statistics Example, May Category
AppCenter Data Visualizations
Data Visualizations
AppCenter User Guide 205
AppCenter Data Visualizations
Data Visualizations
Grouping by series in pie mode will aggregate the series and display the total for each series as shown in
.
Figure 5 - 20: Statistics Example, Aggregated Series
206 AppCenter User Guide
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
is an example of selecting a series slice to drill down to display a pie of the categories that make up the slice.
Figure 5 - 21: Statistics Example, Pie Chart Slice
is the result of switching to bar chart at this point.
Figure 5 - 22: Statistics Example, Bar Chart
207
AppCenter Data Visualizations
Data Visualizations
Statistics Visualization Interaction
Table 5 - 26: Statistics Visualization Options
Option
Series (selector)
Bar/Pie (selector)
Grouped by Series/Grouped by Category (button)
Up/Down/Reset (button)
Legend (check box)
Search (text box)
Description
Displays either all series or an individual series.
Switches between bar view or pie view for the same data.
Organize the data by series or by category.
Sorts data based on ascending/descending order of values, or reset to the order by which the data was provided.
Shows or hides the legend displayed at the bottom of the graph.
Highlights the data that the user is trying to search.
shows a search for the word “Nov”.
Figure 5 - 23: Statistics Example, Bar Chart
208 AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Wordcloud
Given a set of words, where each word is assigned a value, the wordcloud visualization displays the words in such a way that the font size represents the relative value of the word within the range of the given values.
Table 5 - 27: Wordcloud Data Example
Age
Mathematical
Proofs
...
...
quality marked
...
20
10
200
100
70
...
Figure 5 - 24: Wordcloud Visualization Example
AppCenter User Guide 209
AppCenter Data Visualizations
Data Visualizations
Wordbubbles
Similar to wordcloud, the wordbubbles visualization displays words in bubbles representing each word's relative assigned value. Unlike wordcloud, the length (number of characters) of each word does not affect the overall word size because the words are contained in bubbles; this makes visual comparison of the value associated with each word easier.
Table 5 - 28: Wordbubbles Data Example
Age
Mathematical
Proofs
...
...
quality marked
...
20
10
200
100
70
...
Figure 5 - 25: Wordcloud Visualization Example
210
Wordbubbles Visualization Interaction
Hovering over a bubble displays a tooltip with the value associated with the word.
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Hierarchical Clustering
Hierarchical Clustering displays the data as a containment visualization with drill-down navigation.
Figure 5 - 26: Hierarchical Clustering Drill-Down Example
Based on
, the visualization example in
drills down as follows:
• The root of the data (USA) is represented by the outer circle.
• The next level of the hierarchy (California, Florida) is represented as inner circles, and within each one of those, additional circles appear to represent the next level down in the hierarchy (Sacramento, San Francisco, etc.).
Similar to the wordbubbles visualization, the size of the circle represents the relative value assigned to the text.
Figure 5 - 27: Hierarchical Clustering Visualization Example
AppCenter User Guide 211
AppCenter Data Visualizations
Data Visualizations
Users can click on a circle to zoom in, click outside of a circle to zoom out, and hover the mouse pointer over a circle to see the value associated with the word.
Figure 5 - 28: Hierarchical Clustering Visualization Example, Zoom Feature
212 AppCenter User Guide
Bar
AppCenter Data Visualizations
Data Visualizations
The bar chart data visualization is a standard bar chart that can display multiple series of data as stacked or grouped bars. Users can choose how they prefer to view the data: stacked/ grouped or horizontal/vertical.
is a multi-series, stacked bar chart.
Figure 5 - 29: Bar Chart Visualization Example
AppCenter User Guide 213
AppCenter Data Visualizations
Data Visualizations
In addition, users can choose to show or hide each particular series from the visualization by selecting the series in the legend area as shown in
Figure 5 - 30: Bar Chart Visualization Example, Series Option
Figure 5 - 31: Bar Chart Visualization Example, Series Hidden
214 AppCenter User Guide
is a multi-series, stacked, horizontal bar chart:
Figure 5 - 32: Bar Chart Visualization Example, Stacked Horizontal
AppCenter Data Visualizations
Data Visualizations
AppCenter User Guide 215
AppCenter Data Visualizations
Data Visualizations
is a multi-series, grouped, horizontal bar chart.
Figure 5 - 33: Bar Chart Visualization Example, Grouped Horizontal
216 AppCenter User Guide
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
To see the total value of each stacked column, users can hover over the column.
Figure 5 - 34: Bar Chart Visualization Example, Column Total Value
Bar Chart Options
Table 5 - 29: Bar Chart Options
Option
Grid (check box)
Legend (check box)
Horizontal (check box)
Stacked (check box)
Show values (check box)
Label width (slider)
Description
Displays the bar chart with a grid background. Not selected by default.
Displays a legend for the colored segments in the chart. Selected by default.
Displays the bar segments horizontally. Selected by default.
Displays the bar segments on the same line. Selected by default.
Displays the bar segment values in the chart. Selected by default.
Widens or shortens the width of the area for chart labels.
217
AppCenter Data Visualizations
Data Visualizations
Pie
The pie data visualization is a standard pie chart in which values are displayed as pie slices.
This visualization is best used to display the relative distribution/contribution of categories.
Figure 5 - 35: Pie Chart Visualization Example
218
Users can hover the mouse pointer over a slice to show its value.
Figure 5 - 36: Pie Chart Visualization Example, Slice Value
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Users can click on a category color in the legend on the bottom to add or remove the category from the pie.
Figure 5 - 37: Pie Chart Visualization Example, Category Removed
AppCenter User Guide 219
AppCenter Data Visualizations
Data Visualizations
Line
The line visualization plots two-dimensional data points connected with a line. It offers multiseries support, where each data series is plotted in a line of a different color. Users can choose the line style: Strait, Spline, or Step, and whether or not to color the area under the line. When
Stepline is selected as the line stile, the option for coloring the area under the line will be disabled.
Figure 5 - 38: Line Visualization Example, Strait Style
220 AppCenter User Guide
Figure 5 - 39: Line Visualization Example, Spline Style
AppCenter Data Visualizations
Data Visualizations
AppCenter User Guide 221
AppCenter Data Visualizations
Data Visualizations
Figure 5 - 40: Line Visualization Example, Spline Style
222
Click on a series in the legend to hide or show that series.
Figure 5 - 41: Line Visualization Example, Hidden Series
AppCenter User Guide
Text
AppCenter Data Visualizations
Data Visualizations
Text is a read-only visualization, displaying text created by the app. The app can format and even organize the data into tables using HTML tags.
The following tables are examples of data for a text visualization:
Horizontal Headings
Table 5 - 30: Text Data Example, Horizontal Headings
Name
John Smith
Telephone
555 77 854
Telephone
555 77 855
Vertical Headings
Table 5 - 31: Text Data Example, Vertical Headings
Name
Telephone
Telephone
John Smith
555 77 854
555 77 855
To create text visualizations, the app code adds the text into the visualizations table, as shown in the following example:
INSERT INTO app_center_visualizations (json) values ('This is an example of text visualization') which will generate the text chart shown in
.
Figure 5 - 42: Text Visualization Example
AppCenter User Guide 223
AppCenter Data Visualizations
Data Visualizations
Table View
The table view serves as a powerful window into a database table. It enables intuitive sorting and filtering of millions of data records, and exporting the selection to other tools.
Figure 5 - 43: Table View Visualization Example
224
Window Size
Because the database table may contain millions of rows, it does not make sense to fetch and display all this data in the web browser. By default, the visualization displays the top 100 records of the database table data.
Click on the
Load more records...
button as needed to extend the window size by 100 records on each click. Consider using sorting and filters to float the records of relevance to the top of the table and into your window.
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
Sorting
Click on any column to sort the data in the database table by that column. The first click will sort in ascending order; a subsequent click will sort in descending order.
Figure 5 - 44: Table View Visualization Example, Sort
Filtering
Click on the filter button to display the filter row at the top of the table.
Figure 5 - 45: Table View Visualization Example, Filter Button
AppCenter User Guide
Filter the database table data by specifying text to match for any one of the table columns.
To define complex filters, do the following:
1
Enter more than one word to search for multiple words.
2
3
4
Leave a space between the words to serve as an "OR" statement. Records that contain matching text for any of the words you enter will get included in the records.
Add a "-" at the beginning of a word to serve as a "Not" statement.
Records that contain matching text in the filtered column will not get included in the filtered records.
Add a "+" at the beginning of a word to serve as a "Must include" statement to indicate that only records with a match to this word for the filtered column should be included in the filtered records.
This is useful when specifying a combination of words that should be optionally included with words that must be included.
Combine filter statements by using braces "()".
225
AppCenter Data Visualizations
Data Visualizations
Composite Filters
You can enter filters for more than one column. The combination of filters will be applied as a single composite filter.
In
Figure 5 - 46 , notice how the number of records drops to indicate the number of records
matched.
Figure 5 - 46: Table View Visualization Example, Composite Filtering
Saving and Reapplying Filters
To name and store a filter, use the
Save button.
Figure 5 - 47: Table View Visualization Example, Filter Save Button
226 AppCenter User Guide
AppCenter User Guide
AppCenter Data Visualizations
Data Visualizations
You can reapply any saved filter by selecting the filter from the saved filters list.
Figure 5 - 48: Table View Visualization Example, Saved Filter List
To delete stored filters, click on the [x] next to the filter's name.
Clearing the Current Filter
To remove the current filter click on the [x] in the filter controls.
Figure 5 - 49: Table View Visualization Example, Remove Filter
Downloading and Exporting Data into CSV
Once you have established a good filter and reduced the number of records, you can download the filtered data as a Comma Separated Value (CSV) formatted file. This file can be opened ina compatible application or imported back into the database into a new data table.
Figure 5 - 50: Table View Visualization Example, Download Button
227
AppCenter Data Visualizations
Data Visualizations
Organizing the table view for better viewing
You can improve the layout of a table view by selecting which columns to include and which columns to hide. You can change column width and reorder columns by dragging a column header left or right.
Figure 5 - 51: Table View Visualization Example, Column Selections
228 AppCenter User Guide
AppCenter Data Visualizations
Building Data Visualization Plugins
Building Data Visualization Plugins
•
•
Building a new Data Visualization Plugin
•
How the Visualization Engine works
•
How to Associate the App Result Data with the Data Visualization Plugin
•
Example of Creating a New Visualization Plugin for a Hierarchical Data Structure
•
Installing New Visualization Plugins
Architecture
The AppCenter Data Visualization Engine has a "plug and play" architecture that enables the
AppCenter administrator and app developers to add, remove, and replace Data Visualization
Plugins without requiring any downtime of AppCenter.
AppCenter User Guide 229
AppCenter Data Visualizations
Building Data Visualization Plugins
The Data Visualization Plugins bundled with AppCenter are shown in
.
Figure 5 - 52: Data Visualization Plugins
230 AppCenter User Guide
AppCenter Data Visualizations
Building Data Visualization Plugins
There are two ways that Data Visualization Plugins can be added:
Table 5 - 32: Plugin Methods
Plugin Method
Platform Visualization
Plugins
App-Specific
Visualization Plugins
Description
Available to all apps and installed through the platform settings page as shown in the image. The AppCenter administrator is free to replace the originally bundled Visualization Plugins by downloading and uninstalling existing ones and installing a new or modified version with the same name.
Bundled as part of an app, these plugins are installed, updated, or removed during app installation, upgrade, or uninstall, respectively.
They are available only for displaying reports of the app with which they were installed.
Building a new Data Visualization Plugin
Data Visualization Plugins are essentially a zip archive containing the following components:
Table 5 - 33: Data Visualization Plugin Components
Plugin Component
icon.png
index.html
Converter.class
(optional)
Description
An image that serves as an icon for the data visualization in the AppCenter portal.
The main html file that renders the visualization. It may be accompanied by supporting CSS and Javascript files.
The converter class implements the visualizable interface of the Viz SDK, and may be accompanied by supporting utility classes. If the converter class is part of a java package, the folder structure needs to represent the java package structure according to the Java conventions
AppCenter User Guide 231
AppCenter Data Visualizations
Building Data Visualization Plugins
Figure 5 - 53: Data Visualization Components
How the Visualization Engine works
When an app is launched and internally calls the Visualizer SQL-MR function, the Visualizer
SQL-MR function aggregates data to be visualized into a JSON string and stores it in the database. In addition to the aggregated data, the JSON string contains the name of the
Visualization Plugin to be used.
When an AppCenter user clicks on an app report, AppCenter fetches the report JSON string.
AppCenter then searches the installed Visualization Plugin directory for the required
Visualization Plugin, and opens an HTML window containing the Visualization Plugin's
HTML page, providing the JSON string data for rendering.
To access the data provided by the AppCenter platform, the Visualization Plugin's index.html
code must have a message handler using:
$(window).on('message', handler)
The Data can be accessed inside the handler using: event.originalEvent.data
232 AppCenter User Guide
AppCenter Data Visualizations
Building Data Visualization Plugins
When to Provide a Converter Class
In some cases, the format of the JSON object that was generated by the Visualizer SQL-MR
function does not match the format needed by the index.html javascript code. This is often the case when using third-party or open-source Visualization Plugins with JSON data generated by the Visualizer SQL-MR function. In this case, the format of the JSON string needs to be converted.
Although the conversion could be done by Javascript code in the index.html page, a more efficient approach is to provide the optional Converter java class that will be called by
AppCenter to convert the JSON string before passing the string on to the index.html file.
Providing a Converter class is optional. If a Converter.class is not present in the Visualization
Plugin archive, the AppCenter platform will pass the results data JSON object as is, without any conversion, to the Visualization Plugin's index.html file.
If you decide to provide a Converter class, remember that it needs to implement the
Visualizable interface of the VizSDK. The Viz SDK Visualizable interface defines a single method: public String convert(String json);
Use the java editor of your choice, but be sure to include the vizsdk.jar in the classpath when compiling.
How to Associate the App Result Data with the Data Visualization Plugin
For the platform to find the Visualization Plugin to be used for rendering, the Visualization
Plugin archive name needs to be included in the JSON string when it is created by the app
("mygraph" in the example shown in the section
Building a new Data Visualization Plugin ).
Use the attribute named viztype and set the Visualization Plugin name ("mygraph") as the value; or, if using the Visualizer SQL-MR function, use the parameter "viztype" with the value
<Visualization Plugin name>: <Aggregation format> (e.g., mygraph:bar).
AppCenter User Guide 233
AppCenter Data Visualizations
Building Data Visualization Plugins
Example of Creating a New Visualization Plugin for a Hierarchical Data
Structure
This example includes a new visualization type to represent hierarchical data. The default visualization provided by AppCenter is in the format of a "tree of nodes and edges," which is shown in
Tree of Nodes and Edges
Figure 5 - 54: Visualization Plugin Example, Tree of Nodes and Edges
234 AppCenter User Guide
Web
The same data can also be visualized as a web:
Figure 5 - 55: Visualization Plugin Example, Web
AppCenter Data Visualizations
Building Data Visualization Plugins
AppCenter User Guide 235
AppCenter Data Visualizations
Building Data Visualization Plugins
Required Components
To build this Data Visualization Plugin, the components illustrated in
will be added.
Adding the Icon
Figure 5 - 56: Data Visualization Components, Icon
The icon image is used in result thumbnails and in the list of installed visualization plugins.
Figure 5 - 57: Data Visualization Plugin, Icon Thumbnails
236 AppCenter User Guide
AppCenter Data Visualizations
Building Data Visualization Plugins
Adding index.html and Supporting js and css
The next piece in the visualization plugin is the rendering code, which includes index.html
and any supporting javascript/css files.
Figure 5 - 58: Data Visualization Components, Index.html and Supporting Files
AppCenter User Guide
To render the app report's data, the index.html receives the required data through a message.
A typical example of reading data is:
$(window).on('message', listenForStartEvent); function listenForStartEvent(event) {
var dataObj = event.originalEvent.data;
var root = dataObj.data.series[dataObj.seriesId];
draw(root);
}
In the example code,
draw
is the main method that parses the data and renders the graph.
Adding a Converter class
Because the UI code in this example needs data in a format that is different from the format required by default "tree" Visualization Plugin, the compiled java code of a Converter class needs to be bundled, which converts the json generated by the Visualizer SQL-MR function to a format compatible with the new "web" Visualization Plugin.
237
AppCenter Data Visualizations
Building Data Visualization Plugins
Figure 5 - 59: Data Visualization Plugin, Bundled Code for Web Plugin
Installing New Visualization Plugins
To install a Data Visualization Plugin, the components need to be archived into a zip file named appropriately ("web.zip" in this example).
Figure 5 - 60: Data Visualization Plugin Components
The new Visualization Plugin is now ready to be installed as a platform visualization or bundled with an app.
Installing as a New Platform Visualization Plugin
Simply click the
Upload a new Visualizer button and select the web.zip archive. Once installed through the Data Visualizers tab in the settings page, the new visualization will be listed with the available platform visualizations.
238 AppCenter User Guide
AppCenter Data Visualizations
Building Data Visualization Plugins
Installing as an App-Specific Visualization
A visualization installed through the platform is available across all apps; however, a
Visualization Plugin bundled with an app is app-specific and available only to the app that installed it. To bundle Visualization Plugins with an app, the developer can add the
Visualization Plugin folder with all of its components to the app's resources/render folder as shown in
.
Figure 5 - 61: Data Visualization Plugin Folder Components
AppCenter User Guide
Once the app is installed, the "web" Visualization Plugin will also be installed as part of the app installation process. This Visualization Plugin is specific to the app, and will not be listed in Data Visualizers tab of the settings page.
239
AppCenter Data Visualizations
Building Data Visualization Plugins
Using the App Builder for Bundling a new Data Visualization Plugin with an App
The easiest way to add the new Visualization Plugin to an app is with the App Builder tool as follows:
1
Edit the app in the App Builder, and select the
AppBuilder's first tab.
custom visualizations option in the
Figure 5 - 62: App Builder Options
This will add a
Visualizations tab in the App Builder.
Figure 5 - 63: App Builder Options, Visualization Tab
240
2
3
Switch to the Visualizations tab, and click
Add Custom Visualization
.
Click the
Upload Visualization button and select the web.zip file.
Once the app is installed, it will be able to create visualizations with a viztype of web:tree
.
When a user selects an app report created with this new viztype, the new web Visualization
Plugin will be picked up by the platform and used to render the app's report data.
AppCenter User Guide
AppCenter Data Visualizations
The Visualizer Function
The Visualizer Function
Introduction
The Visualizer function is the core engine for generating visualizations. It can use a wide variety of input types and generates a wide range of visualizations. The function has a unique method of generating visualizations, such that they are all part of a visualization family type.
The visualization family types include:
• Network family (graph that has nodes and edges such as Sankey, Sigma, Tree, etc.)
• Statistics family (pie chart, line chart, etc.)
• Wordcloud family
The Visualizer function produces a visualization description in JSON format, which is consumed by AppCenter.
illustrates the visualization workflow with various inputs to the visualizer function and the output of the function.
Figure 5 - 64: Visualization Workflow
AppCenter User Guide
For more information, see
"Visualizer Function Specification.”
241
AppCenter Data Visualizations
The Visualizer Function
242 AppCenter User Guide
CHAPTER 6
Integrating AppCenter with
External Software
•
Using AppCenter as a Data Visualization Platform
•
Full Integration through RESTful API
Using AppCenter as a Data Visualization
Platform
AppCenter can be used as an app and visualization portal, and also as a tool for generating data visualizations in other environments and by other Business Intelligence tools. This can be done in various ways. For example:
• The Visualizer function can be used to aggregate visualization data into a JSON object, which can then be rendered by any visualization tool.
This workflow does not require setting up or installing AppCenter. It requires having only the Visualizer SQL-MR function installed on the Aster Cluster.
For additional information, see
.
AppCenter User Guide 243
Integrating AppCenter with External Software
Using AppCenter as a Data Visualization Platform
is an example of displaying visualization data in a BI tool.
Figure 6 - 1: Visualization Data Example, BI Tool
244
• AppCenter can be used as a visualizations platform to render the visualization JSON objects that are generated by the Visualizer SQL-MR function.
In this setup, AppCenter is not used as a portal, and users are not required to log into
AppCenter to view the visualizations.
This setup requires installing AppCenter, and configuring it with a connection to the Aster
Cluster, and then running the Visualizer SQL-MR function on the Aster cluster (which can be done from the command line or from a BI tool) with the URL option enabled.
The Visualizer function will then produce a URL that can be:
• Manually copied and pasted into a web browser for displaying the data visualization.
OR
• Stored in a table that is displayed in a Standard BI tool dashboard.
This option is convenient for BI tool users, because they are presented with a live, clickable
URL for displaying the visualization in the default browser window. (For a list of supported web browsers, see
.)
AppCenter User Guide
Integrating AppCenter with External Software
Full Integration through RESTful API
Creating and storing the visualization URL is very simple. Here is an example: create table npath_urls(id bigint, json varchar, url varchar) distribute by hash(id); insert into npath_urls select id,json,url from Visualizer(on aster_lens.npath_output_abandoned_shopping_order partition by 1
Viztype('sankey')
Title('Npath Demo URL') asterfunction('npath')
URL('visualization_server=xxx.xxx.xxx.xxx',
'profile=my_connection_profile', 'output_table=npath_urls'));
In this example, a Sankey diagram is generated to represent the results of an Aster
Analytics nPath function that are stored in the table:
" aster_lens.npath_output_abandoned_shopping_order
"
The Visualizer function is called to aggregate this data with the URL option to specify the address of AppCenter, and the configured database profile.
The URL will be entered by the Visualizer function into the " npath_urls
" table.
The " npath_urls
" table can then be visualized in any BI tool to present the generated
URLs to the end user.
Full Integration through RESTful API
AppCenter includes a complete, open RESTful Web Service API. This option makes integration very easy with web-based applications, external workflow management tools, and external schedulers. Any operation that can be done with a mouse and keyboard in the
AppCenter web portal can be done through a RESTful web service call.
Examples include:
• List all installed apps, the app descriptions, and the parameters required for each one of the apps
• Launch an app or schedule an app to run later
• List all generated results
• Install a new app
• Update the password for a database connection and more
For a list of available RESTful calls, see the AppCenter REST API document that is available from Teradata Information Products: http://www.info.teradata.com/
AppCenter User Guide 245
Integrating AppCenter with External Software
Full Integration through RESTful API
illustrates a mobile device app prototype, built to leverage the RESTful API.
Figure 6 - 2: Mobile Device App Prototype
246 AppCenter User Guide
Integrating AppCenter with External Software
Full Integration through RESTful API
illustrates an alternative portal for AppCenter, built on top of the RESTful API in less than 1 week.
Figure 6 - 3: AppCenter Alternative Portal
AppCenter User Guide 247
Integrating AppCenter with External Software
Full Integration through RESTful API
248 AppCenter User Guide
APPENDIX A
Visualizer Function Specification
•
•
Analytics Functions and Visualizations Supported
•
•
•
Supported Analytics Functions for Visualizations
•
Customization for Visualization
•
About this Appendix
This appendix provides specification information for the Visualizer function, including examples.
Analytics Functions and Visualizations
Supported
The visualization function loads a wide variety of column inputs and generates descriptions in
JSON format that are consumed by AppCenter sufficient to render a wide range of complex visualizations.
lists the analytics functions and visualization types supported.
AppCenter User Guide 249
Analytics Functions and Visualizations Supported
Table A - 34: Analytics Functions and Visualization Types Supported
Analytics
Function VizFamily
Network
VizType chord, sigma
Visualization
Cfilter
Statistics bar, line, pie
Npath
Network sankey, chord, sigma, tree
FindNameEntity
Wordcloud wordcloud
Sessionize
Statistics bar, line, pie
TF-IDF
Wordcloud wordcloud
ForestDrive
Network dtree
250 AppCenter User Guide
AppCenter User Guide
Analytics Functions and Visualizations Supported
In addition to supporting the analytics functions listed in
, Visualizer supports additional customization. For example, users can run SQL statements to compute their own aggregation against any analytics function output (or non-analytics function output) and generate an intermediate table that Visualizer can use as input to create a visualization description. However, there are a limited visualization types supported by the customization feature.
lists the visualization families and types for which additional customization is available.
Table A - 35: Additional Customization by Visualization Type
VizFamily
Network
VizType chord, sigma
Visualization
Statistics
bar, line, pie
wordcloud
wordcloud
Note:
UTF-8 is supported for the JSON output for visualization description.
251
Technical Background
Technical Background
Terminologies
•
•
•
•
•
Series
A series contains a group of similar things or events (nodes and edges). It is a list of nodes and edges for a network graph, a list of points for a statistical graph, and a list of words for wordcloud graph.
Table A - 36: Visualization Families
VizFamily
Network
Statistics
Wordcloud
Definition
Series containing list of nodes and edges
Series containing list of points
Series containing list of words
There are two ways to choose a series name from a column, as shown in
:
Table A - 37: Series Names
Input Table Visualization Example Series
Column
Name as
Series
Definition
Series name is given from the column name.
For example, in the right table, tablet2 and mini_tablet can be specified as series names.
id store tablet2 mini_tablet
1 Store A 325
2 Store B 200
3 Store C 310
230
280
320
252 AppCenter User Guide
Technical Background
Series
Column
Data as
Series
Table A - 37: Series Names (continued)
Input Table Definition
Series names is given from the column data.
For example, in the right table, the data under series column becomes series names.
id store
1 Store A
2 Store A
3 Store B
4 Store B
5 Store C
6 Store C sales series
325 tablet2
230 mini_tablet
200 tablet2
280 mini_tablet
310 tablet2
320 mini_tablet
Visualization Example
Aggregation and Direction
The aggregation properties control how the data is aggregated from columns in the table.
describes the two aggregation properties.
Table A - 38: Aggregation Properties
Property
ordered unordered
Description
Sequence is considered
Applicable to network and statistical graphs
Sequence is not considered during aggregation
Applicable to network, statistical, and wordcloud graphs
In the
example, cnt1 is the frequency for item1, cnt2 is the frequency for item2, and cntb is the co-occurrent frequency for both item1 and item2. If the aggregation type is ordered, the affinity of milk and bread is not semantically the same as the affinity of bread and milk. If the type is unordered, the affinity of those two cases are the same, and the frequency of bread and milk and milk and bread should be aggregated.
Table A - 39: Input Table item1
Milk item2
Bread cntb
2 cnt1
5 cnt2
5
Milk Butter 3 5 5
Milk
Milk
Bread
Butter
Bread
Milk
4
4
2
7
5
3
5
7
5
AppCenter User Guide 253
Technical Background
Property
ordered
For ordered type: affinity (milk, bread) = 6 affinity (bread, milk) = 2
For unordered type: affinity (milk, bread) = 8 = affinity (bread, milk)
Based on
, the visualization can be rendered as shown in
Table A - 40: Data Rendering Types
Visualization (bar) Affinity Value affinity (milk, bread) = 6 affinity (bread, milk) = 2 affinity (milk, butter) = 7
unordered
affinity (milk, bread) = 8 affinity (milk, butter) = 7
Network graphs can be classified as:
•
undirected graph (edges) between an unordered pair of nodes
•
directed graph (directed edges) between an ordered pair of nodes
254 AppCenter User Guide
AppCenter User Guide
Technical Background
If the aggregation type is ordered, the network graph being rendered is a directed graph. If the type is unordered, the rendered graph is undirected graph. Based on
visualization can be rendered as shown in
Table A - 41: Data Rendering Types
Property
ordered
Affinity Value affinity (milk, bread) = 6 affinity (bread, milk) = 2 affinity (milk, butter) = 7 frequency (milk) = 27 frequency (bread) = 14 frequency (butter) = 10
Visualization (bar)
unordered
affinity (milk, bread) = 8 affinity (milk, butter) = 7 frequency (milk) = 27 frequency (bread) = 14 frequency (butter) = 10
255
Technical Background
Directed Graphs have the following three classes:
•
unidirectional
•
multidirectional
•
nodirectional
An undirected graph is nodirectional.
lists acceptable aggregation types and directional properties for each predefined visualization type.
Table A - 42: Supported Aggregation Types and Corresponding Directional Properties
Viz Type
sankey
Aggregation
Type ordered
Directional Properties unidirectional (directed)
Note
sigma tree dtree chord bar line pie wordcloud
ordered unordered ordered no unordered ordered unordered ordered unordered ordered unordered unordered multidirectional (directed) nodirectional (undirected) unidirectional (directed) unidirectional (directed) nodirectional (undirected) no aggregation needed
256 AppCenter User Guide
AppCenter User Guide
Technical Background
Alignment
Left alignment lines up the data along the left edge. Conversely, right alignment lines up the data along the right edge.
Consider the following path data as the input with Sankey as the desired output visualization type.
Path
[A, B, C, D]
[B, A, C, D]
[C, D]
[A, B, C, D, E]
shows left alignment, where nodes A, B and C are aligned on the left edge.
Figure A - 4: Sankey Example, Left Alignment
shows right alignment, where nodes D and E are aligned on the right edge.
Figure A - 5: Sankey Example, Right Alignment
257
Technical Background
Coordinate Axis
A coordinate axis is defined for a statistical graph. Each coordinate axis represents a dimension with associated properties of title, unit, and coordinate axis type.
The following are the four types of axes:
•
categorical
•
numeric
•
datetime
•
elapsedtime
Payload and Annotation
Overhead or payload data can be annotated and shown in the visualization. The two types of annotations are user-driven and data-driven. The user-driven annotations can be applied to the whole context of the visualization graph; the data-driven annotations can be applied to a node/edge (network graph), point (statistical graph), or word (wordcloud). Both user-driven and data-driven annotations can be configured through argument clauses.
illustrates both user-driven and data-driven cases for stock crash analysis. Each "event" key/ value pair is annotated at a point level. The "author" key/value pair is user defined annotation being applied to the whole context of the graph.
Figure A - 6: Payload Cases Example
258 AppCenter User Guide
Visualizer Usage
Visualizer Usage
•
•
•
•
Invalid Input Data Handling Rules
•
Input Data and JSON Visualization Output
•
Output Columns and User Annotations
Syntax
Visualizer's syntax is compact and flexible, allowing novice and expert users to take advantage of the underlying visualization functionality.
select * from Visualizer (
[ON <annotation_table> as annotation DIMENSION]
ON <input_table/input_relation> as input1 PARTITION BY <column1> [, <column2>, ...]
[ON <input_table/input_relation> as input2 PARTITION BY <column1> [, <column2>,
...]]
[ON <input_table/input_relation> as aggregates PARTITION BY <column1> [, <column2>,
...]]
AsterFunction('<function name>')
[ColumnMap( '<expect_column1>=<input_columnname1[; "<delimiters1>"]>',
'<expect_column2>=<input_columnname1[; "<delimiters2>"]>', '...'
| '[<input_table>:]<expect_columnname1>=<input_columnname1>[;
"<delimiters1>"]>','[<input_table>:]<expect_columnname2>=<input_columnname2[;
"<delimiters1_2>"]>', '...']
VizType('[<customized viz type> :] <predefined viz type>')
[VizOptions('<option1>=<value1>'[, '<option2>=<value2>,' '...'])]
[ColumnNameAsSeries('<series_name1>' [, '<series_name2>', ...])]]
[ColumnDataAsSeries('<column_name1>')]]
[ColumnDataAsSeriesFilter('[<series_name1>=]<allowable_value1>, [...]')]]
[JoinAnnotationTableByColumns('<column_name1>'[, '<column_name2>', '...'])]
[AnnotateFrom('[<from_column_name1>' [, '[<from_column_name2>', '...'])]
[AnnotateFromFilter('[<annotation1>=]<allowable_value1>,...' [,
[<annotation2>=]<allowable_value2>,...]', '...'])]
[AnnotateTo('node | edge | point | word [:<to_column_name_1> [,<to_column_name_2>,
...]=<from_column_name1>', '...')]
[Title('<title>')]
[Subtitle('<subtitle>')]
[CurrentTime('<true | false | y | n | 1 | 0>')]
[UserAnnotations('<key1>=<value1>' [, '<key2>=<value2>', ...])]
[Accumulate('<column1>'[,'<column2>', ...)]
[Compress('<true | false | y | n | 1 | 0>')]
[URL('visualization_server=<server ip and port>', 'profile=<profile name>',
'output_table=<table name>')]
);
Tip:
To avoid out-of-memory issues when running the Visualizer function on large data sets, set the COMPRESS argument to 'true'.
AppCenter User Guide 259
Visualizer Usage
ON Clauses
Visualizer takes single or multiple input tables. The table input1 is a required table and the table input2 is an optional table. Both contain the key content of the visualization data.
There are three conditions that determine whether to use input2 table:
•
If Visualizer takes a known analytics function output as input, input2 is not needed.
•
If Visualizer takes customized table as input and the desired visualization is a network graph, input2 may be needed as the edge table that refers to the node ids in the node table, input1.
•
If Visualizer takes customized table as input and the desired visualization is a statistics graph, either input1 or input2 is needed, but not both.
For details about how to use input1 and input2 together, see
Customization for Visualization .
Similar to Accumulate argument clause, the aggregate table contains user-defined metadata that will be carried to the output table instead of JSON visualization description.
The following example shows that the total_visits column is created in the output table containing user-defined data.
create table visualizer_output_aggregates distribute by hash(id) as select title, json from Visualizer (
on npath_input as input1 partition by id order by 1
on npath_vertex_annotation as annotation DIMENSION
on (select sum(cnt) as total_visits from npath_input ) as aggregates partition by 1
asterfunction('npath')
JoinAnnotationTableByColumns('item1')
AnnotateFrom('item1_attr')
AnnotateTo( 'node=item1_attr')
viztype('sankey')
title('npath - sankey')
);
Table A - 43: Output Table id
...
title
...
json
...
total_visits
...
The annotation table is an optional dimension table that contains supplemental information relevant to nodes or edges (Network family), points (Statistics family) or words (Wordcloud family). The annotation table can be joined with input1 or input2 table through the
JoinAnnotationTableByColumns argument clause (described in
data can be later extracted and annotated to the visualization graph.
The PARTITION BY keys of the input tables should be the same.
260 AppCenter User Guide
Visualizer Usage
Argument Clauses
Table A - 44: Argument Clauses
Clause
ASTERFUNCTION
COLUMNMAP
Status Description
Required You can select one of the supported Aster functions (e.g., npath, cfilter, or custom). For the list of acceptable analytics function names, see
Analytics Functions for Visualizations
and
Customization for Visualization
.
Optional The column names in the input table may be different from the expected column names. For example, Npath function output may have an aliased column name "mypath," which is different from the default Npath output column name "path". In this case, the user specifies the following so that the system knows how to map the column:
ColumnMap('path=mypath')
Sometimes, the data in the column contains composite information that needs to be tokenized and extracted. For example, the path column of the
Npath output table contains a sequence of elements such as "[A, B, C, D]".
The delimiters ",", "[" and "]" need to be given in the argument clause so that the Visualizer built-in tokenizer can extract individual elements "A",
"B", "C" and "D":
ColumnMap('path=mypath; ",[]" ')
If the delimiter is not defined, either the default delimiters are used or no delimiter is applied. For a list of expected column names and default delimiters, please see
Supported Analytics Functions for Visualizations
and
Customization for Visualization
.
ColumnMap can map columns to expected columns for input1 and input2 defined in ON clauses. There are two types of syntax.
If only input1 or input2 table is used, use the following syntax:
ColumnMap( '<expect_column1>=<input_columnname1[;
"<delimiters1>"]>',
'<expect_column2>=<input_columnname1[;
"<delimiters2>"]>', '...')
If both input1 table and input2 table are used, use the following syntax, which requires of specifying table name (input1 or input2) with scope resoluter ":" in front of the column name:
ColumnMap('[<input_table>:]<expect_columnname1>=<input_columnn ame1>[;
"<delimiters1>"]>','[<input_table>:]<expect_columnname2>=<inpu t_columnname2[; "<delimiters1_2>"]>', '...')
VIZTYPE
Required You can specify the predefined visualization graph type, e.g., Sankey,
Chord, etc. You can also create a new name by inheriting properties from the predefined viz type, such as:
VizType('hyperbolic tree: tree")
The purpose of introducing a new name is to create a custom interface using the name as the identifier in the application.
For example, you can specify
VizType('hyperbolic tree: tree")
, parse the JSON output, and then render the graph.
You can specify VizType('Sunray tree: tree), parse the JSON, and then render a graph based on the key "Sunray.”
AppCenter User Guide 261
Visualizer Usage
Clause
VIZTYPE (continued)
VIZOPTIONS
Table A - 44: Argument Clauses (continued)
COLUMNNAMEASSERIES
Status Description
Required You can specify the predefined visualization graph type, e.g., Sankey,
Chord, etc. You can also create a new name by inheriting properties from the predefined viz type, such as:
VizType('hyperbolic tree: tree")
The Visualizer will put the visualization type " hyperbolic tree
" into
JSON. If the rendering engine, such as AppCenter, recognizes the
" hyperbolic tree
," it will render the visualization graph.
Similarly, you can specify VizType('Sunray tree: tree).
Optional Visualization options. This argument defines optional key/value pairs such as alignment and coordinate axes. This argument is used with the VIZTYPE argument.
For more information, see
Supported Analytics Functions for
.
Optional Series name is given from the column name. You can specify one or more columns as the series names for statistics graphs, network graphs, and wordcloud graphs. The following restrictions apply:
Restrictions:
•
For network and wordcloud graphs, each series name in the list must correspond to each numeric column’s numericValue i in order. The number of series must be equal to the number of numericValue i for the column; then, Visualizer can automatically map series names to those numeric columns.
•
For statistical graphs, each series name in the list must correspond to each pair of (x i
, y i
) in order. The number of series must be equal to the number of pairs of (x i
, y i
); then, Visualizer can automatically map series names to those coordinate pairs.
ColumnNameAsSeries is supported only when AsterFunction clause with
"custom" argument. For more information, see
262 AppCenter User Guide
Visualizer Usage
Table A - 44: Argument Clauses (continued)
Clause
COLUMNDATAASSERIES and
COLUMNDATAASSERIESFIL
TER
Status
Optional
JOINANNOTATIONTABLEBY
COLUMNS
Optional
Description
The column data to be used as the series names for both statistical and network graphs.
ColumnDataAsSeries is used to specify the table and column name.
ColumnDataAsSeriesFilter can be optionally defined to filter out unwanted series. Use "=" to replace the series name with a new name. If "=" is not specified, the column data is the series name. If the series name contains punctuation marks such as SPACE or comma, surround the column name with double quotation marks (").
The following example specifies the data under hit_time_gmt as series names, redefines "Jan" and "Feb" as the new series names instead of
"January" and "February," and filters the unwanted series name "December"
ColumnDataAsSeries('hit_time_gmt')
ColumnDataAsSeriesFilter('Jan=January, Feb=February, Nov') input1: hit_time_gmt ip
January 192.168.0.256
January
February
November
December
192.168.1.256
192.168.2.256
192.168.3.256
192.168.4.256
...
cnt1
...
[Cart : Billing and Shipping, Cart : Billing and Shipping,Cart]
...
[Cart : Billing and Shipping, Cart : Billing and Shipping, International]
...
[Cart : Billing and Shipping, SEARCH ,
Home Page]
[Cart : Billing and Shipping, SEARCH ,
Home Page]
[Cart : Billing and Shipping, SEARCH ,
Home Page]
Specifies one or more columns of the annotation table, representing nodes or edges (Network family), points (Statistics family) or words (Wordcloud family), in the argument clause to join the input1 table.
The columns to be joined with
input1
are determined by the
AsterFunction argument.
If the clause is specified and the annotation table is not specified in the ON clause (or vice versa), an error message will be displayed.
For more information, see
Supported Analytics Functions for
and
Customization for Visualization
.
AppCenter User Guide 263
Visualizer Usage
Clause
Table A - 44: Argument Clauses (continued)
ANNOTATEFROM
ANNOTATEFROMFILTER
ANNOTATETO
Status
Optional
Description
Annotate overhead or payload data under one or more designated table/ columns onto the visualization graph. AnnotateFrom and AnnotateTo must be used together; if you define AnnotateFrom, you must also define
AnnotateTo.
ANNOTATEFROM identifies the location of the annotations under the designated table and columns. ANNOTATETO identifies the objects to which the annotations should be attached.
For a network graph, specifying "node" or "edge" will attach the annotation to the node or edge. For statistics, specifying "point" will attach the annotation to the point. For a wordcloud family, specifying "word" will attach the annotation to the word.
For more information, see
Supported Analytics Functions for
.
When both the JOINANNOTATIONTABLEBYCOLUMNS and
ANNOTATEFROM clauses are specified, Visualizer assumes the column name specified in the ANNOTATEFROM clause is present in the annotation table. If the column name defined in ANNOTATEFROM doesn't exist, Visualizer displays error message. If
JoinAnnotationTableByColumns is not specified, Visualizer assumes the column name specified in ANNOTATEFROM is present in the input table.
Similar to COLUMNDATAASSERIESFILTER, ANNOTATEFROMFILTER is used to filter out unwanted data. If ANNOTATEFROMFILTER is specified, each argument in ANNOTATEFROM must match up in order with an argument in ANNOTATEFROMFILTER. If
ANNOTATEFROMFILTER is not specified, all data under the column specified by ANNOTATEFROM will be annotated. Because the annotated data is accumulated during the aggregation process, the JSON output may be very large; therefore, we recommend you use
ANNOTATEFROMFILTER.
264 AppCenter User Guide
Visualizer Usage
Clause
Table A - 44: Argument Clauses (continued)
ANNOTATEFROM
ANNOTATEFROMFILTER
ANNOTATETO
Status
Optional
Description
Example 1:
This example here shows how to annotate attributes to nodes and edges.
Assuming AsterFunction argument is given 'npath,' the left portion of the table is the npath input table, and the right side of the table is the npath annotation table.
npath_input id Path Cnt
1 [A, B, C] 1
2 [A, B, D] 1
3 [E, B, C] 1 item_1
A
B npath_node_annotation item1_attr
03/27/2013
03/28/2013
To annotate item1_attr column to nodes and get a sankey visualization description, the following function syntax would be used: select title, json from Visualizer ( on npath_input as input1 partition by 1 order by id on npath_node_annotation as annotation DIMENSION asterfunction('npath')
JoinAnnotationTableByColumns('item_1')
AnnotateFrom('item1_attr')
AnnotateTo('node=item1_attr') viztype('sankey') title('npath - sankey')
);
The output of the function can be consumed by a rendering engine, such as
AppCenter, to render the Sankey graph similar to the following:
AppCenter User Guide 265
Visualizer Usage
Clause
Table A - 44: Argument Clauses (continued)
ANNOTATEFROM
ANNOTATEFROMFILTER
ANNOTATETO (continued)
Status
Optional
Description
Example 2:
This example shows how to annotate attributes to edges. Assuming
AsterFunction argument is given 'npath'. The left table in the following is npath input table, and the right table is npath_annotation table.
npath_input id Path Cnt
1 [A, B, C] 1
2 [A, B, D] 1
3 [E, B, C] 1 from_item
A
B npath_annotation to_item
B
D edge_attribute most popular popular
To annotate edge_attribute column to edges and get a sankey visualization, description, the following function syntax would be used: select title, json from Visualizer ( on npath_input as input1 partition by 1 order by id on npath_annotation as annotation DIMENSION asterfunction('npath')
JoinAnnotationTableByColumns('from_item', 'to_item')
AnnotateFrom('edge_attribute')
AnnotateTo('edge=edge_attribute') viztype('sankey') title('npath - sankey')
);
The output of the function can be consumed by a rendering engine, such as
AppCenter, to render the Sankey graph similar to the following:
266 AppCenter User Guide
Visualizer Usage
Clause
Table A - 44: Argument Clauses (continued)
ANNOTATEFROM
ANNOTATEFROMFILTER
ANNOTATETO (continued)
Status
Optional
Description
Example 3:
This example demonstrates that N number of columns of annotations extracted from columns specified in the AnnotateFrom clause can be annotated to one column or a group of columns, where columns annotated-from and annotated-to are in the same table.
cob1_item1 cob1_item2 cntb cnt1 cnt2 support confidence milk milk milk butter eggs flour flour eggs butter flour butter eggs flour eggs butter flour butter eggs butter butter eggs milk milk milk
3
4
5
5
3
3
2
4
3
4
4
2
5
5
5
7
5
5
5
7
5
5
7
5
5
7
7
5
5
5
5
5
5
7
5
5
0.25
0.5
0.375
0.375
0.625
0.625
0.375
0.5
0.5
0.25
0.376
0.5
0.4
0.8
0.6
0.6
0.714
1
0.6
0.571
0.8
0.4
0.6
0.571
The following syntax shows that annotations are extracted from the support and confidence columns and attached to col1_item1 and col1_item2 as an affinity group: select title, json from Visualizer ( on cfilter_test1_copy as input1 partition by 1
Asterfunction('cfilter')
AnnotateFrom('support', 'confidence')
AnnotateFromFilter('0.375, 0.25, 0.625, 0.8, first=1.0',
'0.4, 0.6, 0.625, first=1.0, 0.8')
AnnotateTo('edge:col1_item1, col1_item2=support',
'edge:col1_item1, col1_item2=confidence') viztype('sigma') title('cfilter')
);
The following is a snippet of JSON output:
{
"id":70,
"label":"flour eggs",
"fromNodeId":3,
"toNodeId":7,
"numericValue":0.7142857142857143,
"payload":{
"support":{
"0.625":1.0
},
"confidence":{
"first":1.0
}
}
},
AppCenter User Guide 267
Visualizer Usage
Clause
Table A - 44: Argument Clauses (continued)
ANNOTATEFROM
ANNOTATEFROMFILTER
ANNOTATETO (continued)
Status
Optional
Description
Example 4:
The following is an example of using AnnotateFrom and
AnnotateFromFilter when AsterFunction argument is findnamedentity.
You are interested in annotating "[email protected]" as John's contact information. In this case, the AnnotateFrom and AnnotateFromFilter argument clauses would be defined as shown in the following:
ENTITY
U.S.
Italy
Scotland john@company1.
com
TYPE START END CONTEXT location 0 location 46 location 143 email 25
7
57
Company 1 manager John Smith...
... has arrived at Company 2, where he...
154 ... manager is visiting Company 3...
42 ... email via [email protected]
Argument Clause:
AnnotateFrom('ENTITY')
AnnotateFromFilter('"John's contact info"="[email protected]"')
Example 5:
This example demonstrates that N number of columns of annotations extracted from columns specified in the AnnotateFrom clause can be annotated to one column or a group of columns.
The following syntax shows that two columns of annotations are extracted from sale_location and sale_location2 and attached to col1_item1 and col1_item2 as an affinity group:
AnnotateFrom('sale_location', 'sale_location_2')
AnnotateFromFilter('Milpitas, Princeton, "San Diego"="San
Diego_1"', 'Santa Barbara')
AnnotateTo('edge:"col1_item1, col1_item2"=sale_location',
'edge:"col1_item1, col1_item2"=sale_location_2')
Input table: col1_item1 col1_item2 cntb cnt1 cnt2 sale_location sale_location_2 milk milk cheese milk
...
butter bread milk soda
...
4
4
2
4
...
7
5
3
5
...
5
7
5
5
...
Milpitas
Milpitas
San Jose
San Diego_1
...
Santa Barbara
In this example, "Milpitas" and "Santa Barbara" are annotated to "milk bread." "San_Diego_1" is annotated to "milk soda."
268 AppCenter User Guide
Visualizer Usage
Clause
Table A - 44: Argument Clauses (continued)
ANNOTATEFROM
ANNOTATEFROMFILTER
ANNOTATETO (continued)
Status
Optional
Description
Example 6:
This example shows how to annotate a graph when AsterFunction argument is 'cfilter'.
cfilter_table col1_item1 col1_item2 cntb cnt1 cnt2 milk milk cheese milk milk soda butter bread butter bread milk cheese soda milk milk milk
4
4
4
4
2
2
4
4
5
7
5
5
3
5
7
5
7
5
5
5
5
3
5
7 cfilter_affinity_annotation: item1 milk item2 cheese item_attr organic select * from Visualizer (
ON cfilter_table as input1 partition by 1
ON cfilter_affinity_annotation as annotation DIMENSION
AsterFunction('cfilter')
viztype('line')
title('cfilter')
JoinAnnotationTableByColumns('item1', 'item2')
AnnotateFrom('item_attr')
AnnotateTo('point:col1_item1,col1_item2=item_attr')
);
The output of the function can be consumed by a rendering engine, such as
AppCenter, to render the line chart similar to the following:
AppCenter User Guide 269
Visualizer Usage
Clause
Table A - 44: Argument Clauses (continued)
ANNOTATEFROM
ANNOTATEFROMFILTER
ANNOTATETO (continued)
Status
Optional
Description
Although the current version of AppCenter does not support annotations for a statistics graph, the JSON output from Visualizer contains the
"organic" annotation for "cheese milk" as shown here:
{
"axes":[
{
"axisType":"Categorical",
"title":"Affinity",
"unit":"",
"axisData":[
"milk butter",
"milk bread",
"cheese milk",
"milk soda"
]
},
{
"axisType":"Numeric",
"title":"Probability",
"unit":""
}
],
"series":{
"Series 1":{
"points":[
{
"coordinates":[
0.0,
0.5818181818181818
],
"numericValue":0.5818181818181818,
"payload":{
}
},
{
"coordinates":[
1.0,
0.4155844155844156
],
"numericValue":0.4155844155844156,
"payload":{
}
},
{
"coordinates":[
2.0,
0.24242424242424243
],
"numericValue":0.24242424242424243,
"payload":{
"item_attr":{
"organic":1.0
}
}
},
{
270 AppCenter User Guide
Visualizer Usage
TITLE
SUBTITLE
CURRENTTIME
USERANNOTATIONS
ACCUMULATE
COMPRESS
Table A - 44: Argument Clauses (continued)
Clause
ANNOTATEFROM
ANNOTATEFROMFILTER
ANNOTATETO (continued)
Status
Optional
Description
Optional Visualization title. If it contains punctuation characters, surround the string with double quotation marks (“”). If this argument is specified,
Visualizer creates the title column and adds it to the serialized JSON string.
Optional Visualization subtitle. If it contains punctuation characters, surround the string with double quotation marks (“”). If this argument is specified,
Visualizer creates the subtitle column and adds it to the serialized JSON string.
Optional
Optional
Whether to add visualization creation time to the output table. If this argument is
'true'
, Visualizer creates the time_stamp column in the output table and adds it to the serialized JSON string. Default is
'false'
.
List of user defined key/value pairs. For example, (
'userName=aster',
'userGroup=groupA'
). The information is carried over to the JSON output as a global payload, and to output columns where the key is the column name and the value is the column data.
Optional
"coordinates":[
3.0,
0.5818181818181818
],
"numericValue":0.5818181818181818,
"payload":{
}
}
]
}
},
"family":"Statistics",
"vizType":"line",
"version":"1.0",
"title":"cfilter",
"statistics":{
"points":4
},
"userData":{
}
}
Optional
The columns and values from the input table to be passed to the output table. Please note that the accumulated columns should be the same as the
PARTITION BY keys of the
ON clause tables.
Whether to compress the JSON data.
When the size of the JSON object ( varchar
) exceeds the limit that the database can transfer through a SQL-MR function output, set this argument to true to compress the JSON data to avoid out-of-memory issues.
When compression is enabled, the JSON column schema changes from varchar to bytea
.
AppCenter User Guide 271
Visualizer Usage
Clause
URL
Table A - 44: Argument Clauses (continued)
Status
Optional
Description
The JSON description output from Visualizer is consumed by the
AppCenter, which renders the HTML format. Specifying the URL arguments “visualization_server,” “profile,” and “output_table” formulates and outputs the URL address as an additional column. You can copy and paste the address to a web browser and view the visualization in an HTML browser.
This is an example of copying and pasting the address of a web browser to view it as HTML:
URL('visualization_server=10.80.146.100:10',
'profile=Alice', 'output_table=viz')
Output Table: id json url
12345 .....
https://10.80.146.100:10/appserver/portal/ url?profile=Alice&outputtable=viz&id=1234
All of the column names in arguments COLUMNMAP, COLUMNDATAASSERIES,
COLUMNDATAASSERIESFILTER, ANNOTATEFROM, ANNOTATEFROMFILTER,
ANNOTATETO, and JOINANNOTATIONTABLEBYCOLUMNS are treated as caseinsensitive in the function. If the column names contain uppercase letters or special characters, you must enclose it with double quotation marks.
Invalid Input Data Handling Rules
Rule 1
The affinity score computation result for cfilter should be always between 0 and 1, inclusive. If the input table has invalid data, the system will detect it and the score will be set 0, which means no relationship between those two items.
Table A - 45: Rule 1, Invalid Data storeid col1_item1 col2_item2 cntb
1 ‘Milk’ ‘Bread’ 2 cnt1 cnt2
0 7 score
1 support
1 confidence
1 lift
1 z_score
is an example of invalid data. The cnt1 column is supposed to be equal to or greater than cntb, but it is 0. Applying the scoring formula will introduce the value of Infinity.
In this case, 0 was used to indicate that "milk" and "butter" have no relationship.
For more information, see
Affinity Score Computation for AsterFunction Cfilter .
272 AppCenter User Guide
Visualizer Usage
2
3
4
Rule 2
If any input columns contain null, infinity, or NaN value, the row will be ignored. The series column and annotation columns are not affected by this rule.
is an example of an invalid value.
Table A - 46: Rule 2, Invalid Value storeid col1_item1 col2_item2 cntb
1 ‘Milk’ ‘Bread’ 2 cnt1 cnt2
3 7 score
1 support
1 confidence
1 lift
1 z_score
‘Milk’
‘Milk’
‘Milk’
‘Bread’ null
‘Bread’
NaN
2
2
3
3
3
7
7
7
1
1
1
1
1
1
1
1
1
1
1 null
Row 2 and 3 contain null or NaN values, and are consequently ignored; however, row 4 is not ignored, even though there is a null value under the column 'lift', because Visualizer doesn't use 'lift' as an input column.
Input Data and JSON Visualization Output
Visualizer can generate one visualization description per input row or more-than-one input rows.
One Input Row for One Visualization: One input table row represents one visualization.
N
Input Rows for One Visualization: N number of input table rows of a given partition represents
one visualization.
Table A - 47: One or Multiple Input Rows
AsterFunction Name
npath
One Input Row for
One Visualization
N Input Rows for One
Visualization
X
cfilter findnamedentity sesionize
X
X
X
tfidf
X
forestdrive
X
custom
X
AppCenter User Guide 273
Visualizer Usage
Output Columns and User Annotations
Visualizer outputs only one table. The number of output columns varies, depending on the settings in argument clauses. At least the following two columns will always be shown.
id json
The id in each row represents only one visualization graph. The title is carried over from the title argument clause. The seralized JSON string as visualization description is put in the json column.
If the title, subtitle, currenttime, or accumulate columns are specified in the argument clauses, title, subtitle, time_stamp, URL, or accumulate will appear in the output table; otherwise, they will not appear.
If the UserAnnotation clause is specified, each key of the annotation pairs as the argument becomes the column name, and the value of the annotation pair is put into the column data.
In the following example, "start date" and "end date" become column names: select * from Visualizer (
on ner partition by 1
asterfunction('findnamedentity')
currenttime('true')
viztype('wordcloud')
title('ner')
userannotation('start date=10/12/2013','end date=10/30/2013')
);
Table A - 48: One or Multiple Input Rows Example id
8444249301319680 title ner start date end date json
10/12/2013 10/30/2013 ......
274 AppCenter User Guide
Supported Analytics Functions for Visualizations
Supported Analytics Functions for
Visualizations
•
•
VizType and VizOptions Argument Clauses
•
AsterFunction, VizType and Coordinate Axes
•
Aggregation Behavior for Sessionize
•
Affinity Score Computation for AsterFunction Cfilter
When using the AsterFunction argument, you can also use the COLUMNMAP argument to specify the column mapping between the columns of input table and the expected column names by the function specified in the AsterFunction argument.
AsterFunction and ColumnMap
Syntax
AsterFunction('<function name>')
ColumnMap('<expect_column1>=<input_columnname1[; "<delimiters1>"]>',
'<expect_column2>=<input_columnname1[; "<delimiters2>"]>', '...')
AppCenter User Guide 275
Supported Analytics Functions for Visualizations
Analytics
Function
Npath
AsterFunction
Name npath
Table A - 49: Supported Functions for Visualizations
Expected
Columns path cnt
Built-In
Tokenizer with/ without
Delimiters string with default delimiter ",",
"[", "]" numeric
Column Mapped-To
Options and
AnnotateTo
Argument Clause
path: column name mapping to the expected column
"path" in
ColumnMap argument clause.
For example:
ColumnMap('path
=mypath'), where mypath is a column name in the input table that maps to "path".
Joining Annotation
Table and Input Table
Tokenized items under path column in the input table and the column, specified in
JoinAnnotationTable
ByColumns, representing the nodes in the annotation table.
The edge information in the annotation table can be joined if
JoinAnnotationTable
ByColumns takes two columns, where the first column corresponds to the source element and the second column corresponds to the target element.
Notes
276 AppCenter User Guide
Supported Analytics Functions for Visualizations
Analytics
Function
Cfilter
Table A - 49: Supported Functions for Visualizations (continued)
AsterFunction
Name cfilter
Expected
Columns col1_item
1 col1_item
2 cnt1 cnt2 cntb
Built-In
Tokenizer with/ without
Delimiters string string numeric numeric numeric
Column Mapped-To
Options and
AnnotateTo
Argument Clause
col1_item1: Column name mapping to the expected column
“col1_item1” in
ColumnMap argument clause.
col1_item2: Column name mapping to the expected column
“col1_item2” in
ColumnMap argument clause.
col1_item1,
col1_item2: Column names mapping to the expected column
“col1_item1” and
“col1_item2” in
ColumnMap argument clause.
For network graph, the data under the col1_item1 column and col1_item2 columns represent nodes. col1_item1 data and col1_item2 data grouped-by together represents the edge. The edge indicates affinity of two items.
For statistics graph, one of the axes is categorical and represents the affinity; the other is numerical and represents the weight of the affinity.
Joining Annotation
Table and Input Table
col1_item1 and
col1_item2 in the input table and the column specified by
JOINANNOTATIONT
ABLEBYCOLUMNS
represent the nodes in the annotation table.
The edge information in the annotation table can be joined if
JOINANNOTATIONT
ABLEBYCOLUMNS
specifies two columns, where the first column corresponds to
col1_item1 and the second column corresponds to
col1_item2.
Notes
AppCenter User Guide 277
Supported Analytics Functions for Visualizations
Analytics
Function
FindNa medEnti ty
AsterFunction
Name findnamedenti ty
Expected
Columns
ENTITY
TYPE
Sessioni ze
sessionize
TFIDF
tfidf
forest_d rive
forestdrive
Table A - 49: Supported Functions for Visualizations (continued) x y term tf_idf tree
Built-In
Tokenizer with/ without
Delimiters string string
Column Mapped-To
Options and
AnnotateTo
Argument Clause
ENTITY: Column name mapping to the expected column “ENTITY” in the
COLUMNMAP
argument.
ENTITY represents the node. If specified, the source data will be annotated to the node.
datetime
(default), can be a categorical, datetime, numeric, or elapsedtime, based on coordinate axes in the
VIZOPTIONS
argument.
x,y: Column name mapping to the expected column
“x” and column “y” in COLUMNMAP argument clause.
x,y represents the coordinates of the point. If specified, the source data is annotated to the point.
numeric string numeric string
term: Column name mapping to the expected column
“term” in
COLUMNMAP
argument.
Term represents the node. If specified, the source data is annotated to the node.
tree: Column name mapping to the expected column
“tree” in
COLUMNMAP
argument.
term and the column representing terms specified by the
JOINANNOTATIONT
ABLEBYCOLUMNS
argument.
JOINANNOTATIONT
ABLEBYCOLUMNS,
ANNOTATIONFROM
and ANNOTATETO are not supported.
Joining Annotation
Table and Input Table
ENTITY in the input table and the column, specified in
JOINANNOTATIONT
ABLEBYCOLUMNS, representing the entity in the annotation table.
OR
ENTITY and TYPE in the input table and the columns, specified in
JOINANNOTATIONT
ABLEBYCOLUMNS, representing the entity and type.
x and y in the input table and the x and y columns representing the points in the annotation table specified by the
JOINANNOTATIONT
ABLEBYCOLUMNS
argument.
Notes
Partition by 1 is not allowed.
COLUMNNA
MEASSERIES
and
COLUMNDAT
AASSERIES
are not supported.
278 AppCenter User Guide
Supported Analytics Functions for Visualizations
Visualizer will display error messages if an expected column name is missing.
shows acceptable SQL data types corresponding to each tokenizer type.
Table A - 50: Acceptable SQL Data Types
Built-In
Tokenizer Type
string numeric datetime elapsedtime
Acceptable SQL Data Type varchar, bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint, character (n), text, interval, ip4, ip4range, date, time, timestamp bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint time [(p)] [without time zone], time [(p)] with time zone, timestamp [(p)] [without time zone], timestamp [(p)] with time zone, date, bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint
Expected column names are the column names accepted by the Visualizer, which are typically the standard Analytics function output column names. A proprietary column name must be mapped to expected column names. The SQL type of the column being mapped must be an acceptable SQL type, which can be checked through the built-in tokenizer type defined in
is a Cfilter output table with aliased column names drink_item and other_item.
Table A - 51: Cfilter Output Table drink_item other_item cntb cnt1 cnt2 score
...
...
...
milk milk milk flour butter eggs
...
...
...
2
3
4
...
...
...
5
5
5
5
5
7
...
...
...
...
...
...
0.16
0.36
0.457142
8571428
57
...
...
...
...
...
...
support confidence lift
0.25
0.375
0.5
0.4
0.6
0.8
...
...
...
...
...
0.64
0.96
0.91428
571428
5714
...
...
...
...
z_score
-1.56669890360128
-0.522232967867094
0.522232967867094
AppCenter User Guide 279
Supported Analytics Functions for Visualizations hit_time_ gmt
Jan ip
192.168.5.256
To map the aliased name to the expected column name, apply the argument clause:
ColumnMap ('col1_item1=drink_item', 'col2_item2=other_item')
String tokenizer tokenizes the data with the SQL type varchar, etc., into a list of elements.
Numeric tokenizer tokenizes the data with the numeric SQL type, such as int, bigint, etc., into a list of elements.
is an Npath output table. After tokenization on the path column in the first row, three elements are extracted: "Cart : A", "Cart : B" and "Cart : C".
Table A - 52: Extracted Elements from First Row visid_low
3112746612 visid_high
214711330 visit_ num
39 geo_ region ok geo_ country cnt path usa 3 [Cart : A, Cart : B, Cart : C]
VizType and VizOptions Argument Clauses
Syntax
VizType('<type>')
VizOptions('<option1>=<value1>' [, '<option2>=<value2>', '...')]]
lists the supported visualization types and optional key value pairs.
Table A - 53: Supported Visualization Types and Optional Key Value Pairs
Viz Type
sankey chord tree
Key alignment aggregation aggregation aggregation
Value left/right (default: left) ordered (default) unordered (default) ordered ordered (default)
dtree sigma
aggregation aggregation no (default) unordered / ordered (default: ordered)
bar line
coordinateaxes aggregation coordinateaxes aggregation
<TITLE>, <UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> [ ;
<TITLE>, <UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> ] unordered / ordered (default: unordered): applicable when the input table contains affinity information
<TITLE>, <UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> [ ;
<TITLE>, <UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> ] unordered / ordered (default: unordered): applicable when the input table contains affinity information
280 AppCenter User Guide
Supported Analytics Functions for Visualizations
Viz Type
pie wordcloud
Table A - 53: Supported Visualization Types and Optional Key Value Pairs (continued)
Key coordinateaxes aggregation aggregation
Value
<TITLE>, <UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> [ ;
<TITLE>, <UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> ] unordered / ordered (default: unordered): applicable when the input table contains affinity information unordered (default)
Default aggregation type will be applied if the aggregation key is not defined. For more information about ordered/unordered and alignment definitions, see
The coordinate axes are specific to each analytic function, described in the following section.
For 6.0 release, only two dimensions (or two coordinate axes) are supported.
AsterFunction, VizType and Coordinate Axes
lists the supported AsterFunction, VizType, and coordinate axes. Only two dimensions (or two coordinate axes) are supported.
Table A - 54: AsterFunction, VizType, and Coordinate Axes
AsterFunction
cfilter
VizFamily
Network
Statistics
VizType chord, sigma bar, line, pie
Coordinate Axes coordinateaxes=<TITLE>,
<UNIT>, <CATEGORICAL>;
<TITLE>, <UNIT>,
<NUMERIC>
Note
User needs to specify the coordinate axes for statistics family.
The order of coordinate axes is important. The categorical axis must be the first, and the numeric axis must be the second. The graph shows relationship between items; whereas, the numeric axis coordinate is the affinity score between two items and the categorical axis coordinate is the label for those two affinity items.
npath
Network sankey, chord, sigma, tree wordcloud
findnamedent ity sessionize
WordCloud
Statistics bar, line, pie coordinateaxes=<TITLE>,
<UNIT>, <DATETIME |
ELAPSEDTIME | NUMERIC |
CATEGORICAL>; <TITLE>,
<UNIT>, <NUMERIC>
User needs to specify the coordinate axes for statistics family.
The order of coordinate axes is important. The second axis must be numeric. If the coordinate axes are not specified, the first axis is named as
"Clicktime" with type datetime, and the second axis is named as "Count" with type numeric.
tfidf
WordCloud wordcloud
forestdrive
Network dtree
AppCenter User Guide 281
Supported Analytics Functions for Visualizations
Aggregation Behavior for Sessionize
shows the aggregation behavior based on the combination of coordinate axes, when the visualization type is line, bar, or pie. There are two actions, A and B.
Table A - 55: Aggregation Behavior
1st Coordinate Axis
CATEGORICAL
NUMERIC
DATETIME
ELAPSEDTIME
2nd Coordinate Axis
CATEGORICAL NUMERIC DATETIME
B
A
A
A
ELAPSEDTIME
There are two actions, A and B.
Table A - 56: Actions
Action Description
A Aggregate rows with the same (x, y) vertically, count the duplicates, and assign the total count to y coordinate and numericalValue field in JSON output.
B Aggregate rows with the same (x) vertically, sum up the yvalue, and assign the total sum to y coordinate and numericalValue field in JSON output.
Affinity Score Computation for AsterFunction Cfilter
In general, the following algorithm is used: cooccuredWeight.getValue() * cooccuredWeight.getValue())
/ (elementWeight[0].getValue() * elementWeight[1].getValue()
If the AsterFunction argument clause specifies anything else except "Cfilter," the algorithm is not used.
Assume that the following is the table (where cntb is co-occurred weight):
Table A - 57: Input Table col1_item1 milk col1_item2 butter cntb
3 cnt1
4 cnt2
3
In this case, Cfilter calculates the affinity score to be:
(cntb * cntb) / (cnt1 * cnt2)= (3 * 3) / (4 * 3) = 9 / 12 = 0.75
282 AppCenter User Guide
Customization for Visualization
Customization for Visualization
•
•
•
•
Aggregation Behavior for Statistics Family
•
Aggregation Behavior for Network Family
•
Aggregation Behavior for Wordcloud Family
•
Visualizer can take the original analytics function output table as input. The data output from the other software can be fed into Visualizer for aggregation and serialization.
AsterFunction and ColumnMap
AsterFunction('<function name>')
ColumnMap( '<expect_column1>=<input_columnname1[; "<delimiters1>"]>',
'<expect_column2>=<input_columnname1[; "<delimiters2>"]>', '...'
| '[<input_table>:]<expect_columnname1>=<input_columnname1>[;
"<delimiters1>"]>','[<input_table>:]<expect_columnname2>=<input_columnname2[;
"<delimiters1_2>"]>', '...']
lists the acceptable AsterFunction name and expected column names for statistical and network graphs.
Table A - 58: Function and Column Names
Field
AsterFunction Name
Expected Column Names for
Statistical Family
Series Clause Used for Statistical
Family
Column Mapped-To Options in
AnnotateTo Argument Clause for
Statistics Family
Joining Annotation Table and
Input Table
Description custom x i
, y i
, where i = 1, ... up to 20 as the maximum.
ex., x
1
, y
1
, x
2
, y
2
, x
3
, y
3
ColumnNameAsSeries
OR
ColumnDataAsSeries
<x i
, y i
>: column names mapping to the expected column “x
ColumnMap argument clause i
” and "y i
" in
<x i
, y i
> in the input table and columns specified in
JoinAnnotationTableByColumns representing <x i
, y i
> in the annotation table
AppCenter User Guide 283
Customization for Visualization
Table A - 58: Function and Column Names (continued)
Field
Expected Column Names for
Network Family
Series Clause Used for Network
Family
Column Mapped-To Options in
AnnotateTo Argument Clause for
Network Family
Joining Annotation Table and
Input Table
Description
Node table (required) -- id, label, numericValue i
, where i = 1, ... up to 20 as the maximum.
id: numeric type, but the SQL type can only be bigint, bigserial, integer, serial, smallint label: varchar numericValue
1
, ..., numericValue
20
: any numeric type
Edge table (optional): left_node_id, right_node_id, label, numericValue
1 left_node_id: numeric type, it refers to id in node table right_node_id: numeric type, it refers to id in node table label: varchar numericValue
1
, ..., numericValue
20
: any numeric type
ColumnNameAsSeries
OR
ColumnDataAsSeries
<id>: column names mapping to the expected column "id" argument clause (for
Node table)
<id> in the input table and the column name, specified in
JoinAnnotationTableByColumns, representing the <id> in the annotation table
Table A - 59: Expected Column Names
Expected Column Names for
Wordcloud Family input table (required) -- label label: varchar
numericValue
1
, ...,
numericValue
20
numeric type
: any
Series Clause Used for
Wordcloud Family
ColumnNameAsSeries
OR
ColumnDataAsSeries
Column Mapped-To Options in AnnotateTo Argument
Clause for Wordcloud Family
label: column-name mapping to the expected column “label” argument clause
Joining Annotation and
Input Tables
label: in the input table and the column name, specified in
JoinAnnotationTableByCol
umns, representing the
label in the annotation table.
For statistical graph, AsterFunction takes 'custom' as the argument; ColumnMap takes variable length of x i and y i as the argument, where i must be incrementally counted up from 1 to the max 20. The subscript i implies series, which makes x
1 and y
1 one kind of series and x another kind of series. Use ColumnNameAsSeries to define series names. Only two
2 and y
2 dimensions, x and y, are currently supported; in future releases, z dimension will be supported.
284 AppCenter User Guide
Customization for Visualization
For network graph, the AsterFunction takes 'custom' and one or more tables as the input.
The column mapping to expected columns might not be one-to-one; it might be one-tomany. To generate statistical graph based on
Table A - 60 , clicktime actually maps to both x1
and x2; session_count maps to y1, and session_duration maps to y2. The syntax is defined as follows:
ColumnMap('x1=clicktime', 'y1=session_count', 'x2=clicktime', 'y2=session_duration')
Table A - 60: Input Table clicktime
120000 session_count session_duration
0 0
110000
130000
140000
1
1
2
98
20
40
VizType and VizOptions
Syntax
VizType('<type>')
VizOptions('<option1>=<value1>' [, '<option2>=<value2>', '...')]]
lists the supported VizType and optional key value pairs.
Table A - 61: Supported Visualization Types and Optional Key Value Pairs
Viz Type
chord sigma
Key aggregation aggregation
Value unordered (default) ordered unordered / ordered (default: ordered)
bar line pie
coordinateaxes coordinateaxes aggregation coordinateaxes aggregation
wordcloud
aggregation
<TITLE>, <UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> [ ; <TITLE>,
<UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> ] unordered / ordered (default: unordered)
<TITLE>, <UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> [ ; <TITLE>,
<UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> ] unordered / ordered (default: unordered
<TITLE>, <UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> [ ; <TITLE>,
<UNIT>, <CATEGORICAL | NUMERIC | DATETIME | ELAPSEDTIME> ] unordered / ordered (default: unordered) unordered (default)
AppCenter User Guide 285
Customization for Visualization
Coordinate Axes
If the expected columns for statistical graph have x
1
, y
1
, x
2
, y
2
, ... x n
, y n
, etc., it has only two dimensions, x and y, that requires two coordinate axes. The first coordinate axis is matched with x i
, and the second is matched with y i
. For any i, each x i and each y i has the same coordinate axis type.
has the same coordinate axis type,
lists the acceptable combinations of coordinate axis types.
Table A - 62: Coordinate Axis Types
2nd Coordinate Axes
CATEGORICAL NUMERIC DATETIME ELAPSEDTIME
1st Coordinate
Axis
CATEGORICAL X X X X
NUMERIC
DATETIME
X
X
X
X
X
X
X
X
ELAPSEDTIME X X X X
Coordinate Axes Type
categorical numeric
When coordinate axis is defined, the axis mapping to the SQL type of the column must be valid. The following table lists the accepted SQL types corresponding to each coordinate axis type.
lists the axes types and acceptable SQL types.
Table A - 63: Acceptable Combinations of Coordinate Axis Types
Acceptable SQL Data Types varchar, bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint, character (n), text, interval, ip4, ip4range, date, time, timestamp bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint
datetime elapsedtime
time [(p)] [without time zone], time [(p)] with time zone, timestamp [(p)] [without time zone], timestamp
[(p)] with time zone, date, bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint bigint, bigserial, integer, double precision, numeric [(p, s)], real, serial, smallint
286 AppCenter User Guide
Customization for Visualization
Aggregation Behavior for Statistics Family
shows the aggregation behavior based on the combination of coordinate axes, when the visualization type is line, bar, or pie. There are two actions, A and B.
A: Aggregate rows with the same (x i
, y i
) horizontally and then vertically, count the duplicates, and assign the total count to y coordinate and numericalValue field in JSON output.
B: Aggregate rows with the same (x i
) horizontally and then vertically, sum up the y i assign the total sum to y coordinate and numericalValue field in JSON output.
value, and
Table A - 64: Input Table
2nd Coordinate Axes
CATEGORICAL NUMERIC DATETIME ELAPSEDTIME
1st Coordinate
Axis
CATEGORICAL A B A B
NUMERIC
DATETIME
B
A
A
A
A
A
A
A
ELAPSEDTIME B A A A
For more information, see
Aggregation Behavior for Network Family
It aggregates rows horizontally and then vertically according to the id column, and then sums up the numeric values.
Aggregation Behavior for Wordcloud Family
It aggregates rows horizontally and then vertically according to the label column, and then sums up the numeric values.
Visualizer Syntax Examples
Sessionize Example
In
Table A - 65 , clicktime represents x
1 sessions_duration represents y
2 and x
2
; session_count represents y
1
, and
. To generate statistical graph bar with two series ,"session count" and "session duration," the Visualizer argument clauses can be defined as shown here: select * from Visualizer (
ON clicks as input PARTITION BY 1
AsterFunction('custom')
ColumnMap('x1=clicktime', 'y1=session_count', 'x2=clicktime',
'y2=session_duration')
VizType('bar') VizOptions('coordinateaxes=clicktime, "", numeric; duration, "", numeric') ColumnNameAsSeries('session count', 'session duration') Title('sessionize')
);
AppCenter User Guide 287
Customization for Visualization
Various Visualizations with the Same Multi-Input Tables
Table A - 65: Input Table clicktime
120000 session_count
0 session_duration
0
110000
130000
140000
1
1
2
98
20
40
2
3
Based on
and
, multiple visualization graphs can be rendered.
Table A - 66: Input (Node) Table id
1 store
Store A phone1
325 phone2
230
Store B
Store C
310
360
270
250
288 AppCenter User Guide
Customization for Visualization
Table A - 67: Input (Edge) Table store 1 store 2 label
1 2 Store A to Store B
1
2
3
3
Store A to C
Store B to Store C phone1_score
0.8
0.9
0.7
Syntax for Argument Clauses.
Table A - 68: Syntax and Visualizations
Syntax for Argument Clauses
ColumnMap(‘label=store’,
‘numericValue1=phone1’,
‘numericValue2=phone2’)
ColumnNameAsSeries(‘phone 1 sales, Jan’, ‘phone
2 sales, Jan’)
AsterFunction(‘custom’)
VizType(‘wordcloud’)
Visualization
Type wordcloud
Visualization Example phone2_score
0.6
0.7
0.65
AppCenter User Guide 289
Customization for Visualization
Table A - 68: Syntax and Visualizations (continued)
Syntax for Argument Clauses
ColumnMap(‘input1: label=store',
'input1:numericValue1=phone1',
'input1:numericValue2=phone2’, ‘input2: left_node_id=Store1',
'input2:right_node_id=Store2',
'input2:numericValue1=phone1_score',
'input2:numericValue2=phone2_score')
ColumnNameAsSeries(‘Phone 1 sales, Jan’, ‘phone
2 sales, Jan’)
AsterFunction(‘custom’)
VizType(‘sigma’)
Visualization
Type sigma
Visualization Example
ColumnMap(‘x1=store’, 'x2=store', ‘y1=phone1’,
‘y2=phone2’)
ColumnNameAsSeries(‘Phone 1 sales, Jan’, ‘phone
2 sales, Jan’)
AsterFunction(‘custom’)
VizType(‘line)
VizOptions(‘coordinateaxes=”Stores”, “”, categorical; “Sales”, “”, numeric’) line
290 AppCenter User Guide
Table A - 68: Syntax and Visualizations (continued)
Syntax for Argument Clauses
ColumnMap(‘input2: x1=label', 'input2:x2=label',
'input2:y1=Phone1_score',
'input2:y2=Phone2_score')
ColumnNameAsSeries(‘Phone 1 sales, Jan’, ‘Phone
2 sales, Jan’)
AsterFunction(‘custom’)
VizType(‘line)
VizOptions(‘coordinateaxes=”Stores”, “”, categorical; “Affinity”, “”, numeric’)
Visualization
Type line
Visualization Example
Customization for Visualization
AppCenter User Guide 291
Visualizer Examples
Visualizer Examples
•
•
•
•
Npath Example 2 (Annotating to npath items)
•
Npath Example 3 (Annotating to affinity items in nPath)
•
•
•
Cfilter Example 1
Example Input
Table A - 69: Input table
...
...
...
col1_item1 col1_item2 cntb cnt1 cnt2 score milk milk milk flour butter eggs
2
3
4
5
5
5
5
5
7
0.16
0.36
...
...
...
...
...
...
...
...
...
...
...
...
...
...
0.45714
285714
2857
...
...
...
...
support
0.25
0.375
0.5
...
...
...
0.4
0.6
0.8
confidence lift
0.64
0.96
0.9142857
14285714
z_score
-1.56669890360128
-0.522232967867094
0.522232967867094
...
...
...
...
...
...
Example SQL-MR (single input with viztype bar)
select * from Visualizer (
ON cfilter PARTITION BY 1 asterfunction('cfilter') vizoptions('coordinateaxes=affinity,, categorical; probability,, numeric') viztype('bar') title('test')
);
292 AppCenter User Guide
AppCenter User Guide
Example Output
Table A - 70: Output Table id
0 title test json
...
Example Formatted JSON String from the Column “json”
{
"axes":[
{
"axisType":"Categorical",
"title":"affinity",
"unit":"",
"axisData":[
"milk flour",
"milk butter",
"milk eggs"
]
},
{
"axisType":"Numeric",
"title":"probability",
"unit":""
}
],
"series":{
"Series 1":{
"points":[
{
"coordinates":[
0.0,
0.14411764705882352
],
"numericValue":0.14411764705882352
},
{
"coordinates":[
1.0,
0.14411764705882352
],
"numericValue":0.14411764705882352
},
{
"coordinates":[
2.0,
0.13445378151260504
],
"numericValue":0.13445378151260504
}
]
}
},
"family":"statistics",
"vizType":"bar",
"version":"1.0",
"title":"test"
}
Visualizer Examples
293
Visualizer Examples
294
Cfilter Example 2
Example Input
Table A - 71: Input Table storeid
1 column1_item1 milk
2 milk
2
...
milk
...
col1_item2 butter flour eggs
...
cntb
3
2
3
...
cnt1
4
4
4
...
cnt2
3
2
3
...
Example SQL-MR function: sigma with data-driven annotations on edges
select * from Visualizer (
ON cfilter PARTITION BY 1 asterfunction('cfilter') annotatefrom('storeid') annotatefromfilter('2') annotateto('edge:col1_item1, col1_item2=storeid') viztype(sigma) title('Cfilter - test case 20')
);
Example Formatted JSON output
{
"series":{
"Series 1":{
"nodes":[
{
"id":1,
"label":"milk",
"numericValue":4.0,
"payload":{
}
},
{
"id":3,
"label":"butter",
"numericValue":3.0,
"payload":{
}
},
{
"id":7,
"label":"milk",
"numericValue":4.0,
"payload":{
}
},
{
"id":9,
"label":"flour",
"numericValue":2.0,
"payload":{
}
},
{
"id":13,
"label":"milk",
"numericValue":4.0,
"payload":{
AppCenter User Guide
AppCenter User Guide
Visualizer Examples
}
},
{
"id":15,
"label":"eggs",
"numericValue":3.0,
"payload":{
}
}
],
"edges":[
{
"id":27,
"label":"milk butter",
"fromNodeId":1,
"toNodeId":3,
"numericValue":0.75,
"payload":{
}
},
{
"id":28,
"label":"milk flour",
"fromNodeId":7,
"toNodeId":9,
"numericValue":0.5,
"payload":{
"storeid":{
"2":1.0
}
}
},
{
"id":29,
"label":"milk eggs",
"fromNodeId":13,
"toNodeId":15,
"numericValue":0.75,
"payload":{
"storeid":{
"2":1.0
}
}
}
]
}
},
"family":"Network",
"subfamily":"Multidirectional",
"vizType":"sigma",
"version":"1.0",
"title":"Cfilter - test case 20",
"statistics":{
"nodes":6,
"edges":3
},
"userData":{
}
}
Example SQL-MR function: sigma with data-driven annotations on node
select * from Visualizer (
ON cfilter PARTITION BY 1 asterfunction('cfilter') annotatefrom('storeid') annotatefromfilter('2') annotateto('node:col1_item2=storeid') viztype(sigma) title('test')
);
Example Formatted JSON output
{
"series":{
"Series 1":{
"nodes":[
295
Visualizer Examples
{
"id":1,
"label":"milk",
"numericValue":4.0,
"payload":{
}
},
{
"id":3,
"label":"butter",
"numericValue":3.0,
"payload":{
}
},
{
"id":7,
"label":"milk",
"numericValue":4.0,
"payload":{
}
},
{
"id":9,
"label":"flour",
"numericValue":2.0,
"payload":{
"storeid":{
"2":1.0
}
}
},
{
"id":13,
"label":"milk",
"numericValue":4.0,
"payload":{
}
},
{
"id":15,
"label":"eggs",
"numericValue":3.0,
"payload":{
"storeid":{
"2":1.0
}
}
}
],
"edges":[
{
"id":27,
"label":"milk butter",
"fromNodeId":1,
"toNodeId":3,
"numericValue":0.75,
"payload":{
}
},
{
"id":28,
"label":"milk flour",
"fromNodeId":7,
"toNodeId":9,
"numericValue":0.5,
"payload":{
}
},
{
"id":29,
"label":"milk eggs",
"fromNodeId":13,
"toNodeId":15,
"numericValue":0.75,
"payload":{
}
}
]
}
},
"family":"Network",
296 AppCenter User Guide
Visualizer Examples
"subfamily":"Multidirectional",
"vizType":"sigma",
"version":"1.0",
"title":"test",
"statistics":{
"nodes":6,
"edges":3
},
"userData":{
}
}
Npath Example 1
Input Table
Table A - 72: Input Table (npath_output) hit_time_gmt ip
2012-03-01
23:04:11
192.168.0.
256 visid_low
27383165
54 visid_high
12179707
71 visit_ num
1
2012-03-01
17:51:27
192.168.1.
256
69175308
24015025
988
28575394
33292760
267
10
2012-03-02
17:01:21
192.168.2.
256
20596416
73
27984550
50
11 geo_region geo_country cnt path ga usa 1 [Cart : Billing and
Shipping, Cart :
Billing and
Shipping,Cart] mi chn 1 tx usa 1
[Cart : Billing and
Shipping, Cart :
Billing and
Shipping,
International]
[Cart : Billing and
Shipping, SEARCH ,
Home Page] id
6537404166538268112
Example SQL-MR function (multiple inputs)
select * from Visualizer (
ON npath_output PARTITION BY geo_country
ON (select geo_country, max(visit_num) from npath_output group by geo_country) as aggregates partition by geo_country
asterfunction('npath')
viztype('sankey')
title('test')
accumulate('geo_country')
);
Example Output
Table A - 73: Output Table title test time_stamp
2012-03-02 08:21:47 viz_type sankey max (visit_num)
11 geo-country usa json
...
5127835364231416269 test 2012-03-01 20:16:36 sankey 10 chn ...
AppCenter User Guide 297
Visualizer Examples
Npath Example 2 (Annotating to npath items)
Example Input
Table A - 74: Annotation Table (npath_annotation) item
A attribute shopping category
B shopping cart
C credit card info
Example SQL-MR function (multiple inputs)
select title, json from Visualizer (
on npath_data4 as input1 partition by 1 order by id
on npath_annotation as annotation DIMENSION
asterfunction('npath')
JoinAnnotationTableByColumns('item')
AnnotateFrom('attribute')
AnnotateTo('node=attribute')
viztype('tree')
title('npath - tree')
);
Example Formatted JSON Output
{
"series":{
"Series 1":{
"nodes":[
{
"id":1,
"label":"A",
"numericValue":2.0,
"payload":{
"attribute":{
"shopping category":2.0
}
}
},
{
"id":3,
"label":"B",
"numericValue":2.0,
"payload":{
"attribute":{
"shopping cart":2.0
}
}
},
{
"id":7,
"label":"C",
"numericValue":1.0,
"payload":{
"attribute":{
"credit card info":1.0
}
}
},
{
"id":11,
"label":"D",
"numericValue":1.0,
"payload":{
}
},
{
"id":15,
298 AppCenter User Guide
AppCenter User Guide
"label":"E",
"numericValue":1.0,
"payload":{
}
},
{
"id":17,
"label":"B",
"numericValue":1.0,
"payload":{
"attribute":{
"shopping cart":1.0
}
}
},
{
"id":21,
"label":"C",
"numericValue":1.0,
"payload":{
"attribute":{
"credit card info":1.0
}
}
}
],
"edges":[
{
"id":39,
"label":"A B",
"fromNodeId":1,
"toNodeId":3,
"numericValue":2.0,
"payload":{
}
},
{
"id":40,
"label":"B C",
"fromNodeId":3,
"toNodeId":7,
"numericValue":1.0,
"payload":{
}
},
{
"id":41,
"label":"B D",
"fromNodeId":3,
"toNodeId":11,
"numericValue":1.0,
"payload":{
}
},
{
"id":42,
"label":"E B",
"fromNodeId":15,
"toNodeId":17,
"numericValue":1.0,
"payload":{
}
},
{
"id":43,
"label":"B C",
"fromNodeId":17,
"toNodeId":21,
"numericValue":1.0,
"payload":{
}
}
]
}
},
"family":"Network",
"subfamily":"Unidirectional",
"vizType":"tree",
"version":"1.0",
"title":"npath - tree",
"statistics":{
Visualizer Examples
299
Visualizer Examples
300
"nodes":7,
"edges":5
},
"userData":{
}
}
Npath Example 3 (Annotating to affinity items in nPath)
Example Input
Table A - 75: Annotation Table (npath_affinity_annotation) item1
A item2
B attribute most popular
B D popular
Example SQL-MR function (multiple inputs):
select title, json from Visualizer (
on npath_data4 as input1 partition by 1 order by id
on npath_affinity_annotation as annotation DIMENSION
asterfunction('npath')
JoinAnnotationTableByColumns('item1', 'item2')
AnnotateFrom('attribute')
AnnotateTo('path=attribute')
viztype('tree')
title('npath - tree')
);
Example Formatted JSON Output:
{
"series":{
"Series 1":{
"nodes":[
{
"id":1,
"label":"A",
"numericValue":2.0,
"payload":{
}
},
{
"id":3,
"label":"B",
"numericValue":2.0,
"payload":{
}
},
{
"id":7,
"label":"C",
"numericValue":1.0,
"payload":{
}
},
{
"id":11,
"label":"D",
"numericValue":1.0,
"payload":{
}
},
{
"id":15,
"label":"E",
"numericValue":1.0,
"payload":{
}
},
AppCenter User Guide
AppCenter User Guide
{
"id":17,
"label":"B",
"numericValue":1.0,
"payload":{
}
},
{
"id":21,
"label":"C",
"numericValue":1.0,
"payload":{
}
}
],
"edges":[
{
"id":39,
"label":"A B",
"fromNodeId":1,
"toNodeId":3,
"numericValue":2.0,
"payload":{
"attribute":{
"most popular":2.0
}
}
},
{
"id":40,
"label":"B C",
"fromNodeId":3,
"toNodeId":7,
"numericValue":1.0,
"payload":{
}
},
{
"id":41,
"label":"B D",
"fromNodeId":3,
"toNodeId":11,
"numericValue":1.0,
"payload":{
"attribute":{
"popular":1.0
}
}
},
{
"id":42,
"label":"E B",
"fromNodeId":15,
"toNodeId":17,
"numericValue":1.0,
"payload":{
}
},
{
"id":43,
"label":"B C",
"fromNodeId":17,
"toNodeId":21,
"numericValue":1.0,
"payload":{
}
}
]
}
},
"family":"Network",
"subfamily":"Unidirectional",
"vizType":"tree",
"version":"1.0",
"title":"npath - tree",
"statistics":{
"nodes":7,
"edges":5
},
"userData":{
}
Visualizer Examples
301
Visualizer Examples
302
3
4
5
6
7
}
FindNamedEntity Example
Example Input
Table A - 76: Input Table (ner) id
1
ENTITY
John Smith
TYPE person
2 John Smith person
U.S.
Italy
Scotland
Location location location [email protected]
John Smith manager
The column "TYPE" is stored as the payload of the corresponding entity.
Example SQL-MR Function
select * from Visualizer (
on ner partition by 1
asterfunction('findnamedentity')
viztype('wordcloud')
title('ner')
);
Example Output:
Table A - 77: Output Table id
8444249301319680 title ner json
......
Example Formatted JSON String from the Column “json”
{
"series": {
"Series 1": {
"words": [
{
"id": 33776997205278720,
"label": "John Smith",
"numericValue": 3.0,
"payload":{
"TYPE":{
"person":2.0,
"manager":1.0
}
}
AppCenter User Guide
Visualizer Examples
1
1
1 partition_id
1
},
{
"id": 135107988821114880,
"label": "U. S.",
"numericValue": 1.0,
"payload": {
"TYPE":{
"location":1.0
}
}
},
{
"id": 540431955284459520,
"label": "Italy",
"numericValue": 1.0,
"payload": {
"TYPE":{
"location":1.0
}
}
},
{
"id": 2161727821137838080,
"label": "[email protected]",
"numericV alue": 1.0,
"payload": {
"TYPE":{
"email":1.0
}
}
},
{
"id": 8646911284551352320,
"label": "Scotland",
"numericValue": 1.0,
"payload": {
"TYPE":{
"location":1.0
}
}
}
]
}
},
"family":"WordCloud",
"vizType":"wordcloud",
"version": "1.0",
"title": "ner"
}
Sessionize Example
Example Input
is output of the sessionize as input:
Table A - 78: Input Table (sessionize_output) clicktime userid productname pagetype referrer
1110000 333 home www.company1.com
product price
1120000
1160000
1200000
333
333
333 transmitter speakers checkout www.company1.com
200.2
checkout home www.company2.com
340
0
0
0 sessionid rapidfire
0 f f f f
AppCenter User Guide 303
1
1
1
1
1
1
1
2
1
1 partition_id
1
1
Visualizer Examples
Table A - 78: Input Table (sessionize_output) (continued) clicktime userid productname pagetype referrer
1203000 67403 home www.company2.com
product price
1300000 67403 home www.company2.com
1301000
1302000
1340000
1450000
1450000
1450200
67403
67403
67403 phone
67403 speakers
67403 speakers
80000
1450600
1450800
1452000
1352000
80000 speakers
80000 transmitter
80000 phone
80000 phone home home checkout 650 checkout checkout home www.company3.com
750
750 checkout checkout checkout checkout
350
450
650
650
2
2
2
1
1
1
2
0
2
2 sessionid rapidfire
0 f
1 f t f t f f f f f t f
The column "TYPE" is stored as the payload of the corresponding entity.
304 AppCenter User Guide
AppCenter User Guide
Visualizer Examples
Example SQL-MR Function
select * from Visualizer ( on (select clicktime,count(1) as sessioncount from npath( on session_output partition by partition_id,sessionid order by clicktime mode(nonoverlapping) pattern('A+')
SYMBOLS(TRUE as A)
RESULT(FIRST_NOTNULL(clicktime/100000*100000 of A) as clicktime)
)group by clicktime
) partition by 1 order by clicktime asterfunction('sessionize') columnmap('x=clicktime','y=sessioncount') viztype('bar') vizoptions('coordinateaxes=clicktime,,
NUMERIC;"session count",,NUMERIC') title('session count graph')
);
Example Output
Table A - 79: Output Table id title
8444249301319680 session count graph json
......
Example Formatted JSON String from the Column “json”
{
"axes": [
{
"axisType": "Numeric",
"title": "clicktime",
"unit": ""
},
{
"axisType": "Numeric",
"title": "session count",
"unit": ""
}
],
"series": {
"Series 1": {
"points": [
{
"coordinates": [
1100000.0,
1.0
],
"numericValue": 1.0
},
{
"coordinates": [
1300000.0,
2.0
],
"numericValue": 2.0
},
{
"coordinates": [
1400000.0,
1.0
],
"numericValue": 1.0
}
]
}
},
"family": "statistics",
"vizType": "bar",
305
Visualizer Examples
306
"version": "1.0",
"title": "session count graph"
}
ColumnDataAs Series Example
First, create an intermediate table with clicktime,uv and pv.
Example SQL-MR Function
select clicktime,count(1) as cnt,'uv' as series from npath( on session_output partition by partition_id,sessionid order by clicktime mode(nonoverlapping) pattern('A+')
SYMBOLS(TRUE as A)
RESULT(FIRST_NOTNULL(clicktime/100000*100000 of A) as clicktime)
)group by clicktime union all select clicktime,sum(c) as cnt,'pv' as series from npath
( on session_output partition by partition_id,clicktime mode(nonoverlapping) pattern('A+')
SYMBOLS(TRUE as A)
RESULT(FIRST_NOTNULL(clicktime/100000*100000 of A) as clicktime, count(clicktime of A) as c)
)group by clicktime order by clicktime;
Intermediate Table Output
Table A - 80: Intermediate Table clicktime
1100000 cnt
1 series uv
1100000 3 pv
1200000
1300000
1300000
1400000
1400000
2
2
5
6
1 pv uv pv pv uv
The Visualizer is called as shown in the following example: select * from Visualizer ( on session_itermediate partition by 1 order by clicktime asterfunction('sessionize') columnmap('x=clicktime','y=cnt') viztype('line') vizoptions('coordinateaxes=datetime,,datetime;
AppCenter User Guide
AppCenter User Guide
);
"pv uv count",,NUMERIC') columndataasseries('series:"uv line"=uv,"pv line"=pv') title('uv pv graph')
Example output
Table A - 81: Output Table id title json
8444249301319680 uv pv graph ...
Example Formatted JSON String from the Column “json”
{
"axes": [
{
"axisType": "Datetime",
"title": "datetime",
"unit": ""
},
{
"axisType": "Numeric",
"title": "count",
"unit": ""
}
],
"series": {
"uv line": {
"points": [
{
"coordinates": [
1100000.0,
1.0
],
"numericValue": 1.0
},
{
"coordinates": [
1300000.0,
2.0
],
"numericValue": 2.0
},
{
"coordinates": [
1400000.0,
1.0
],
"numericValue": 1.0
}
]
},
"pv line": {
"points": [
{
"coordinates": [
1100000.0,
3.0
],
"numericValue": 3.0
},
{
"coordinates": [
1200000.0,
2.0
],
"numericValue": 2.0
},
{
"coordinates": [
1300000.0,
5.0
],
"numericValue": 5.0
Visualizer Examples
307
Visualizer Examples
},
{
"coordinates": [
1400000.0,
6.0
],
"numericValue": 6.0
}
]
}
},
"family": "Statistics",
"vizType": "line",
"version": "1.0",
"title": "uv pv graph"
}
ColumnNameAsSeries Example
Example SQL-MR Function
select * from Visualizer(
on(
select productname, count(1) as productpv,
from sessionize_output where productname is not null
) partition by 1 order by productname
asterfunction('custom')
columnmap('x1=productname','y1=productpv','x2=productname',
'y2=productsession')
viztype('bar')
count",,NUMERIC')
columnnameasseries('"product pv"','"product session"')
title('product pv session graph')
);
Example Intermediate Aggregation Result
The intermediate result of the aggregation sub clause should look like the example in
Table A - 82: Intermediate Results productname speakers productpv
4 productsession
2 phone 3 3
MP3 player transmitter
1
1
1
1
308 AppCenter User Guide
AppCenter User Guide
Visualizer Examples
Example Final Aggregation Result
The final result of the aggregation sub clause would be like the example in
Table A - 83: Final Result id title
8444249301319680 product pv session graph json
...
Example Formatted JSON String from the Column “json”
{
{
"axes": [
{
"axisType": "Categorical",
"title": "product",
"unit": "",
"axisData":["speakers","phone","mp3player","transmitter"]
},
{
"axisType": "Numeric",
"title": "pv session count",
"unit": ""
}
],
"series": {
"product pv": {
"points": [
{
"coordinates": [
0,
4.0
],
"numericValue": 4.0
},
{
"coordinates": [
1,
3.0
],
"numericValue": 3.0
},
{
"coordinates": [
2,
1.0
],
"numericValue": 1.0
},
{
"coordinates": [
3,
1.0
],
"numericValue": 1.0
}
]
},
"product session": {
"points": [
{
"coordinates": [
0,
2.0
],
"numericValue": 2.0
},
{
"coordinates": [
1,
3.0
],
"numericValue": 3.0
},
309
Visualizer Examples
{
"coordinates": [
2,
1.0
],
"numericValue": 1.0
},
{
"coordinates": [
3,
1.0
],
"numericValue": 1.0
}
]
}
},
"family": "statistics",
"vizType": "bar",
"version": "1.0",
"title": "product pv session graph"
}
Custom Aggregation
The section
Customization for Visualization
explains that when AsterFunction argument is specified as "custom", it can have a variety of aggregations performed horizontally and vertically across the input table. In this section, we demonstrate examples using the following input tables:
Table A - 84: input1 storeid store
1 Store A phone1
325 phone2
230 location
NY recorddate
2014-1-31
2
3
3
Store B
Store C
Store C
310
360
230
270
250
310
NY
CA
CA
2014-1-30
2014-1-30
2014-1-30
2
2
2
1
Table A - 85: input2 store
1 store2
2
1
3
3
3 label
Store A to Store B
Store B to Store A
Store A to Store C
Store B to Store C
Store B to Store C phone1_score phone2_score
0.8
0.6
0.3
0.9
0.2
0.7
0.7
0.6
0.65
0.5
310 AppCenter User Guide
AppCenter User Guide
Visualizer Examples
Categorical-Categorical Case
The column with the same (store, location) pair will be accumulated and count.
Example SQL-MR function
select * from Visualizer
( on input1 partition by 1
ColumnMap('x1=store', 'y1=location')
);
VizOptions('coordinateaxes=Stores, , categorical; Location, , categorical')
AsterFunction('custom')
VizType('bar')
Formatted JSON String from the Column “json”
{
"axes": [
{
"axisType": "Categorical",
"title": "Location",
"unit": "",
"axisData": [
"Store B",
"Store C",
]
"Store A"
},
{
"axisType": "Categorical",
"title": "Sales",
"unit": "",
"axisData": [
"NY",
"CA"
]
}
],
"series": {
"Series 1": {
"points": [
{
"coordinates": [
0,
0
],
"numericValue": 1
},
{
"coordinates": [
1,
1
],
"numericValue": 2
},
{
"coordinates": [
2,
"numericValue": 1
}
]
0
],
}
},
"family": "Statistics",
"vizType": "bar",
311
Visualizer Examples
312
}
"version": "1.0",
"statistics": {
"points": 3
},
"userData": {}
Categorical-Numerical Case 1
The numeric value will be accumulated according to label.
Example SQL-MR function
select * from Visualizer
( on input1 partition by 1
ColumnMap('x1=store', 'y1=phone1','x2=store','y2=phone2')
);
ColumnNameAsSeries('Phone 1 sales, Jan', 'Phone 2 sales, Jan')
VizOptions('coordinateaxes=Stores, , categorical; Sales, , Numeric')
AsterFunction('custom')
VizType('bar')
Formatted JSON String from the Column “json”
{
"axes": [
{
"axisType": "Categorical",
"title": "Stores",
"unit": "",
"axisData": [
"Store A",
"Store C",
"Store B"
]
}
],
"series": {
"Phone1 sales, Jan": {
"points": [
{
"coordinates": [
0,
325
],
"numericValue": 325
},
{
"coordinates": [
1,
590
],
"numericValue": 590
},
{
"coordinates": [
2,
310
],
"numericValue": 310
}
]
},
"Phone2 sales, Jan": {
"points": [
AppCenter User Guide
AppCenter User Guide
Visualizer Examples
}
{
"coordinates": [
1,
560
],
"numericValue": 560
},
{
"coordinates": [
2,
270
],
"numericValue": 270
]
}
},
"family": "Statistics",
"vizType": "bar",
"version": "1.0",
"statistics": {
"points": 6
},
"userData": {}
Numerical-Categorical Case 1
If y is categorical, data will aggregate according to y.
Example SQL-MR function
select * from Visualizer
( on input1 partition by 1
ColumnMap('x1=phone1', 'y1=location','x2=phone2','y2=location')
ColumnNameAsSeries('Phone 1 sales, Jan', 'Phone 2 sales, Jan')
VizOptions('coordinateaxes=sales, , Numeric; location, , categorical')
);
AsterFunction('custom')
VizType('bar')
Formatted JSON String from the Column “json”
{
"axes": [
{
"axisType": "Numeric",
"title": "sales",
"unit": "",
},
{
"axisType": "Categorical",
"title": "location",
"unit": "",
}
],
"series": {
"Phone1 sales, Jan": {
"points": [
{
"coordinates": [
635,
0
],
"numericValue": 635
313
Visualizer Examples
314
}
},
{
"coordinates": [
590,
1
],
"numericValue": 590
}
]
}
},
"Phone2 sales, Jan": {
"points": [
{
"coordinates": [
500,
0
],
"numericValue": 500
},
{
"coordinates": [
500,
0
],
"numericValue": 500
},
{
"coordinates": [
560,
1
],
"numericValue": 560
}
]
}
},
"family": "Statistics",
"vizType": "bar",
"version": "1.0",
"statistics": {
"points": 4
},
"userData": {}
Numerical-Categorical Case 2
If series is not given, the aggregation works among different columns.
Example SQL-MR function
select * from Visualizer
( on input1 partition by 1
ColumnMap('x1=phone1', 'y1=hone2','x2=store','y2=phone2')
VizOptions('coordinateaxes=Stores, , categorical; Sales, , Numeric')
AsterFunction('custom')
);
VizType('bar')
Formatted JSON String from the Column “json”
{
"axes": [
{
"axisType": "Categorical",
AppCenter User Guide
AppCenter User Guide
Visualizer Examples
}
"title": "Stores",
"unit": "",
"axisData": [
"Store A",
"Store C",
"Store B"
]
},
{
"axisType": "Numeric",
"title": "Sales",
"unit": "",
}
],
"series": {
"Phone1 sales, Jan": {
"points": [
{
"coordinates": [
0,
555
],
"numericValue": 555
},
{
"coordinates": [
1,
1150
],
"numericValue": 1150
},
{
"coordinates": [
2,
580
],
"numericValue": 580
}
]
}
},
"family": "Statistics",
"vizType": "bar",
"version": "1.0",
"statistics": {
"points": 6
},
"userData": {}
Categorical-Datetime Case
The datetime value will not accumulate by value; rather, it accumulates by count.
Example SQL-MR function
select * from Visualizer
( on input1 partition by 1
ColumnMap('x1=store', 'y1=recorddate')
ColumnNameAsSeries('sales, Jan')
VizOptions('coordinateaxes=Stores, , categorical; recorddate, , datetime')
AsterFunction('custom')
VizType('bar')
);
315
Visualizer Examples
Formatted JSON String from the Column “json”
{
"axes": [
{
"axisType": "Categorical",
"title": "Stores",
"unit": "",
"axisData": [
"Store A",
"Store C",
"Store B"
]
},
{
"axisType": "DateTime",
"title": "recorddate",
"unit": "",
}
],
"series": {
"Series 1": {
"points": [
{
"coordinates": [
0,
1.39115522E12
],
"numericValue": 1
},
{
"coordinates": [
1,
1.39106884E12
],
"numericValue": 2
},
{
"coordinates": [
2,
1.35953279E12
],
"numericValue": 1
}
]
}
},
"family": "Statistics",
"vizType": "bar",
"version": "1.0",
"statistics": {
"points": 3
},
"userData": {}
}
316 AppCenter User Guide
AppCenter User Guide
Visualizer Examples
Node-Edge Aggregation
The node with the same id and edge with the same left or right id will aggregate.
Example SQL-MR function
select * from Visualizer
( on input1 partition by 1 on input2 partition by 1
ColumnMap('input1:id=storeid', 'input1: label=store',
'input1:numericValue1=phone1', 'input1:numericValue2=phone2',
'input2: left_node_id=Store1', 'input2:right_node_id=Store2',
'input2:numericValue1=phone1_score',
'input2:numericValue2=phone2_score')ColumnNameAsSeries('phone 1 sales, Jan', 'phone 2 sales,
);
Jan')AsterFunction('custom')VizType('sigma')
Formatted JSON String from the Column “json”
{
"series": {
"Phone 1 sales, Jan": {
"nodes": [
{
"id": 17,
"label": "Store A",
"numericValue": 325
},
{
"id": 21,
"label": "Store C",
"numericValue": 590
},
{
"id": 25,
"label": "Store B",
"numericValue": 310
}
],
"edges": [
{
"id": 52,
"label": "Store B to Store A",
"fromNodeId": 25,
"toNodeId": 17,
"numericValue": 0.3
},
{
"id": 54,
"label": "Store B to Store C",
"fromNodeId": 25,
"toNodeId": 21,
"numericValue": 1.3
},
{
"id": 56,
"label": "Store A to Store B",
"fromNodeId": 17,
"toNodeId": 25,
"numericValue": 0.8
},
{
"id": 58,
"label": "Store A to Store C",
"fromNodeId": 17,
"toNodeId": 21,
"numericValue": 0.9
317
Visualizer Examples
}
]
},
}
"Phone 1 sales, Jan": {
"nodes": [
{
"id": 19,
"label": "Store A",
"numericValue": 230
},
{
"id": 23,
"label": "Store C",
"numericValue": 560
},
{
"id": 27,
"label": "Store B",
"numericValue": 270
}
],
"edges": [
{
"id": 53,
"label": "Store B to Store A",
"fromNodeId": 27,
"toNodeId": 19,
"numericValue": 0.2
},
{
"id": 55,
"label": "Store B to Store C",
"fromNodeId": 27,
"toNodeId": 23,
"numericValue": 1.15
},
{
"id": 57,
"label": "Store A to Store B",
"fromNodeId": 19,
"toNodeId": 27,
"numericValue": 0.6
},
{
"id": 59,
"label": "Store A to Store C",
"fromNodeId": 19,
"toNodeId": 23,
"numericValue": 0.7
]
}
}
},
"family": "Network",
"subfamily": "Multidirectional",
"vizType": "sigma",
"version": "1.0",
"statistics": {
"nodes": 6,
"edges": 8
},
"userData": {}
318 AppCenter User Guide
AppCenter User Guide
Visualizer Examples
Node-Edge (Unordered)
If aggregation type is unordered, reverse edges (row 1 and row 2) will be aggregated to the same entry.
Example SQL-MR function
select * from Visualizer
( on input1 partition by 1 on input2 partition by 1
ColumnMap('input1:id=storeid', 'input1: label=store',
'input1:numericValue1=Phone1', 'input1:numericValue2=Phone2',
'input2: left_node_id=Store1', 'input2:right_node_id=Store2',
'input2:numericValue1=Phone1_score',
);
'input2:numericValue2=Phone2_score')
ColumnNameAsSeries('Phone 1 sales, Jan', 'Phone 2 sales, Jan')
AsterFunction('custom')VizType('sigma')
VizOptions('aggregation=unordered')
Formatted JSON String from the Column “json”
{
"series": {
"Phone 1 sales, Jan": {
"nodes": [
{
"id": 42,
"label": "Store A",
"numericValue": 325
},
{
"id": 17,
"label": "Store C",
"numericValue": 590
},
{
"id": 21,
"label": "Store B",
"numericValue": 310
}
],
"edges": [
{
"id": 42,
"label": "Store A to Store B",
"fromNodeId": 13,
"toNodeId": 21,
"numericValue": 1.1
},
{
"id": 44,
"label": "Store A to Store C",
"fromNodeId": 13,
"toNodeId": 17,
"numericValue": 0.9
},
{
"id": 46,
"label": "Store A to Store B",
"fromNodeId": 21,
"toNodeId": 17,
"numericValue": 1.3
]
}
},
"Phone 2 sales, Jan": {
319
Visualizer Examples
}
"nodes": [
{
"id": 15,
"label": "Store A",
"numericValue": 230
},
{
"id": 19,
"label": "Store C",
"numericValue": 560
},
{
"id": 23,
"label": "Store B",
"numericValue": 270
}
],
"edges": [
{
"id": 43,
"label": "Store A to Store B",
"fromNodeId": 15,
"toNodeId": 23,
"numericValue": 0.7
},
{
"id": 45,
"label": "Store A to Store C",
"fromNodeId": 15,
"toNodeId": 19,
"numericValue": 1.15
},
{
"id": 47,
"label": "Store B to Store C",
"fromNodeId": 23,
"toNodeId": 19,
"numericValue": 1.15
}
]
}
},
"family": "Network",
"subfamily": "Nodirectional",
"vizType": "sigma",
"version": "1.0",
"statistics": {
"nodes": 6,
"edges": 6
},
"userData": {}
320 AppCenter User Guide
AppCenter User Guide
Custom Wordcloud
Example SQL-MR function
select * from Visualizer
( on input1 partition by 1
ColumnMap('label=store')
);
AsterFunction('custom')
VizType('wordcloud')
Formatted JSON String from the Column “json”
{
"series": {
"Series 1": {
"nodes": [
{
"id": 1,
"label": "Store A",
"numericValue": 1
},
{
"id": 3,
"label": "Store C",
"numericValue": 2
},
{
"id": 5,
"label": "Store B",
"numericValue": 1
}
]
}
},
"family": "WordCloud",
"vizType": "wordcloud",
"version": "1.0",
"statistics": {
"nodes": 3,
"edges": 0
},
"userData": {}
}
Visualizer Examples
321
Visualizer Examples
Custom Wordcloud without aggregation=no
Using "aggregation=No" forces custom function not to aggregate among rows. The option also works for custom network and statistic graphs.
Example SQL-MR function
select * from Visualizer
( on input1 partition by 1
ColumnMap('label=store')
AsterFunction('custom')
VizOptions (‘aggregation=no’)
);
VizType('wordcloud')
Formatted JSON String from the Column “json”
{
"series": {
"Series 1": {
"nodes": [
{
"id": 1,
"label": "Store A",
"numericValue": 1
},
{
"id": 3,
"label": "Store C",
"numericValue": 1
},
{
"id": 5,
"label": "Store C",
"numericValue": 1
},
{
"id": 7,
"label": "Store B",
"numericValue": 1
}
]
}
},
"family": "WordCloud",
"vizType": "wordcloud",
"version": "1.0",
"statistics": {
"nodes": 4,
"edges": 0
},
"userData": {}
}
322 AppCenter User Guide
APPENDIX B
Open-Source Software
•
•
•
About this Appendix
This appendix lists the open-source software that was used in building AppCenter.
Software/Version/License List
antlr-2.7.7.jar Version: 2.7.7
License: BSD License 1.0
antlr4-runtime-4.2.jar Version: 4.2
License: BSD License 1.0
aopalliance-1.0.jar Version: 1
License: Public Domain 1.0
aspectjweaver-1.7.2.jar Version: 1.7.2
License: Eclipse Public License 1.0
batik-anim-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-awt-util-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-bridge-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-codec-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-css-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-dom-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-ext-1.6.jar Version: 1.6
License: Apache 2.0 WC3 Document and License WC3 Software and License
AppCenter User Guide 323
Software/Version/License List
batik-ext-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-gvt-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-js-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-parser-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-script-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-svg-dom-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-svggen-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-transcoder-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-util-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
batik-xml-1.7.jar Version: 1.7
License: Apache NOTICE Files 2.0 Apache License, 2.0
c3p0-0.9.5-pre8.jar Version: 0.9.5-pre8
License: Eclipse Public License 1.0
commons-beanutils-1.8.3.jar Version: 1.8.3
License: Apache License, 2.0
commons-collections-3.2.1.jar Version: 3.2.1
License: Apache License, 2.0
commons-compress-1.2.jar Version: 1.2
License: Apache License, 2.0
commons-configuration-1.9.jar Version: 1.9
License: Apache License, 2.0
commons-dbcp-1.4.jar Version: 1.4
License: Apache License, 2.0
commons-fileupload-1.2.jar Version: 1.2
License: Apache License, 2.0
commons-io-1.4.jar Version: 1.4
License: Apache License, 2.0
commons-lang-2.5.jar Version: 2.5
License: Apache License, 2.0
commons-logging-1.1.1.jar Version: 1.1.1
License: Apache License, 2.0
commons-pool-1.5.4.jar Version: 1.5.4
License: Apache License, 2.0
324 AppCenter User Guide
AppCenter User Guide
dom4j-1.6.1.jar Version: 1.6.1
License: BSD License 2005
ehcache-core-2.6.6.jar Version: 2.6.6
License: Apache License, 2.0
gephi-toolkit-0.8.7.jar Version: 0.8.7
License: MIT-type new
gson-2.2.4.jar Version: 2.2.4
License: Apache License, 2.0
hibernate-core-4.1.11.Final.jar Version: 4.1.11
License: BSD-type
hibernate-ehcache-4.1.11.Final.jar Version: 4.1.11
License: BSD-type
hibernate-entitymanager-4.1.11.Final.jar Version: 4.1.11
License: BSD-type
hibernate-jpa-2.0-api-1.0.1.Final.jar Version: 1.0.1
License: Eclipse Distribution License - v 1.0
jackson-annotations-2.3.0.jar Version: 2.3.0
License: Apache License 2.0
jackson-core-2.3.2.jar Version: 2.3.2
License: Apache License 2.0
jackson-databind-2.3.2.jar Version: 2.3.2
License: Apache License 2.0
jackson-dataformat-xml-2.3.2.jar Version: 2.3.2
License: Apache License 2.0
jackson-datatype-hibernate4-2.2.3.jar Version: 2.2.3
License: Apache License 2.0
javassist-3.15.0-GA.jar Version: 3.15.0-GA
License: Apache License, 2.0
jboss-logging-3.1.0.GA.jar Version: 3.1.0.GA
License: GNU Lesser General Public License, version 2.1
jboss-transaction-api_1.1_spec-1.0.0.Final.jar Version: 1.0.0
License: Common Development and Distribution License 1.0
joda-time-2.3.jar Version: 2.3
License: Apache NOTICE Files 2.0
Apache License Version 2.0
jstl-1.2.jar Version: 1.2
License: Common Development and Distribution License (CDDL) 1.0
log4j-1.2.16.jar Version: 1.2.16
License: Apache License, 2.0
mchange-commons-java-0.2.7.jar Version: 0.2.7
License: Apache License, 2.0
Software/Version/License List
325
Software/Version/License List
org.hibernate.common-hibernate-commons-annotations-4.0.1.Final.jar Version: 4.0.1
License: GNU Library or 'Lesser' General Public License (LGPL) 2.1
org.hibernate-hibernate-commons-annotations-4.0.1.Final.jar Version: 4.0.1
License: GNU Library or 'Lesser' General Public License (LGPL) 2.1
postgresql-9.2-1004.jdbc4.jar Version: 1004.jdbc4
License: PostgreSQL 1.0
quartz-2.2.1.jar Version: 2.2.1
License: Apache License Version 2.0
quartz-jobs-2.2.1.jar Version: 2.2.1
License: Apache License Version 2.0
slf4j-api-1.6.1.jar Version: 1.6.1
License: MIT license 1.0
slf4j-log4j12-1.6.1.jar Version: 1.6.1
License: MIT license 1.0
spring-aop-3.2.2.RELEASE.jar Version: 3.2.2
License: Apache License 2.0
spring-beans-3.2.2.RELEASE.jar Version: 3.2.2
License: Apache License 2.0
spring-context-3.2.2.RELEASE.jar Version: 3.2.2
License: Apache License 2.0
spring-context-support-3.2.2.RELEASE.jar Version: 3.2.2
License: Apache License 2.0
spring-core-3.2.2.RELEASE.jar Version: 3.2.2
License: Apache License 2.0
spring-expression-3.2.2.RELEASE.jar Version: 3.2.2
License: Apache License 2.0
spring-jdbc-3.2.2.RELEASE.jar Version: 3.2.2
License: Apache License 2.0
spring-ldap-1.3.1.RELEASE-all.jar Version: 1.3.1
License: Apache License 2.0
spring-orm-3.2.2.RELEASE.jar Version: 3.2.2
License: Apache License 2.0
spring-security-config-3.1.3.RELEASE.jar Version: 3.1.3
License: Apache License 2.0
spring-security-core-3.1.3.RELEASE.jar Version: 3.1.3
License: Apache License 2.0
spring-security-ldap-3.1.3.RELEASE.jar Version: 3.1.3
License: Apache License 2.0
spring-security-taglibs-3.1.3.RELEASE.jar Version: 3.1.3
License: Apache License 2.0
326 AppCenter User Guide
AppCenter User Guide
spring-security-web-3.1.3.RELEASE.jar Version: 3.1.3
License: Apache License 2.0
jquery.qtip.min.js Version: 2
License: MIT license 1
jquery-1.7.2.min.js Version: 1.7.2
License: MIT license 1
jquery-ui-1.10.3.custom.js Version: 1.10.3
License: MIT license MIT license
jquery.js Version: 1.10.2
License: MIT license
jquery-1.10.2.min.js Version: 1.10.2
License: MIT license
jquery.fileupload.js
License: MIT license
jquery.dataTables.custom.js Version: 1.9.4
License: BSD
jquery-1.11.1.min.js Version: 1.11.1
License: MIT license
jquery-ui.js Version: 1.10.4
License: MIT license
jquery.alterclass.js
License: MIT license
jquery-ui-timepicker-addon.js Version: 1
License: MIT license
jquery.number.min.js Version: 2.1.0
License: MIT license
jquery.reveal.js Version: 1.22
License: MIT license
jquery.expander.min.js Version: 1.4.13
License: MIT license
jquery.ui.widget.js Version: 1.11.1
License: MIT license
jquery.dataTables.columnFilter.js Version: 1.5.6
License: BSD
jquery.sortable.js
License: MIT license
jquery.multisortable.js Version: 0.2
License: MIT license
jquery.multi-select.custom.js Version: 0.9.11
License: WTFPL 2.0
jquery.loadmask.js Version: 0.4
License: MIT license
Software/Version/License List
327
Software/Version/License List
jquery.iframe-transport.js Version: 1.8.3
License: MIT license
jquery.highlight.js Version: v3
License: MIT license
jquery.ba-hashchange.js Version: 1.3
License: MIT license
jquery.cookie.js Version: 1.4.1
License: MIT license
underscore.js Version: 1.6.0
License: MIT license
ext-settings_menu.js
License: BSD
keybinding-vim.js
License: BSD
ext-keybinding_menu.js
License: BSD
ext-static_highlight.js
License: BSD
ext-split.js
License: BSD
worker-css.js
License: BSD
ext-whitespace.js
License: BSD
keybinding-emacs.js
License: BSD
ext-themelist.js
License: BSD
worker-javascript.js
License: BSD
ext-textarea.js
License: BSD
ext-chromevox.js
License: BSD
ext-error_marker.js
License: BSD
ext-modelist.js
License: BSD
ext-old_ie.js
License: BSD
ext-options.js
License: BSD
328 AppCenter User Guide
AppCenter User Guide
ext-emmet.js
License: BSD
ace.js
License: BSD
worker-coffee.js
License: BSD
ext-spellcheck.js
License: BSD
ext-statusbar.js
License: BSD
theme-chrome.js
License: BSD
ext-elastic_tabstops_lite.js
License: BSD
mode-java.js
License: BSD
worker-lua.js
License: BSD
mode-pgsql.js
License: BSD
mode-sql.js
License: BSD
worker-json.js
License: BSD
worker-php.js
License: BSD
ext-language_tools.js
License: BSD
worker-xquery.js
License: BSD
theme-ambiance.js
License: BSD
ext-searchbox.js
License: BSD
backbone.wreqr.js Version: v0.2.0
License: MIT license
backbone.marionette.js Version: v1.4.1
License: MIT license
backbone.js Version: 1.1.2
License: MIT license
backbone.syphon.min.js Version: 0.4.1
License: MIT license
Software/Version/License List
329
Software/Version/License List
globalize.js
License: MIT license
bootstrap-multiselect-custom.js
License: Apache License 2.0
bootstrap.js Version: v3.0.0
License: Apache License 2.0
bootstrap-modal-popover.js
License: MIT license
bootstrap3-wysihtml5.js Version: v0.3.3
License: MIT license 2.0
bootstrap-slider.js
License: MIT license 2.0
bootstrap-multiselect.js Version: v0.9.8
License: Apache License 2.0
bootstrap-modal-popover.js
License: MIT license 2.0
bootstrap-multiselect.js Version: v0.9.8
License: Apache License 2.0
ui-bootstrap-tpls-0.11.0.min.js Version: 0.11.0
License: MIT license
loader.js Version: 0.1.4
License: MIT license
jszip.js
License: MIT license
jszip-utils.js
License: MIT license
jszip-inflate.js
License: MIT license
typeahead.bundle.custom.js Version: 0.10.2
License: MIT-type
wysihtml5-0.3.0.min.js Version: 0.3.0
License: MIT-type
select2.min.js Version: 3.4.0
License: Apache License, 2.0
dataTables.scroller.js Version: 1.1.0
License: MIT license
dataTables.colReorderResize.js Version: 1.1.0
License: MIT license
jquery.dataTables.Aster.js Version: 1.1.0
License: MIT license
handlebars.js Version: 1.3.0
License: MIT-type
330 AppCenter User Guide
AppCenter User Guide
d3.v3.min.js Version: 3
License: no license name specified no license version specified
animatedcollapse.js Version: 2.4
License: Dynamic Drive Terms of Use DHTML scripts
No specified license name No specified license version
raphael.js Version: 1.4.7
License: MIT license
gexf-parser.js
License: MIT license
sigma.plugins.dragNodes.js
License: MIT license
sigma.min.js
License: MIT license
sigma.forceatlas2.js
License: MIT license
moment.min.js Version: 2.8.2
License: MIT license
angular.min.js Version: v1.2.18
License: MIT license
spin.js
License: MIT license
mersenne-twister.js
License: BSD-type new
Software/Version/License List
331
License Information
License Information
1. Eclipse Public License 1.0
Eclipse Public License - v 1.0
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE
PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
1. DEFINITIONS
"Contribution" means: a) in the case of the initial Contributor, the initial code and documentation distributed under this
Agreement, and b) in the case of each subsequent Contributor: i) changes to the Program, and ii) additions to the Program; where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
"Contributor" means any person or entity that distributes the Program.
"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
"Program" means the Contributions distributed in accordance with this Agreement.
"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
2. GRANT OF RIGHTS a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form.
This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each
Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
332 AppCenter User Guide
AppCenter User Guide
License Information d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its
Contribution, if any, to grant the copyright license set forth in this Agreement.
3. REQUIREMENTS
A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: a) it complies with the terms and conditions of this Agreement; and b) its license agreement: i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
When the Program is made available in source code form: a) it must be made available under this Agreement; and b) a copy of this Agreement must be included with each copy of the Program.
Contributors may not remove or alter any copyright notices contained within the Program.
Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
4. COMMERCIAL DISTRIBUTION
Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the
Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified
Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
For example, a Contributor might include the Program in a commercial product offering, Product X.
That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the
Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
333
License Information
5. NO WARRANTY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON
AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS
OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this
Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
6. DISCLAIMER OF LIABILITY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT
LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM
OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
7. GENERAL
If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate,
Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable.
However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The
Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement.
The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program
(including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and
2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
334 AppCenter User Guide
License Information
This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
2. Apache NOTICE Files 2.0 Apache License, 2.0
Copyright 1999-2007 The Apache Software Foundation
This product includes software developed at The Apache Software Foundation
(http://www.apache.org/).
This software contains code from the World Wide Web Consortium (W3C) for the Document Object
Model API (DOM API) and SVG Document Type Definition (DTD).
This software contains code from the International Organisation for Standardization for the definition of character entities used in the software's documentation.
This product includes images from the Tango Desktop Project (http://tango.freedesktop.org/).
This product includes images from the Pasodoble Icon Theme (http://www.jesusda.com/projects/ pasodoble).
3. Apache License, 2.0.0
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
Definitions.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by
Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means
(i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or
(iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this
License.
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a
Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the
License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative
Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
AppCenter User Guide 335
License Information
336
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to
Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a
Contribution has been received by Licensor and subsequently incorporated within the Work.
Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that
You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the
Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the
Work otherwise complies with the conditions stated in this License.
Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with
Licensor regarding such Contributions.
AppCenter User Guide
License Information
Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof,
You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations,
You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other
Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
4. Apache 2.0 WC3 Document and License WC3 Software and
License
xml-commons/java/external/LICENSE.dom-software.txt $Id: LICENSE.dom-software.txt 201084
2002-12-09 16:15:21Z vhardy $
This license came from: http://www.w3.org/Consortium/Legal/copyright-software-19980720
W3C? SOFTWARE NOTICE AND LICENSE
Copyright ? 1994-2001 World
Wide Web Consortium, <a href="http://www.w3.org/">World Wide Web Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of Technology</a>, <a href="http:// www.inria.fr/">Institut National de Recherche en Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved.
http://www.w3.org/Consortium/Legal/
This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
Permission to use, copy, modify, and distribute this software and its documentation, with or without modification,? for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:
The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
AppCenter User Guide 337
License Information
Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code:
"Copyright ? [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of
Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All
Rights Reserved.
http://www.w3.org/Consortium/Legal/"
Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)
THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT
INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
DOCUMENTATION.
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
____________________________________
This formulation of W3C's notice and license became active on August 14 1998 so as to improve compatibility with GPL. This version ensures that W3C software licensing terms are no more restrictive than GPL and consequently W3C software may be distributed in GPL packages. See the older formulation for the policy prior to this date. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww,
Amaya, and Jigsaw.
5. MIT-type
Other questions about this notice can be directed to [email protected].
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the names of the authors or their employers not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.
The authors and their employers disclaim all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall the authors or their employers be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software.
6. Common Development and Distribution License 1.0
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0 (CDDL-1.0)
(text)
1. Definitions.
1.1. Contributor means each individual or entity that creates or contributes to the creation of
Modifications.
1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
338 AppCenter User Guide
AppCenter User Guide
License Information
1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
1.4. Executable means the Covered Software in any form other than Source Code.
1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
1.7. License means this document.
1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
1.9. Modifications means the Source Code and Executable form of any of the following:
A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
B. Any new file that contains any part of the Original Software or previous Modification; or
C. Any new file that is contributed or otherwise made available under the terms of this License.
1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
2. License Grants.
2.1. The Initial Developer Grant.
Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this
License.
(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original
Software, or (ii) the combination of the Original Software with other software or devices.
2.2. Contributor Grant.
339
License Information
Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such
Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered
Software and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that
Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)
Modifications made by that Contributor (or portions thereof); and (2) the combination of
Modifications made by that Contributor with its Contributor Version (or portions of such combination).
(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that
Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that
Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that
Contributor.
3. Distribution Obligations.
3.1. Availability of Source Code.
Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source
Code form in a reasonable manner on or through a medium customarily used for software exchange.
3.2. Modifications.
The Modifications that You create or to which You contribute are governed by the terms of this License.
You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
3.3. Required Notices.
You must include a notice in each of Your Modifications that identifies You as the Contributor of the
Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any
Contributor or the Initial Developer.
340 AppCenter User Guide
AppCenter User Guide
License Information
3.4. Application of Additional Terms.
You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such
Contributor as a result of warranty, support, indemnity or liability terms You offer.
3.5. Distribution of Executable Versions.
You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the
Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the
Initial Developer and every Contributor for any liability incurred by the Initial Developer or such
Contributor as a result of any such terms You offer.
3.6. Larger Works.
You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
4. Versions of the License.
4.1. New Versions.
Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this
License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
4.2. Effect of New Versions.
You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the
Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the
Covered Software available under the terms of any subsequent version of the License published by the license steward.
4.3. Modified Versions.
When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
341
License Information
5. DISCLAIMER OF WARRANTY.
COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS,
MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU.
SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED
SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
6. TERMINATION.
6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach.
Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial
Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial
Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the
Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the
Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to
You by any distributor) shall survive termination.
7. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE,
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY
INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER
INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL,
WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED
OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT
APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS
NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME
JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO
YOU.
342 AppCenter User Guide
License Information
8. U.S. GOVERNMENT END USERS.
The Covered Software is a commercial item, as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. 252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48 C.F.R. 12.212 (Sept.
1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all
U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S.
Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
9. MISCELLANEOUS.
This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United
Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
10. RESPONSIBILITY FOR CLAIMS.
As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
7. Eclipse Distribution License v1.0
Eclipse Distribution License - v 1.0
Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
•
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
•
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
•
Neither the name of the Eclipse Foundation, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
AppCenter User Guide 343
License Information
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
8. GNU Library or 'Lesser' General Public License (LGPL) 2.1
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library
Public License, version 2, hence the version number 2.1.]
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some specially designated software packages-typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public
License is the better strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use, not price. Our General Public
Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.
To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that there is no warranty for the free library.
Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.
344 AppCenter User Guide
AppCenter User Guide
License Information
Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the ordinary GNU General Public License.
This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.
When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General
Public License therefore permits such linking only if the entire combination fits its criteria of freedom.
The Lesser General Public License permits more lax criteria for linking other code with the library.
We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary
General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.
For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in nonfree programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.
Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING,
DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
345
License Information
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this
License and to the absence of any warranty; and distribute a copy of this License along with the Library.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.
(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.
Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General
Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
346 AppCenter User Guide
AppCenter User Guide
License Information
4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the Library, but is designed to work with the
Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the Library is used in it and that the
Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the
Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machinereadable "work that uses the Library", as object code and/or source code, so that the user can modify the
Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
347
License Information e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.
b) Give prominent notice with the combined library of the fact that part of it is a work based on the
Library, and explaining where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the
Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.
11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason
(not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this
License would be to refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
348 AppCenter User Guide
AppCenter User Guide
License Information
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this
License.
12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public
License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library specifies a version number of this
License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO
THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY
PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT
LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH
ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General
Public License).
To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
349
License Information
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-
1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a
"copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
9. PostgreSQL 1.0
The PostgreSQL Licence (PostgreSQL)
This is a template license. The body of the license starts at the end of this paragraph. To use it, say that it is The PostgreSQL License, and then substitute the copyright year and name of the copyright holder into the body of the license. Then put the license into a file called "LICENSE" in your software distribution.
Copyright (c) $YEAR, $ORGANIZATION
Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.
IN NO EVENT SHALL $ORGANISATION BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
$ORGANISATION HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
$ORGANISATION SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
AND $ORGANISATION HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
10. MIT license
The MIT License (MIT)
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
350 AppCenter User Guide
License Information
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
11. WTFPL 2.0
DO WHAT *** **** YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <[email protected]>
Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.
DO WHAT *** **** YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT *** **** YOU WANT TO
12. BSD-type
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the Woodstox XML Processor nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
AppCenter User Guide 351
License Information
13. BSD License
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
•
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
•
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
•
Neither the name of Ajax.org B.V. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
352 AppCenter User Guide
பதிவிறக்கு
விளம்பரம்