Sie sind auf Seite 1von 16

Introduction to QlikView Development 5/20/2015

Session #1: Introduction to QlikView Development

QlikView inhabits a position placing it at an intersection between 4 very frequently used components.

DATABASE Like most traditional BI software, QlikView can extract and transform data from RDMS systems. In
addition, under proper conditions these connections can be bi-directional (meaning Qlikview can be used as a source of
upload)

OPERATING SYSTEM QlikView can interact with the operating system in a variety of ways. It is most commonly used
to collect flat file data sources from local drives or network locations, and to write output to these locations as well.
When designing, think of this as the portion of the database that has escaped the boundaries of the RDMS system,
and can be scattered anywhere.

QlikView can launch executables or other commands from within script or user-interface, thereby adopting the
capabilities of DOS, VBA, or other executables. (e.g. it is possible to execute a sequence of commands to alter registry
entries based on a data table within a QlikView application)

WEB QlikView can source data from URLs, html, XML, and FTP sources.

Its traditional delivery platform is accessed through a web portal and end-users may consume content shared on a
website.

END-USER - QlikView applications are meant to be interactive. Every end-user selection potentially represents a re-
filtration of the underlying data and changes in the interface visualizations. QlikView applications arent meant to be
static reports.
Introduction to QlikView Development 5/20/2015

User interfaces can also collect data, incorporating this collected information directly into the application, or archiving it
for usage elsewhere. Interactive controls allow the end-user to change and test different parameters and assign
variables.

(e.g. A voting application that starts each users session asking them to choose 3 choices from a list of many
possibilities or click on images, and then records their selections)

Based on the permutations that could be formed from the components above, it is unlikely the breadth of applicable
usage has yet to be fully explored. There are many applications to be made!

The following will be an introduction to the structure of QlikView from a developers perspective. Some familiarity with
database structure, SQL, and User interface design will be helpful. Several of the descriptions here will attempt to form
parallels between RDMS (Relational Database Management Systems) & QlikView.

- The three areas of QlikView (ETL | User Interface | Server Components)

- ETL
o All data formation, extraction, and transformation is performed here
o A QlikView Developer is normally responsible for this area
- User-Interface
o All interactivity with the end-user is designed here
o A QlikView Developer or Designer should be able to create user interfaces
- Server
o All delivery & maintenance of the application are performed here
o A QlikView Administrator would be responsible for this area

Designing a system for applications traversing all three areas would be the assignment of a QlikView Architect.

- About the .QVW


The .QVW is the file extension for a QlikView application. It may contain either a QlikView data model or a user-interface, or any combination of
the two.

A QlikView data model can be considered equivalent to a schema or owner. It can be as limited as 1 table with a single field, or a
multitude of many fields and tables.
A .QVW containing QlikView ETL scripting (Extract, Transform, Load), a fully realized data model, and complete user-interface design
can be referred to as stand-alone application. It is a single file encapsulating all stages from database to delivery.
A .QVW may contain user-interface controls without data (but interacting with an application without data will cause most, if not all UI
charts & objects to appear blank and incomplete. A fully functional user-interface might appear broken or may not have its true nature
revealed until it is inflated with data)
A .QVW without any or minimal user-interface design is referred to as an ETL application (and could be considered similar to the function
of a stored procedure)
A .QVW user-interface that receives data from other QlikView documents that have passed through 1 to N previous layers of data
transformation is considered part of an N-Tier architecture. See the description below about N-tier architecture for a more detail.

QlikView architecture for Enterprise usage.

It is possible to use QlikView as the data source, the vehicle for extract & transformation, and the user
interface, but most QlikView marketing awareness focuses on the user-interface.

QlikView applications might be like an iceberg; there is much going on under the surface, but the portion you
see gets most of the attention!
Introduction to QlikView Development 5/20/2015

(example: illustration of a multi-tiered QlikView architecture)

Additional things regarding the .QVW

Each .QVW is a completely encapsulated database (referred to as data model). Whether it consists of a single row in a single field from
one table, or millions of rows spanning several tables, it is completely designed and administered through the .QVW and the developer
must assume the role of DBA for that document.
A .QVW makes a connection to data sources only during the execution of a reload. After that, all data is packaged within the .QVW and
there is no longer any connectivity with the original sources.
.QVWs that are loaded with data may be used directly as a data source by another .QVW. This is referred to as a Binary load.

