14 Mar 2013 ... 1:50 pm – 2:35 pm Direct Discovery & QlikView 11.2 Update – Lucia ...... Scripting
is the environment in which a QlikView Developer will.
QlikView Philadelphia User Group March 14, 2013 Bentley Systems 685 Stockton Drive Exton, PA 19341
Wireless network: Bentley Guest Password: !infraStructure2012#
WELCOME! Mark Weidling, Regional Director
Today’s Agenda • 1:00 pm – 1:30 pm
Registration
• 1:30 pm – 1:35 pm
Welcome – Mark Weidling, Regional Director
• 1:35 pm – 1:50 pm
Group Introductions
• 1:50 pm – 2:35 pm
Direct Discovery & QlikView 11.2 Update – Lucia Biemiller, Regional Manager, Solution Architects
• 2:35 pm – 2:45 pm
Break
• 2:45 pm – 3:30 pm
Visualizations – Jennell McIntire, Applications Developer
• 3:30 pm – 4:15 pm
Optimizing Scripts – Tom Mackay, Principal Solution Architect
• 4:15 pm – 4:30 pm
Q&A and Closing Remarks – Mark Weidling, Regional Director
• 4:30 – 6:00 pm pm
Cocktail Reception at the Brickside Grille
Group Introductions Tell the group about yourself! Name, company, your role, how you are using QlikView today, etc.
QlikView 11.2 Direct Discovery & Mobile Lucia Biemille Regional SA Manager March, 2013
Legal Disclaimer This Presentation contains forward-looking statements, including, but not limited to, statements regarding the value and effectiveness of QlikTech's products, the introduction of product enhancements or additional products and QlikTech's growth, expansion and market leadership, that involve risks, uncertainties, assumptions and other factors which, if they do not materialize or prove correct, could cause QlikTech's results to differ materially from those expressed or implied by such forward-looking statements. All statements, other than statements of historical fact, are statements that could be deemed forward-looking statements, including statements containing the words "predicts," "plan," "expects," "anticipates," "believes," "goal," "target," "estimate," "potential," "may", "will," "might," "could," and similar words. QlikTech intends all such forward-looking statements to be covered by the safe harbor provisions for forward-looking statements contained in Section 21E of the Exchange Act and the Private Securities Litigation Reform Act of 1995. Actual results may differ materially from those projected in such statements due to various factors, including but not limited to: risks and uncertainties inherent in our business; our ability to attract new customers and retain existing customers; our ability to effectively sell, service and support our products; our ability to manage our international operations; our ability to compete effectively; our ability to develop and introduce new products and addons or enhancements to existing products; our ability to continue to promote and maintain our brand in a cost-effective manner; our ability to manage growth; our ability to attract and retain key personnel; the scope and validity of intellectual property rights applicable to our products; adverse economic conditions in general and adverse economic conditions specifically affecting the markets in which we operate; and other risks more fully described in QlikTech's publicly available filings with the Securities and Exchange Commission. Past performance is not necessarily indicative of future results. The forward-looking statements included in this presentation represent QlikTech's views as of the date of this presentation. QlikTech anticipates that subsequent events and developments will cause its views to change. QlikTech undertakes no intention or obligation to update or revise any forward-looking statements, whether as a result of new information, future events or otherwise. These forward-looking statements should not be relied upon as representing QlikTech's views as of any date subsequent to the date of this presentation. This Presentation should be read in conjunction with QlikTech's periodic reports filed with the SEC (SEC Information), including the disclosures therein of certain factors which may affect QlikTech’s future performance. Individual statements appearing in this Presentation are intended to be read in conjunction with and in the context of the complete SEC Information documents in which they appear, rather than as stand-alone statements. © 2011 Qlik Technologies Inc. All rights reserved. QlikTech and QlikView are trademarks or registered trademarks of Qlik Technologies Inc. or its subsidiaries in the U.S. and other countries. Other company names, product names and company logos mentioned herein are the trademarks, or registered trademarks of their owners.
Agenda • QlikView and Big Data – The gap in the big data market – The value of big data is elusive
• QlikView Offers Options to Get Big Data Value
• QlikView Direct Discovery Value • QlikView Direct Discovery Use Examples • QlikView Direct Discovery Considerations
• QlikView on Mobile - QlikView for iOS • Q&A
Insight Comes from Big Data in Context
Misc Data: Files, Spreadsheets
Hive, Impala
Hadoop Cluster
Enterprise Data Warehouse
Raw Big Data, Machine Data
Operational Systems
With QlikView, Organizations Have Options for Getting Value from Big Data 1. Analyze big data with QlikView’s 100% In Memory architecture –
Server memory capacity of 256GB represents >2TB uncompressed data
–
Analyze billions of rows with response rates only possible with in-memory architecture
2. Leverage QlikView Direct Discovery if the organization already invested into Big Data infrastructure –
Hybrid approach that leverages both in-memory data and data that is dynamically queried from an external source
Option 1: Load what you need into memory
The Myth of Big Data – Analysis in one huge chunk
In Many Cases, the Reality Looks More Like This
In-Memory Big Data Techniques • Load what you need into memory – pre-aggregate data within Big Data repository where reasonable, then load into QlikView
• Document chaining – Create multiple apps each of which holds a subset of the data, but are linked across servers – Selection states are passed between apps
• Binary load – Load QVDs into memory blazing fast
QlikView and Big Data at King.com • 1.6B rows of data per day in Hadoop — 211M rows per day extracted for analysis in QlikView • Customer browsing activity, player interactions within each game, many more metrics • Results: Marketing ROI of campaigns achieved for the first time (# of players, # of games played, time played, etc.)
Option 2: QlikView Direct Discovery, The Hybrid Model
What is QlikView Direct Discovery • Combines the associative capabilities of the QlikView in memory dataset with a query model where; The aggregated query result is passed back to a QlikView object without being loaded into the QlikView data model
The result set is still part of the associative experience QlikView In-Memory Data Model
Batch Load
QlikView Application
“IDC Predictions 2012: Competing for 2020,” December 2011
Direct Discovery
How to setup QlikView Direct Discovery • QlikView determines which data resides in-memory and which data is direct discovery data by using the special script syntax “DIRECT SELECT”.
Explicit Direct Discovery Fields • Explicit direct discovery fields are the fields that are loaded into in-memory data model to allow; Associations between in memory data and direct discovery data
Selections on the user interface
Implicit Direct Discovery Fields • Implicit direct discovery fields are only available to QlikView at the metadata level. The actual data values for these fields are not loaded into in-memory data model. They allow; QlikView to determine if an aggregation should be done on the database instead of being processed by QlikView itself Aggregating the data in the database while using the same expression syntax
Two ways for creating Implicit Direct Discovery Fields • Only load the explicit direct discovery fields All of the other fields from the source data table will be implicit direct discovery fields
• Use the keyword “IMPLICIT” on the load script. Once this keyword is used, QlikView will only load the fields listed as IMPLICIT in addition to the explicit direct discovery fields
• This can be used to hide some of the source table fields from the users • AS can be used to rename both implicit (by using IMPLICIT keyword) and explicit fields
Example - 1 The source table has 27 fields
Only 4 fields are loaded in-memory data model as explicit direct discovery fields
The other 23 fields are available as implicit direct discovery fields
QlikView Direct Discovery Benefits • Query data from Big Data repositories on-the-fly • Cache query results in memory for faster recall • Maintain associations among all the data, regardless of where it is located • More up to date information where recency is required
Unique Hybrid Approach • Tapping into Big Data without knowledge of programming • Adding meaning and context to Big Data • Drilling down to granular metrics details when necessary
Ease of Use • Associative data discovery on the big data – Analyze big data with the well-known, everyday use data values Well known data sources are used for selection purposes providing analysis on unfamiliar detailed data values
Selection values are well known data points
Providing analysis on detailed unfamiliar data values
More Comprehensive Enterprise Data Strategies
QLIKVIEW EXPRESSOR
In memory data model
Direct Discovery
Identify: •Common data patterns •High-volume queries •Data sets that are analyzed together •Metric definitions
Big Data
SAP
Big Data Operational SalesForce Data
More Comprehensive Enterprise Data Roadmap: Gain visibility into which enterprise data is being used with big data to build a more comprehensive enterprise data roadmap
Less overhead on the backend • With caching customers have the control over when the queries would run – By leveraging the STALE option with QlikView Direct Discovery, IT can control when QlikView queries the backend and when the query results should be leveraged from the cache
– Example: Customers using Google BigQuery like this option as the users will not run queries on Google BigQuery with every selection – Direct Discovery with caching option would create a more cost effective solution with less overhead on the backend
Leverages the same unique QlikView experience
App Model
Remixability and Reassembly
Social and Collaborative
Insight Everywhere
Mobility
IT
Finance
Production Marketing
Sales
HR
QlikView Direct Discovery Partnerships
Direct Discovery Partnerships…
QlikView Direct Discovery Considerations
QlikView Direct Discovery is not the Swiss Army knife • In memory processing will always be faster than disk based processing • Direct Discovery is a capability that will expand the Business Discovery on big data • Not a solution for scalability issues where the real problem is wrong data model or UI design
Common Questions • Can direct discovery be used with Hadoop? – Yes, with an ODBC driver (HIVE, Cloudera Impala) – Caution on the query performance, hadoop queries may take longer time to return
• Can direct discovery be used with SAP HANA? – Yes, with the data that can be extracted with SAP ODBC driver (SAP analytical views are not supported with SAP ODBC driver) – Limited testing is done
Common Questions • Is there a way to control when QlikView runs queries? – Yes, by using calculation condition option on charts
• Can we use document chaining with direct discovery? – No, not with this release
– There is a work around by programmatically constructing an AJAX URL
• Can we suggest existing customers to replace their largest in-memory fact tables with a direct discovery table? – Yes and No, it depends on the complexity of the in-memory data model and the calculations used on charts from that fact table. Please work with a solution architect in these cases.
Common Questions When to use 100% In-Memory vs. Direct Discovery Choose 100% in-memory when:
Choose Direct Discovery when:
• All the necessary (i.e. relevant and contextual) data can fit inmemory
• Data cannot fit in memory and document chaining is not sufficient
• Users require only aggregated or • Users require access to recordsummary data, i.e. hourly or daily level of detail stored in a large averages, or record-level detail fact table that will not fit in over a limited time period. memory. • Query performance of external source is not satisfactory
• Network bandwidth limits ability to copy data to QlikView server
Summary • QlikView is a Big Data solution – Current product provides “last mile” insight and discovery on very large data sets
• Direct Discovery expands the potential use cases – Not a replacement for in-memory – a way to supplement in-memory with direct access to external data – Understand the use cases and work with pre-sales to determine potential fit – Direct Discovery is not the answer to every question!
• QlikTech is forging new big data partnerships – Teradata , Google BigQuery, Cloudera are first of several key new partnerships
QlikView on Mobile
Key Mobile Features Cross platform HTML5 web apps, robust touch capabilities, secure & manageable •
Intuitive touch interface Includes selections, multi-select, select in charts and graphs, and other interactions and enhancements to provide a complete QlikView experience
•
Cross platform support QlikView HTML5 Ajax client supports iPad and iPhone and Android Tablets and handhelds
•
Build once deploy anywhere A single .qvw can be hosted on accesspoint and delivered across platforms with no additional configuration
•
Server-side security Section access and authentication handled by server, works seamlessly across any client
•
Nothing new to buy Natively part of QlikView server, no additional purchase for mobile, any license works
Single Object Mode Optimized view for small devices •
Tiled Display Allows navigation of individual objects in rows of tiles, with each row representing a tab in the QlikView application
•
Full Screen Object Interactivity Shows an individual objects on the full screen of the device, allowing the user to analyze and make selections
•
Swipe to Switch Objects Allows swiping from side to side to move between full screen objects in an application tab
•
HTML5 Based Works in handheld browser, no additional development needed
Location awareness
• Available now in HTML5 – implemented through a QlikView extension object • Uses a simple JavaScript call to request location from device and pass to QlikView
• A demo, including the extension object, is available on demo.qlikview.com
The need for disconnected access Our customers have asked for the ability to use QlikView on mobile devices when offline. It is important to remember that QlikView offers true data exploration, and that this requires our engine to perform calculations on-thefly. Thus, unlike predefined reports, Business Discovery in QlikView requires a connection to the server.
However we do understand and appreciate the need for some level of offline access. We have recently developed an app that makes it possible to view QlikViews when disconnected.
The challenge is hardware – Unlike reporting based systems, QlikView delivers true business discovery – Business Discovery offers unmatched exploration and flexibility and for the user, but requires significant computing power – QlikView server dynamically filters large sets of data and performs calculations on the fly – today’s mobile devices do not have the processing power or memory to do this – Until device hardware catches up, it’s not possible to ‘run’ a QlikView engine on the mobile device itself – Our strategy is to provide a caching capability that will offer QlikView apps with a set of downloaded views (slices) when offline, and true Business Discovery when online
QlikView for iOS approach •
Server Sync Process − A user designates one or more bookmarks as ‘available offline’ − An additional list box can be specified to provide a more granular set of views − Application ‘slices’ are generated by the server and sent to a user’s device
•
QlikView for iOS App − Native iOS app stores and renders QlikView web apps when offline − All tabs and objects are viewable, with some level of scrolling − QV app allows ‘selection’ of slices (combinations of bookmarks and single dimension) when offline
QlikView for iOS app Online discovery, offline views, the best of both worlds •
Online Business Discovery All the power of QlikView, allows users to answer the unpredictable questions that arise in mobile environments
•
Flexible Offline Views Users can open QlikView apps when offline, browse objects, and select between downloaded views
•
Consistency Across States The same QlikView apps, with the same layout, look and feel, are rendered in both online and offline modes
•
User Defined Views Users can define their own views to take offline, eliminating the reliance on report writers to predict user needs
•
Works with Existing QV Apps Existing QlikView apps work in QlikView for iOS, without the need for additional development.
•
Nothing New to Buy QlikView for iOS is a free download and existing licenses work
QlikView for iOS – Product Highlights • QlikView for iOS - Supports both iPhone and iPad in online mode - Provides offline mode for iPad only - Offers native AccessPoint portal and HTML5 based QlikView apps
- Optimized through a server side sync agent - Utilizes AES 256 bit encryption for on-device data security - Requires QV11 SR2 for offline mode - Existing QV11 server licenses work - Free download from Apple App Store
Sample mobile BI deployments using QlikView
Premium luxury eyewear retailer World’s largest mobile telecommunications company
Deploying QlikView on iPad to agents for showing real-time data on brands, models, stocks, and results
Leading Dutch mortgage broker
Deploying QlikView on iPad for strategic reporting system designed specifically for the CTO
Deployed QlikView on iPad across 180 branches for sales and marketing applications
Major heating and sanitary wholesaler
Specialty food and spices Deploying QlikView on iPad to entire sales organization – with purchasing and manufacturing to follow
Global publishing brand Over 200 QlikView apps available to 10 business units and reporting delivered via QlikView on the iPad
Deployed QlikView on iPad to salesforce for self-service access to improve quality of customer interactions
For mobile demos…
Visit http://mobile.qlikview.com from iPad or Android browser
To download QlikView for iOS…
Search for “QlikView for iOS” in the Apple App Store
QlikView for iOS app Screen Shots
Thank you!
Break
Making A Good Design Great
Jennell McIntire Demo and Best Practices March, 2013
PPT by Michael Anthony, Adam Bellerby, Shima Nakazawa
Agenda Making smart decisions Visualization and Color 10 things to consider when creating UI
QlikView Developer Kit
Making Smart Decisions
‘70s
1997
K.I.S.S. methodology
Keep it simple stupid. or Keep it simple and straightforward.
1 The Grid
2 Hierarchy Using type size to your advantage (less importance here)
Header: It’s important Subhead, less important Body Copy
Legal boilerplate information
3 Contrast
Presentation by Michael Anthony, 2011.
Presentation by Michael Anthony, 2011.
4 Color
My Advice: - Keep it clean, keep it simple
Less
More
Less
More
vs
Visualization & Color
• Colour – Blindness – What our mind sees
• Affordances • Context • Data Ink & Chart Junk
• Left Brain / Right Brain
Colour Blindness • About 8% of males, but only 0.5% of females, are colour blind in some way or another. • Ishihara Test - PseudoIsochromatic Plates
Ishihara Test
16
Ishihara Test
8 (but red green colour blind will see 3!)
Ishihara Test
74 (but red green colour blind see 21!)
Ishihara Test
42
Ishihara Test
7
Colour Palettes • http://www.visibone.com/colorblind/ • http://www.iamcal.com/toys/colors/ • http://colorschemedesigner.com/
• http://www.colourlovers.com/palettes/
Your eyes and colours…..
What you actually see…..
Affordances • The computer user is often at a loss as to what to do. By making certain regions of the screen take on perceptible, distinctive appearances, the designer is communication the design intention. These are designed affordances, messages from designer to user, attracting attention to the set of desired possible actions.
Affordances
Confusing Design / Not Enough Information
Confusing Design / Too Much Information
Context • I consume 12,000 calories a day
Context
Context….So What?….
Data Ink & Chart Junk (Over Engineering)
Data Ink & Chart Junk (Over Engineering)
Left Brain / Right Brain
10 Things to consider on UI
10 things to consider when creating UI 1. Resolution 2. Font 3. Clean and Professional appealing
4. Utilizing the space 5. Makings things obvious 6. Meaningful data display
7. Using icons/graphics 8. Usability vs Cluttering 9. Visualization 10. Eye Candy
1. Resolution • Standard - 1024x768 resolution (projector ready) • Know the prospect’s company standard size • Shorten the height if you can to allow the tool bars and iPad users
2. Font • List boxes - Minimum 10pt, 11pt if you can
• Tables - Minimum 9pt
• Legend – Minimum 8pt
• Avoid Calibri (MS Office 2007 + only) • Intensity of colors
3. Clean and professional appealing Before – Crowded with too much information
3. Clean and professional appealing After – Clean layout
3. Clean and professional appealing Before – Intro sheet
3. Clean and professional appealing After – Keep only the highlight of the information
3. Clean and professional appealing After – About sheet
3. Clean and professional appealing – About sheet
4. Utilizing the space
4. Utilizing the space
4. Utilizing the space
5. Making things more obvious – Before
5. Making things more obvious - After
5. Making things more obvious - After
5. Making things more obvious - Before
5. Making things more obvious - After
5. Making things more obvious - Before
5. Making things more obvious - After
5. Making things more obvious – Before (Help Text)
5. Making things more obvious - After
6. Meaningful data display - Before
6. Meaningful data display - After
7. Using icons/graphics - Before
7. Using icons/graphics - After
7. Using icons/graphics (Data Ink)
8. Usability vs Cluttering - Before
8. Usability vs Cluttering - Before
8. Usability vs Cluttering - After
8. Usability vs Cluttering - After
8. Usability vs Cluttering - Before
8. Usability vs Cluttering - After
9. Visualization – Silent Legend
9. Visualization – Silent Legend
9. Visualization – Silent Legend
10. Eye Candy - Before
10. Eye Candy - After
10. Eye Candy - Before
10. Eye Candy - After
One more thing…
Gorgeous and Genius
Gorgeous and Genius in QlikView way – Photoshop
Gorgeous and Genius in QlikView way - QlikView
Gorgeous and Genius in QlikView way – In Action • Social Media Analysis – straight table • IT Asset Management – help text, usability • Asset Management - Interaction
QlikView Developer Kit • Template.qvw application (samples) • Sheet background templates - Preformatted • Background images
• Image gallery • Design helper goods
Developer Kit – sheet background examples
Developer Kit – sheet background examples
Developer Kit – Image gallery Buttons
Background
Separators
Logos
Objects
Developer Kit – Design Helper goods
Resolution Applier
Grid Applier
If the time allows me to share more…
Design Processes
Executive Dashboard - Before
Executive Dashboard – on Paper xxxx XX %
xxxx XX %
xxxx
xxxx
XX %
XX %
…………………………………… …………………………………… …………………………………… …………………………………… ……………………………………
xxxx XX %
Gauge
xxxx XX %
Design ver.1
Design ver.2
Design ver.3
Design ver.4
Questions?
Thank you
Optimizing Scripts
Tom Mackay Principal Solution Architect March, 2013
Safe Harbor Statement This Presentation contains forward-looking statements, including, but not limited to, statements regarding the value and effectiveness of QlikTech's products, the introduction of product enhancements or additional products and QlikTech's growth, expansion and market leadership, that involve risks, uncertainties, assumptions and other factors which, if they do not materialize or prove correct, could cause QlikTech's results to differ materially from those expressed or implied by such forward-looking statements. All statements, other than statements of historical fact, are statements that could be deemed forward-looking statements, including statements containing the words "predicts," "plan," "expects," "anticipates," "believes," "goal," "target," "estimate," "potential," "may", "will," "might," "could," and similar words. QlikTech intends all such forward-looking statements to be covered by the safe harbor provisions for forward-looking statements contained in Section 21E of the Exchange Act and the Private Securities Litigation Reform Act of 1995. Actual results may differ materially from those projected in such statements due to various factors, including but not limited to: risks and uncertainties inherent in our business; our ability to attract new customers and retain existing customers; our ability to effectively sell, service and support our products; our ability to manage our international operations; our ability to compete effectively; our ability to develop and introduce new products and add-ons or enhancements to existing products; our ability to continue to promote and maintain our brand in a cost-effective manner; our ability to manage growth; our ability to attract and retain key personnel; the scope and validity of intellectual property rights applicable to our products; adverse economic conditions in general and adverse economic conditions specifically affecting the markets in which we operate; and other risks more fully described in QlikTech's publicly available filings with the Securities and Exchange Commission. Past performance is not necessarily indicative of future results. The forwardlooking statements included in this presentation represent QlikTech's views as of the date of this presentation. QlikTech anticipates that subsequent events and developments will cause its views to change. QlikTech undertakes no intention or obligation to update or revise any forward-looking statements, whether as a result of new information, future events or otherwise. These forward-looking statements should not be relied upon as representing QlikTech's views as of any date subsequent to the date of this presentation. This Presentation should be read in conjunction with QlikTech's periodic reports filed with the SEC (SEC Information), including the disclosures therein of certain factors which may affect QlikTech’s future performance. Individual statements appearing in this Presentation are intended to be read in conjunction with and in the context of the complete SEC Information documents in which they appear, rather than as stand-alone statements.
Agenda • Development Framework • Scripting Best Practices • Database Connections • Open Forum – your scripting questions
DEVELOPMENT FRAMEWORK
Development Folder Structure Document folder structure example • Have separate folders for QVW files, QVD files, include files (Database connection strings and other stuff) and other config files Example of source folder structure \Department A or Application XYZ \Applications QlikView application files (qvw) \QVD-files QlikView datafiles (qvd) \Include-files Include files, connection strings and inline tables \Config Configuration files, xls, txt, mdb … \Department B \Applications \QVD-files \Include-files \Config \Shared_folders \Applications \QVD-files \Include-files \Config
QlikView application files (qvw) Common QlikView datafiles (qvd) Include files, connection strings and inline tables Common configuration files, xls, txt, mdb …
Other folder structure examples
Naming standards • Come up with a naming standard: • Use business names for data fields e.g., ‘Customer Number’ instead of CustNo • All abbreviations are a standard type. Get a list of abbreviations and use it (I.E. always use Desc for Description, as specified in the abbreviations list) • Utilize a Prefix – Variables = starts with a ”v”
e.g., vCurrentYear
– Key fields
= starts with a ”%”
e.g., %CustomerKey
– Flag fields
= starts with a ”_”
e.g., _YTDFlag
– Cycle Group = starts with a ”GeographyDrilldown
– Key Field Separator = separated by “_”
e.g., Company&'_'&Nbr as Key
– Temp Fields/Tables = ends with "_tmp”
e.g., Daily_Trans_tmp
SCRIPTING BEST PRACTICES
Overview • Scripting is the environment in which a QlikView Developer will automate the extract, transform and loading process of bringing data in the QlikView environment. • Best practices dictate that using multiple tabs within a script will split out the various parts, enabling a simple view of the information for future development and support. Depending on the complexity of the application, you may have a variety of different script sections. The common parts of a script are below: – Security (usually hidden script)
– Dates and Calendar information – Tab per data source – Tab per key measure/core table
– Tab per lookup table
Preceding Loads • The use of preceding load statements can simplify your script and make it easier to understand. See the code below for an example of this. Table1: LOAD CustNbr as [Customer Number], ProdID as [Product ID], floor(EventTime) as [Event Date], month(EventTime) as [Event Month], year(EventTime) as [Event Year], hour(EventTime) as [Event Hour]; SQL SELECT CustNbr, ProdID, EventTime FROM MyDB; • This will simplify the SQL SELECT statement so that the developer can continue to test/augment the statement using other tools, without the complexity of the QlikView transformations embedded in the same SQL statement.
Scripting Best Practices • Use Autonumber only after development debugging is done. It’s easier to debug fields with actual values in it instead of only being able to use surrogates. See the QlikView Reference Manual if you are not sure how/when to use Autonumber. • Name the concatenate/join statements • When adding script to a QVW, it is best to do a binary load on large data sets then extend the script. Later merge the script after development is near complete. This doesn’t functionally change anything, but it saves time during development.
• Use HidePrefix=%; to allow the enterprise developer to hide key fields and other fields which are seldom used by the designer • Always have the Logfile option turned on if you need to capture loadtime information for debugging purpose
Don't join - use ApplyMap instead • What is ApplyMap()? – Basically it is just a lookup function – it takes one value as input, checks if this value exists in a mapping table and returns the corresponding value from the second column in the mapping table. Think of it as a translation function where the translation is fetched from a pre-defined, two-column table.
• Why use? – Faster and with less chance of errors. With join you can inadvertently create new rows of data. This way assures you will keep source row count unchanged. You can also do multiple fields in one pass.
• Example MapIDtoCountry: Mapping Load CustomerID, Country From Customers ; Orders: Load *, ApplyMap('MapIDtoCountry', CustomerID, null()) as Country From Orders ; From QlikView Design Blog http://community.qlikview.com/blogs/qlikviewdesignblog/2012/09/18/one-favorite-function-applymap
Comments and Formatting • Comment script headings for each tab.
• Comment script sections within a tab with short descriptions
Comments and Formatting - continued • Add change date comments where appropriate.
• Use indentation to make script more readable by developers.
DATABASE CONNECTIONS
Keep Connect Strings Flexible Variables are commonly used to help switch the database settings between environments without hard coding required in the QVW as it moves from environment to environment. See the sample code below for a best practice technique for doing this: SET vEnvironment= ‘PROD’; IF vEnvironment = ‘PROD’ THEN ···ODBC CONNECT TO MyOracleDBProd (XUserID is *****, Xpassword is ****) SET vDBName = ‘MyOracleDBProd‘; ELSEIF vEnvironment = ‘TEST’ THEN ···ODBC CONNECT TO MyOracleDBTest (XUserID is *****, Xpassword is ****) SET vDBName = ‘MyOracleDBTest‘; ELSE
···ODBC CONNECT TO MyOracleDBDev (XUserID is *****, Xpassword is ****) SET vDBName = ‘MyOracleDBDev‘; END IF In your LOAD statements you now reference the vDBName as follows: SQL SELECT * FROM $(vDBName).MySchema.MyTable;
Keep Connect Strings Flexible - continued
• Use environmental settings to set variables: LET vEnvironment = GetRegistryString('HKEY_CURRENT_USER\Environment',‘vEnviron'); LET vUserEnvVar = GetRegistryString('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Control\Session Manager\Environment','QVPath');
• Or simply use relative path include files: $(Include=..\include\server1_database2.txt)
More Best Practices • Only use Qualify * when absolutely necessary. Some developers use Qualify * at the beginning of the script, and only unqualify the keys. This causes a lot of trouble scripting with left join statements, etc. It’s more work than it’s worth in the long run. See the QlikView Reference Manual if you are not sure how/when to use Qualify and Unqualify. • Use variables for path name instead of hard-coding them throughout your script. This reduces maintenance and also provides a simple way to find paths (assuming you put them in the first tab to make it easy to find).
• Drop unnecessary fields and temp tables.
OPEN FORUM – YOUR SCRIPTING QUESTIONS
Closing Remarks Mark Weidling, Regional Director
Thank you! Join us for a networking reception and cocktail hour. Brickside Grille 540 Wellington Square Exton, PA 19341 (3 block walk or drive)