May 20, 2014

QlikView vs Tableau

Qlikview is a vastly more capable tool for a technical person, the scripting language is amazingly powerful. Qlikview is a brilliant tool with amazing ETL capabilities and flexibility.

Associative Experience, In-Memory, Compression of data, on the fly - calculations and huge customziation in terms of pixel perfect dashboards. create layering of your charts and images, actions, navigation controls and show/hide options and several more. Decoding of other person work is easier.

1) The ease with which self-service BI can be achieved via a small scale trail deployment

2) The SQL scripting which is easy to understand by end-users

3) The Pivot functionality, because it is so very familiar to the high-end Excel users and allows for an extremely fast adoption rate

4) It can be deployed with limited training to end-users

a. For the “developer” end-user with a bit of previous VBA skills it is a breeze to create new applications

b. For the pure end-user the interaction with the data is amazingly simple

c. The “cloning” capability allows users to develop different views of the same data until they have the right dashboard look and feel

5) The fact that it brings a DASHBOARD to the end-users in mere minutes with the minimum of installation time and development time

6) Nothing beats showing a sales team the results of 3 million invoice records on a normal i3 pc with 2 GB ram (took +/- 10 minutes to develop for zero to a full blown dashboard that showed revenue by location, by customer, by salesman, by product, by year over a 3 year time axis)



Tableau has found its sweet-spot as an agile discovery tool that analysts use to create and share insights. It is also the tool of choice for rapid prototyping of dashboards. Tableau - Purely self service BI and Visualization tool. Drag and drop feature. VizQL and Show Me Options. It teaches you visualization. Visualization is much better here. But decoding of other person work is difficult.

1.From the rapid development and data discovery point of view Tableau is surpassing. You need only a db connection and you are on the way.

2.Tableau is very flexible with its data import. Tableau's data blending capability is very intuitive. This capability is useful when you have data spread across several different sources that has not gone through ETL processes. This is a problem analysts deal with routinely. They are unable to wait for the data warehouse team to develop ETL processes to provide the physical models they need to build an analysis.

3. The Tableau interface is Excel-like and has a low barrier to entry for analysts that are used to working in Excel.

4.Building a dashboard by mashing up visualizations in a Tableau worksheet is extremely simple. Users are able to build good presentation-quality dashboards in a very short time.

5.Tableau's annotations capabilities and its time and geographical intelligence are key differentiators.

6. Tableau has overcome limitations in data sharing with the introduction of a Data Server in Tableau 7.0. The Data server allows Data sources and extracts to be shared securely and opens up interesting new possibilities.

If your application can take advantage of the above characteristics, consider Tableau.

May 07, 2014

QlikView: Client Access Licenses

QlikView: Client Access Licenses
To connect to a QlikView Server (QVS), each client needs a Client Access License (CAL). The CALs are tied to the server serial number.

CAL Types:
1. Named User CAL
A Named User CAL is assigned to a unique and identified user who may access as
many QlikView documents as may reside on the server or server cluster to which
the Named User CAL is assigned. A Named User CAL may be transferred to
another user pursuant to the software licensing agreement, in which case there is
a 24-hour quarantine before the Named User CAL can be transferred to another
user. There is no time limit for how long a user assigned a Named User CAL can
access a QlikView document.

2. Document CAL
A Document CAL is assigned to a unique and identified user who may access only the one
QlikView document to which the Document CAL is assigned. Multiple
Document CALs can be assigned to a particular user. For example, if a user
connects to two QlikView documents, the user will have been assigned two
Document CALs. A Document CAL may be transferred to another user pursuant
to the software licensing agreement, in which case there is a 24-hour quarantine
before the Document CAL can be transferred to another user. There is no time
limit for how long a user assigned a Document CAL can access the QlikView
document to which the CAL is assigned.


3. Session CAL
A Session CAL allows any user, identified or anonymous/unidentified, on one
QlikView client to access as many QlikView documents as may reside on the
server or server cluster to which the Session CAL is assigned for a minimum
period of 15 minutes. For Session CALs, the QlikView client refers to each
unique instance of the QlikView client (for example, the AJAX client, QlikView
Desktop, or the Internet Explorer plugin) on the user’s machine. The minimum
session time for a Session CAL is 15 minutes, which means that sessions that
end in less than 15 minutes will still consume the session until the 15 minute
mark is passed; those which terminate after 15 minutes will consume their actual
session length.