- Basics of the QlikView ETL layer & Parallels between RDMS architecture

o Database Parallels how to view the components of QlikView against the concepts youre already familiar with
DB Client | QlikView Script Editor
Hotkey: Ctrl+E
DB data model | QlikView data model | QVW
Hotkey: Ctrl+T
DB Table | QlikView Table | QVD
SQL | QlikView Scripting
Joins | Associations
o Active or live associations vs. on demand queries & result sets
o Associations are similar to having an implied:
FULL OUTER JOIN TABLE_A, TABLE_B WHERE
KEY_FIELD.TABLE_A = KEY_FIELD.TABLE_B
ETL functions left(), right(), mid(), upper(), date(), etc..
o Extending beyond the parallels
RDMS Software | QlikView data sources
What if the database broke open and spilled and scattered its tables/schemas all over the network & web?
Possible QlikView data source types
RDMS (Relational Database Management Software via ODBC/OLE)
o Oracle, SQL Server, DB2, Sybase, etc..
Custom Connectors
Introduction to QlikView Development 5/20/2015

o i.e. - A developer creates a .DLL that will connect directly to a social media feed without using RDMS
software as an intermediate platform
SAP connector
Salesforce.com
Facebook
o Custom connectors are usually either additional downloads that are snap-on components to
QlikView, or they represent new custom development.
QlikView data sources
o QVD (a single table in file format)
o QVW (an entire standalone database)
Flat files
o Excel spreadsheets
XLS / XLSX
o Text Files
CSV, TXT
Delimited
Fixed width
o Programmatic encoded sources
HTML
XML
o Asymmetric data
Blobs, email, free text
Running through email database, scanning for keywords
Programming & coding
Scanning .BAT files and assembling data from them
Compound delimiters
JSON, CMEP example (commas, colons, & multiple sub-rows per row)
Origins of data sources
ODBC/OLE connection
Custom connection
Local or Network directory
o Relative or absolute path
URL
o SharePoint
o Http tables
o .CSVs fed from a website
FTP
Inline

Valid combinations of data sources within a single .QVW


o RDMS only
o RDMS + flat files + web files + inline tables + user captured input
o (e.g. Oracle + SQL Server + XLS + CSV + HTML)

Once data is loaded within QlikView, all sources are treated equally regardless of originating systems, and all data conforms to
one of the QlikView data types.

QlikView materials may propose there are no data types, but this is not entirely true. The goal of QlikView was to
minimize emphasis placed on data-typing. A beginner working with relatively clean data, should be able to design a
fundamental QlikView application without needing to maintain data types.
In more realistic scenarios, in enterprise environments where data is rarely neatly scrubbed & sanitized, data
validation often becomes de rigueur. In the event you need to perform data validation, clean-up, & scrubbing, the
tools are available.
o Here some of the activities this might describe:
Null, empty, & missing data areas
Mismatched keying systems 001 = 1?
Semantic & formatting variations MM-DD-YYYY vs. MM/DD/YY?
Cross-environmental/platform differences system A uses 50 chars / B uses 32 chars
Fat-fingering/content validation Beverly Hills 9L21o? or 90210?

QlikView data types fall into three possibilities:


fields with only a numeric representation
Introduction to QlikView Development 5/20/2015

o for example a row of data encapsulating the number 8 for calculation hasnt also been encoded that it has
to match the character 8 from your keyboard. In a sense it could be considered similar to a binary
representation.
fields which have both a textual & numeric representation
o sometimes referred to as a Dual data type
o Not only does the row calculate the value 8, but it is also paired with the text character 8 as a visual
representation. In this manner, the value 8 could be paired with an alternate symbol in another language
that does not use Arabic numbers.
i.e. Roman Numerals VIII 4 character string to represent the number 8
o Dates are duals
May 1, 2015 is paired with integer 42125. 42125 is Microsofts constant integer representing
this date in history.
fields with only textual representation
o pure strings
o e.g. a value of Hello unpaired with any numerical representation will not produce a valid mathematical
result when used in a calculation
Sum( Hello + World) = Null()

QlikView data types


o Integer with text representation (Dual)
o Integer without text representation
o Float with text representation (Dual)
o Float without text representation
o Text

- Basics of QlikView scripting & Parallels between SQL syntax

Database parallels how to view QlikView scripting techniques compared with concepts youre already familiar with

o Using Native SQL & QlikView scripting combined in the same load script
Native SQL refers to the specific dialect of SQL used by a RDMS, that can be executed from within a QlikView script (traditionally
via an ODBC or OLE connection)
PL-SQL (Oracle)
T-SQL (SQL Server)
DB2, Sybase, Access, etc..
It is possible to create QlikView scripts in which all load statements are composed entirely of native SQL. This means SELECT
statements constructed in a DB client could be copied and pasted verbatim into a QlikView script, and the extracted result set
from the database would be the same.
It is possible to immediately and subsequently perform one to many QlikView data transformations on a result set that has
been retrieved via a native SQL statement. These are referred to as preceding loads.
Preceding loads are evaluated in script from the bottom up. They are named preceding because of their script
placement, not because of their execution order.
In load statement with one to many preceding loads:
The bottom-most statement may be either Native SQL or QlikView script
All load statements preceding the bottom-most statement must be QlikView script

o Identical concepts between QlikView & SQL


JOIN | {INNER} | {OUTER} | {LEFT} | {RIGHT}
AS (for aliasing a field)
FROM
WHERE
GROUP BY
ORDER BY
DROP | RENAME

o Similar concepts between QlikView & SQL


SELECT | LOAD | RESIDENT
UNION | CONCATENATE
FIRST # | TOP # | ROWNUM <> #
Correlated subquery | ApplyMap() function
Compound key | concatenated key field
Introduction to QlikView Development 5/20/2015

CREATE TABLE | [{QlikView Table Name}]:


AUTONUMBER
INTERVALMATCH

o Feature concepts in QlikView


Auto-concatenation feature vs. Explicit keyword NOCONCATENATE
KEEP | {LEFT} | {RIGHT}
CROSSTABLE
HIERARCHY
GENERIC LOAD
INFO LOAD
BUFFER | {INCREMENTAL} | {STALE AFTER}
STORE INTO {QVD} {TXT}
Optimized Load (QVD)
Wildcard load
o Wildcard load when referring to load sources refers to iteration through a series of flat files matching a search string
pattern in the file name.
o This is not to be confused with LOAD * FROM TABLE, which is another valid but separate QlikView capability representing
load all fields found in the table
o Wildcard load will work when all the source files referenced contain the same field structure

o Iteration & Control flow


o The basic principles of sequence logic and iteration that are present in nearly all development programming languages are present in
QlikView.
FOR | FOR EACH | NEXT
IF THEN | ELSEIF | ELSE | ENDIF
DO | WHILE | LOOP
SWITCH | CASE | ENDSWITCH

A good example of when it becomes appropriate to iterate through a series of source files via control loop vs. attempting a wildcard load,
would be the combination of many individual source files into a single table, but the field structures of each source file has field structure
variations.

In that sense, a loop of a CONCATENATE statement would append the records from one file after the next into a single table, regardless
of whether all the files had the same field names, amount of columns, etc. A wildcard file load will only auto-concatenate the results of
multiple files into a single table when the field structure of each file is identical.

- Session #2: Basics of QlikView Scripting (building the sample Application)


- Build an app from free & public data. Data.Gov Rail Safety statistics
- http://safetydata.fra.dot.gov/OfficeofSafety/publicsite/on_the_fly_download.aspx

- Download components for this exercise (included in folder tree from pass around .zip drive)
!!Before starting set your User-Properties to Save Before Reload. Dont want to lose work or changes if a script fails.

1. Open QlikView and create a new application.


Open a new .QVW and save it in the folder \_TRAINING_SESSION\Qv_Development_Session_(*add your own initials*}.qvw

2. Open the script editor, add new script tabs, and load the source files
a. Ctrl+E
b. Repeat the Add Tab twice. Add script tabs called FACT & DIMENSIONS to the application
Introduction to QlikView Development 5/20/2015

3. Click on the Table Files button in the script editor to begin adding source files to the appropriate script tabs

DIMENSIONS
1. DATA\appendix F - events.xls
2. DATA\County_Codes.csv
3. DATA\Railroads.xls
4. DATA\State codes.xls

(*Note: during the import, sometimes you may have to use the wizard to use Embedded Labels for the field names)