4. Usage CAL
A Usage CAL allows any user, identified or anonymous/unidentified, to access
only one QlikView document, residing on the server or server cluster to which
the Usage CAL is assigned, from one client (for example, the AJAX client,
QlikView Desktop, or the Internet Explorer plugin) for a time period of 60
minutes per 28-day period. If a user exceeds the 60 minute time limitation, the
user will have consumed two Usage CALs without any warning being given to
the user. Every 28 days, the Usage CAL is refreshed and the user may once again
view a new QlikView document for 60 minutes, using the same Usage CAL.
Usage CALs are continuously recharged (at a pace corresponding to 1/28 of the
total number of Usage CALs assigned to the QlikView Server per day)

License Lease
A QlikView client that does not have a registered license is allowed to connect to QlikView Server and
“borrow” a license, so that the user can work offline for a period of 30 days. The QlikView client must
then make an authenticated log on (not anonymous) and obtain a Named User CAL. Each time QlikView
is started, QlikView tries to contact QlikView Server and renew the license lease. If the client cannot
reach the server after 30 days, the license lease expires.
A license lease can only be used with QlikView Desktop and the Internet Explorer plugin. This means a
license lease cannot be obtained when using an AJAX client.



In QlikView 10 open QEMC and follow this tree : tab System -> Licences -> then click on QlikView Server -> Client Access Licences -> Assigned Cals -> then type username and click on "Assign Cal" button and then Say Apply at the bottom. Now he/she can access the application from access point .



SQL Server Stored Procedure runs slow sometimes

Sometimes, you might face a very weird issue with a stored procedure on SQL Server 2008 R2. Sometimes, about once every month, some procedures that becomes very slow, takes about 6sec to run instead of a few milliseconds.

Possible reasons:

When the sp is compiled, it is cached and this cache is reused every time I call it, and this cached version gets corrupted for some reason.

Possible Solutions:


1. When you first compile a stored procedure, its execution plan gets cached.

If the sproc has parameters whose definitions can significantly change the contained query's execution plan like index scans vs seeks, the stored procedure's cached plan may not work best for all parameter definitions.

One way to avoid this is to include a RECOMPILE clause with the CREATE PROCEDURE statement.

Example:

CREATE PROCEDURE SP
@myParam
WITH RECOMPILE
AS
BEGIN
 -- SP Body
END
GO


By doing this, a new plan will be generated each time the procedure is called. If recompile time < time lost by its using the wrong cached plan, this is worth implementing. In your case, it will also save you the time/planning required to manually recompile this procedure every time you notice it is executing slowly.

2. Update your statistics:

EXEC sp_updatestats

sp_updatestats can trigger a recompile of stored procedures or other compiled code. However, sp_updatestats might not cause a recompile, if only one query plan is possible for the tables referenced and the indexes on them. A recompilation would be unnecessary in these cases even if statistics are updated.

3. Parameter sniffing
Parameter sniffing is a technique the SQL Server optimizer uses to try to figure out parameter values/ranges so it can choose the best execution plan for your query. In some instances SQL Server does a poor job at parameter sniffing & doesn't pick the best execution plan for the query.
With Parameter sniffing Sql Server uses to optimze the query execution plan for a stored procedure. When you first call the SP, Sql Server looks at the given parameter values of your call and decides which indices to use based on the parameter values.


May 05, 2014

BI: In-Memory or Live Reporting?

BI: In-Memory or Live Reporting?

In-Memory Data is Better than Live reporting in following scenarios.
1.When your database is too slow for interactive analytics
2.When you need to take load off a transactional database
Even though data is fast but some calcalation specifically Analytics can slow down the speed and need to load off a transactional database.
3.When you need to be offline
Bringing data into memory, you can work offine on database.


A Live, Direct Data Connection is better in following scenarios.
1. Database itself is fast and you just need to render the data. Avoid data silos and ensure a single point of truth by pointing your
analyses at a single, optimized database.
2.When you need up-to-the minute data
If things are changing so fast that you need to see them in real-time.

Creating DataFrames from CSV in Apache Spark

 from pyspark.sql import SparkSession spark = SparkSession.builder.appName("CSV Example").getOrCreate() sc = spark.sparkContext Sp...