ii. FACT
1. DATA\NTSH_Rail_Casualties_2015_1230191.txt
Introduction to QlikView Development 5/20/2015

Make sure to assign the delimiter to Comma when importing NTSH_Rail_Casualties.txt files

Once you have all the included all the source files to the script, you can reload the script with Ctrl+R. If your script completes successfully, hit
Ctrl+T to look at the data model.

Only one of our 4 dimension tables is actually associated to the fact table, and this happened because the field names between the two tables were
identical.

Lets modify the scripting of the File Wizard to associate all our tables in the data model, and also to add a few new fields of our own. Go through
the existing script and modify it to match this:

//*****ON THE FACT TAB

//This will mark the data associated with Hawaii & Alaska not to be shown in the map
[MAP_EXCLUDES]:
MAPPING LOAD *, 'OFF_GRID' AS FLAG INLINE [
EXCLUDE
02
15
];
Introduction to QlikView Development 5/20/2015

//** this is the main body of fact information

[DOT_RAIL_CASUALTIES]:
LOAD
FileBaseName() AS SOURCE,
ApplyMap('MAP_EXCLUDES',STATE,IF(LATITUDE> 25 AND LONGITUD < -66,1,'OFF_GRID')) AS FLAG_INCLUDES,
Date(MakeDate(Num#(20 & IYR),IMO,DAY),'MM/DD/YYYY') AS EVENT_DATE,
AutoNumberHash128(IYR,IMO,RAILROAD,INCDTNO) AS INCDTNO,
INCDTNO AS INCDTNO_ORIGINAL,
IYR,
IMO,
RAILROAD,
TYPPERS,
JOBCODE,
NATINJ,
LOCATION,
IFATAL,
OCCODE,
TCODE,
AGE,
DAYSABS,
DAYSRES,
DUMMY,
STATE AS STATE_ID,
TYPRR,
DUMMY1,
REGION,
DUMMY2,
NARRLEN,
CASFATAL,
CAS57,
CAS54,
DUMMY3,
DAY,
YEAR4,
TIMEHR,
TIMEMIN,
AMPM,
COUNTY,
CNTYCD,
STCNTY,
ALCOHOL,
DRUG,
PHYACT,
LOCA,
LOCB,
LOCC,
EVENT,
TOOLS,
INJCAUS,
HZMEXPOS,
TERMINAT,
NARR1,
NARR2,
NARR3,
COVERDATA,
LATITUDE,
LONGITUD
FROM
[DATA\NTSH_Rail_Casualties_*.txt] //<~~ dont forget this change, it does something important
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

//*****ON THE DIMENSIONS TAB

[STATE]:
LOAD
[Numeric Code] AS STATE_ID, //*this is the association field
Name AS STATE_NAME,
[Alpha Code] AS STATE_ABBREV
FROM
[DATA\State codes.xls]
(biff, embedded labels, table is Sheet1$);
Introduction to QlikView Development 5/20/2015

[COUNTY]:
LOAD
UPPER(stcty) AS STCNTY, //*this is the association field
[State FIPS Code],
[County FIPS Code],
[Variable used by the Map Chart Client],
[Name of State],
[County Name] AS STATE_COUNTY,
[Numeric Rep. for Continent],
[World Geographic Code],
staten,
nstate,
cn,
cnty,
cnty3
FROM
[DATA\County_Codes.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

[RAILROAD]:
LOAD RAILROAD,
SYSRR,
NAME
FROM
[C:\__QlikView\_TRAINING_SESSION\DATA\Railroads.xls]
(biff, embedded labels, table is Railroads$);

[RAILROAD_EVENT_CODES]:
LOAD Type,
ccode AS EVENT, //*this is the association field
Circumstance
FROM
[DATA\appendix F - events.xls]
(biff, embedded labels, table is events$);

//*this is the end of the script

You can see in this script we have done a few additional things to enhance our data model:
Aliased fields to form associations
Created new fields using expressions
Transformed existing fields
Assigned table names
Performed a wildcard load of multiple source files

When you complete loading all the tables in the example instructions, your data model should look like this. (*Note in the table viewer you can
move the tables around and arrange them as you like)
Introduction to QlikView Development 5/20/2015

Once your data model resembles the one shown, you should be able to then proceed with creating or modifying the visualizations included in the
example file, or create new visualization on your own. For example the chart image below is a scatter chart made from the data we assembled
above.

Geographical scatter charts have many properties and settings (as do all QlikView charts), but here are the essentials to form a geographical scatter
plot:

-Dimension
The first dimension should be your unique identifier of WHERE the activity or event occurred. In this case we are using the field INCDTNO
as the event identifier. Then as a secondary dimension, we are categorizing these incidents by STATE_NAME.

-Expressions
For a geo chart to work it MUST have a LONGITUDE & LATITUDE for each plot point. Then as an optional 3 rd argument, the Z expression
varies the diameter of the plot point based on the calculated value. In our case, Count(INCDTNO) would be sufficient, showing the frequency of
incidents at a location.
Introduction to QlikView Development 5/20/2015

-Axes
- Uncheck [Forced Zero]

(*note this is the expression screen for a scatter chart in simplified view, you can toggle between Advanced mode view by checking the box at
the lower left corner.

(*Be aware in QlikView that the properties menus are always changing based on the type of object you are interacting with. Good to know if
you somehow feel you cant find the setting you knew was there before*)

This concludes the Construction of the Sample Application portion of the session.

- On your own: Topics for further exploration

- Advanced QlikView Scripting concepts

Certain permission settings on QlikView applications allow more interactivity between the .QVW and other elements during scripting

o EXECUTE
Execute allows an os level (DOS) command to be executed. In this way it is possible to call command line statements in the
same manner as they would in a .CMD window.
These statements can be parameterized and looped
o DATABASE WRITE
When permissions for database write are engaged, the ODBC/OLE connections are allowed to complete DDL statements which
perform WRITE actions on the source system (the database connection must also permit this)
CREATE
INSERT INTO
UPDATE
DROP
In that sense, it would be possible to create a user interface within QlikView that allowed an end-user to peruse & search the
information from a source table within the QlikView desktop, and then apply updates within the RDMS system from that same
interface.
The DATABASE WRITE capabilities are not available for end-users in the AccessPoint, this is a desktop possible feature only
o PARTIAL RELOAD
During a FULL RELOAD, the entire .QVW is purged of all data and the entire data model is built from scratch, based on the
instructions of the load script.
During a PARTIAL RELOAD the QlikView scripting engine will preserve all data previously loaded into the application.
Script commands are specifically marked for execution during a PARTIAL RELOAD by the presence of keyword prefixes: ADD,
REPLACE.
In this sense it is possible to comingle sets of script instructions appropriate for PARTIAL RELOAD vs. FULL RELOAD, or
keep the instructions completely segregated.

- Basics of QlikView User Interface Design


Parallels how to view techniques of QlikView scripting against the concepts youre already familiar with
Introduction to QlikView Development 5/20/2015

The QlikView design user interface should be considered an active sheet of controls overlain the loaded data. Merely the act of dropping a
list or table box onto the user interface is enough to connect it to fields in the data model.

By default, selections made in any given tab or objects are automatically propagated to all other controls throughout the application. Clicking
on the value Apple in a listbox of the field [Fruit] is essentially an instantaneous application of the WHERE clause WHERE [Fruit] =
Apple to all controls throughout the application.

o Expressions
Basic expressions can be entered directly into a user-interface object, such as a chart or text box.
=Sum([Sales])
=Count( DISTINCT [%Key_DEPT_ID])
Expressions can also make use of variables
Variables can be created & assigned in a variety of ways:
During scripting
Using the Variable Overview Window
Via input from the user-interface
Variables can be assigned explicit values
Let vTestVar = Corporate;
Variables can evaluate expressions
Let vTestVar = Sum([Sales]);
Variables can contain the syntax of entire expressions
Set vTestVar = Sum([Sales]);
Variables can contain dynamically assigning syntax
Let vTestVar = IF(vSourceType = Sales, Sales,Projections);
Variables can be nested
Let vSales = Sum([Sales])
Let vProjections = Sum([Projections])
Let vSumAll = $(vSales) + $(vProjections)
Variables once assigned are preserved
Variables do not get cleared or reset upon on each reload, save as, or open/close
A category of functions known as Aggregation have specific properties:
Sum(), Avg(), Max(), Count(), etc..
Can accept set-analysis
Aggr() is a special function which could be similar to the concept GROUP BY
Aggr() is a special function in that it produces an array
=Aggr( Count(DISTINCT PRODUCTS), DIVISION, REGION)
Equivalent to:
o SELECT COUNT(DISTINCT PRODUCTS) AS PRODUCTS
GROUP BY REGION, DIVISION

o Set-Analysis
Set-Analysis in QlikView refers to Qliks software specific syntax, and shouldnt be confused with the general concept of
analyzing sets of data. Most BI software can perform analysis of a set of data, in QlikView Set-Analysis is a proper noun and
refers to a specific sub-set of expression syntax.
Set-Analysis is essentially an SQL shorthand, which can be used to create a layer of WHERE clause filtration specific to any
expression within the user- interface.
Set-Analysis syntax only occurs embedded within a QlikView expression. The set-analysis syntax is demarcated by the
outermost set of curly braces {}. Inner pairs of curly braces denote set-analysis arguments.
=Sum ([Sales])
Expression without set-analysis, Sum of field [Sales]
=Sum ({<Department = {Sports}>} [Sales])
Expression with set-analysis
Sum of field [Sales] WHERE Department = Sports
Set-Analysis expressions can be dynamically constructed, make use of nested expressions, and recreate their WHERE filtrations
on every user interaction/click.
=Min( {<Date={ $(=MAX(SALES_DATE))}>} WARRANTY_YEAR )
Upon each end-user selection, find the minimum warranty year based on the maximum of all possible
SALES_DATES in selection
o Macros
Visual Basic / Jcript
Introduction to QlikView Development 5/20/2015

Macros within QlikView utilize a VB script syntax that is compatible with all other Microsoft applications. In this way it is
possible to create vb macros which automate actions within QlikView
When granted permission, it is also possible for the macro module to interact with the operating system (similar to the usage of
EXECUTE during script reload)

- Beyond Out of the Box User-Interface Design

o Extensions: In the event that user interface design requires customization not available with the default palette of QlikView controls,
there are means for creating new or unique QlikView objects.
These custom objects are called Extensions and are written in javascript and can be imported into QlikView applications
when out of the box choices are not sufficient.
As an example, QlikView installations automatically come with a demonstration of extensions:
C:\Program Files\QlikView\Examples\Documents\Extension Examples.qvw
Activating a QlikView extension requires creating and then installing a .qar file. (A .qar is installed by double-clicking it)
C:\Program Files\QlikView\Examples\Extensions\Extension Examples.qar
e.g. In earlier versions of QlikView, pie chart wedges were always flat. At one point an extension was distributed that would
animate the raising up of pie wedges when OnMouseOver() was detected. To create this animation, a custom package of
.javascript code fulfilling this was written and imported into a .QVW.
The drawback of extensions is that they do not render in desktop versions of QlikView. You can only use/interact with
extensions when in web-view (because they are written in javascript), and when not in web-view extensions appear blank.
QlikSense, Qliks newest software product is created entirely from extensions.

o WorkBench: When combining elements of QlikView documents with other web applications that are not being accessed through the
default AccessPoint, this type of integration is performed with QlikView Work Bench.
This is another QlikView add-on specifically geared for merging Qlik created content into other types of web applications

For the large majority of QlikView applications, extensions and externalized integrations are not necessary. There are still plenty of new
visualization and interaction techniques being discovered using the out of the box components of QlikView. But in the event a design requires
something very specific which cannot be fulfilled by the default components, there are alternatives.

- Data Filtration Where can it be applied?

Native SQL WHERE clauses from ODBC/OLE extraction


QlikView WHERE clauses
o SQL SELECT - on preceding loads for Native SQL extractions
o FROM - On direct load statements for non-RDMS sources
o RESIDENT - Additional statements transforming existing tables in the QlikView data model
User-Interface
o Field selections - Essentially real-time WHERE clauses being applied to an active data set
o Expressions - Using programmatic functions and logic filter based calculation results
o Set-analysis - Calculated WHERE clauses, which supplement the active selections made via user interaction
o Dynamic Data Update An additional and perhaps 4th tier of SQL syntax or dialect that can be applied to the QlikView data
model, this layer is only available post reload.

- Clients for consuming a QlikView application

An application (.QVW) ready for end-usage can be consumed through a variety of clients:
o Desktop
Via a local file system accessible .QVW, in conjunction with the end-user having a fully licensed & active installation of
QlikView
All features enabled
o Loading & redesign
o Creating or performing ETL & UI design & interaction
o Advanced concepts like DB writeback, OS interactions, manually initiated data extraction only
possible here
o No limitations for creation and execution of macros
Via a copy of a .QVW that has been published on a QlikView server
Opening up a copy of a .QVW published on a server in the Desktop means the interaction happens within the
Desktop client, but the application can still be restricted in terms of permissions and settings, based on what was
actually applied when published on the server.
Introduction to QlikView Development 5/20/2015

o Access Point in conjunction with a web browser


Access Point is the proper name given to the default QlikView web portal which acts as a repository for all QlikView
material published on a given QlikView server (or cluster of machines working together as a single server)
Dashboards servicing large user bases are most often accessed through these means.
The available functionality in comparison to a desktop session has some reduced features
Actions & Triggers are still available
Server: IE Plugin
Small download required on first use
Server: Ajax (Asynchronous javascript & xml)
Zero footprint

- Publishing a Completed Application / Using QlikView Server

o The QlikView server is partitioned into several components & services, each for performing a specialized role in the overall
installation.

Upon completion of a .QVW prepared for end-use, typically the .QVW is then moved from the design location to a Source directory which
is mounted on the QlikView server.

By mounting a directory filled with Source documents, all the .QVW within that directory become available for the assignment of tasks
with the QMC (the QlikView Management Console).

The QMC (QlikView management console) is the administrative website packaged with a QlikView Server installation which allows task to
be assigned and performed to QlikView documents. Examples of tasks that might be performed on a QlikView server include:

o Reloading an application
o An application .QVW gets fresh data from a DB connection that has been made available to the QlikView publisher. This
task is scheduled to run monthly. Each month the .QVW is reloaded with up to date data directly on the QlikView
server
o Distribute an application
o An application that is already loaded with data but is not being refreshed can still be distributed.
Distribution will assign permissions to the document based on settings defined in the distribution task
Permissions can be assigned from a variety of security mechanisms
The most common is Active Directory, which means NT file system permissions determine document
access
Other options include Custom, which means a security & access set of definitions have been created
specifically within QlikView for assigning document permissions

Upon successful completion of a Reload or Distribution task, most often a copy of the source .QVW is then created in a Published directory on the
QlikView server. This Published directory is the folder that is visible or exposed by the webserver to the possibility of end-users interaction with
that content.

- Desktop vs Server Qlikview installations


o Where data resides?
Regardless of where a QlikView application (.QVW) is staged, whether on a Desktop or on a QlikView server, the
application is always accessed via the same means; the .QVW is loaded into the serving machines RAM.
-
o Why RAM is important?
Since an end-user interacting with a QlikView document requires the document be loaded into RAM, the availability of
enough RAM overhead becomes a hard limitation to the amount of users & size of documents which can be accessed.
An end-user on a desktop with 4GB of RAM will not be able to open a .QVW that is 6GB large.
On a server, multiple end-users may share accessing the same .QVW and in that sense, each concurrent user doesnt
require the full amount of the document size, but instead a smaller fraction of the overall document
Remember, the operating system still needs enough RAM to run all the other applications & processes besides just
QlikView
QlikView is optimally designed for working within true RAM. It is possible for a .QVW to run out of available RAM and
being resorting to virtual memory, but at this point is it documented that performance degradation will be significant.
Dont use VM.

o When is a data connection necessary?


Introduction to QlikView Development 5/20/2015

Connection between a data source and a .QVW only happens during a reload process. End-user interactivity with an
application served on AccessPoint is completely disconnected from the underlying data sources and there is no database
crosstalk.

o What are the limitations in terms of data size?


There are no fixed limitations in terms of row counts or data size for the data model. The available RAM represents the
finite limitation in terms of data volume that can potentially be loaded into a .QVW.
The limit for a single field is 1 billion distinct values.
In theory, as long as there were sufficient RAM, an application of billions of rows could be loaded and analyzed (even if it
took a very long time for the CPU to traverse the record set ,calculate, and render a result)
Just because very large applications and data sets are possible, doesnt mean that smaller, streamlined data
models/designs arent preferred. The more efficient the design, the better the performance and end-user experience.

Das könnte Ihnen auch gefallen