HR – Abwesenheitsverwaltung

Urlaubs- und Krankenstandsverwaltung

Verwalten auch Sie in Zukunft mir unserer Lösung die Mitarbeiterabwesenheiten für Ihr Unternehmen. Im letzten Release 1.1 unterstützen wir die folgenden Basisfunktionalitäten:

  • Arbeitszeitplanverwaltung
  • Berechnung von
    • Urlaubsneuansprüchen
    • Urlaubsaliquotierungen
    • Urlaubsrückstellungen
  • Anwesenheitsverwaltung
  • Sonderabwesenheiten
    • Hochzeit
    • Krankenstand
    • Todesfall
    • Umzug
  • Urlaubsantrag Genehmigungsprozess
    • Antragsteller
    • Prüfung und Freigabe
    • Korrektur
    • Buchung
  • Mitarbeiter Dashboard
  • Hinweissystem
    • Zeitüberschreitungen
    • Krankenstandsmeldung
    • Vertretungsprobleme


myStorage – SelfStorage Business Intelligence Platform on Caravel

A couple of days ago, airbnb – one of the shared economy flag ships – released it’s own BI platform to the open source community. Comparable to solutions like Kibana from Elastic – it’s much more BI than LOG driven. Those of you who know Logstash and Kibana know what I mean! 🙂 For our kind of business Caravel seems like a much better fit! It cares about security and you can build your own global KPI Dictionary to include the same values into several dashboards. Let’s get started!


  1. Install Docker
  2. Install the Docker Image from Caravel (pls. check for latest version)

First steps

After you have started the docker container, pls. ensure that you have the python drivers installed for your database. We decided to run our mysql database from out storage software.

Setup your connection string

Screenshot 2016-04-06 21.48.35

Here you can add a new connection and pass the mysql uri like this:


Add tables to run your queries

Screenshot 2016-04-06 21.51.43

One of the problems you might face, that you need to know which tables are existing. If you aren’t sure about it, you can go back to the database connection uri and click the TEST Button and all tables in the database will be listed on the page.


What Is Eye-Tracking

Eye tracking is the process of using sensors to locate features of the eyes and estimate where someone is looking (point of gaze). Our technology relies on infrared illumination and uses advanced mathematical models to determine the point of gaze. We’ve spent a tremendous amount of effort on making it fully automatic and easy to set up so that it works accurately and reliably in a wide range of environments.Eye tracking can be used in a wide variety of applications typically categorized as active or passive. Active applications involve device control, for example aiming in games, eye activated login or hands-free typing. Passive applications include performance analysis of design, layout and advertising. Other examples are vehicle safety, medical diagnostics and academic research.

Our Service

We optimize your user experience. Back up your design with quantifiable data. We visualize how our UX-Design works using heat maps.
Data captured includes:

  • Thinkaloud voice recording
  • Webcam recording
  • Mouse clicks
  • Pupil diameter data
  • Where users stop scrolling

Global Calendar

Having a well structured calender within your qlikview app allows you to build faster charts and reports. Speak to your internal customers about their report layouts and you’ll see that most people have a common sense on how to combine data over time.

Below you will find a list of fields which we recommend to add it to your default calendar.


Calendar.Datedate(Field)Date in the system format, e.g. 01.01.2016 (DD.MM.YYYY)
Calendar.Yearyear(Field)Date in the format 2016 (YYYY)
Calendar.LYearyear(Field-365)Previous Year in the format 2015 (YYYY)
Calendar.LLYearyear(Field-730)PrePrevious Year in the format 2014 (YYYY)
Calendar.YearTDif(Field1=in year to date full months only in the format (1=true, 0=false)
Calendar.YearCTDif(Field<=today(),1,0)1=in year to date in the format (1=true, 0=false)
Calendar.LYearTDif(Field1=in last year to date full months only in the format (1=true, 0=false)
Calendar.LYearCTDif(Field<=today()-365,1,0)1=in last year to date in the format (1=true, 0=false)
Calendar.LLYearTDif(Field1=in previous last year to date full months only in the format (1=true, 0=false)
Calendar.LLYearCTDif(Field<=today()-720,1,0)1=in previous last year to date in the format (1=true, 0=false)
Calendar.Qtrquartername(Field)Date in the Format 1.QTR 2016
Calendar.LQtrquartername(Field-365)Date in the Format 1.QTR 2015
Calendar.LLQtrquartername(Field-720)Date in the Format 1.QTR 2014
Calendar.QtrTDif(quarter(Field1=quarter to last full month
Calendar.LYQtrTDif(quarter(Field1=quarter to previous year last full month
Calendar.LLYQtrTDif(quarter(Field1=quarter to previous previous year last full month
Calendar.MonthLmonthname(Field)Date in the format May 2016 (ddd YYYY)

extended dataloader


QlikView Generating Year over Year Targets

From time to time you have to create budget figures upon a percentage change compared to the last year. This can be a little bit difficult, depending on the complexity of the KPI. The following example is build upon a pre-cleaned datamart and shows how you create the monthly figures for you budget.

As you can see the real magic here is done in the FOR-TO-Loop, here it shows a cumulated budget figure, but you can easily change to a mothly figure!


Load multiple GoogleAnalytics-Properties at once w/ dynamic metrics in QlikView

Our objective is to load GoogleAnalytics data, seperated in months with a dynamic metric, fixed dimensions and for multiple Properties. To achieve this we’re using the QlikView addon: QVSource. The script contains the following (important) variables:

  • gAppId = googleAnalytics PropertyId
  • vMetric  = the dynamic metric, we want to load (note that this script will only load 1 metric per request)

First of all we need to define our googleAppIds within a static table.

Now we have to loop through our table:


As our loadGoogleId Sub is still missing we have to add this here:

Here is just a loop to address every single month within our prefered timespan. (one step for every month, as we want one table/file for every month). We call LoadGoogle in every step and store it afterwards.

LoadGoogle is the Sub, where the true magic happens. You have to build your LOADing-Statement with the QVSource-GoogleAnalyitcsConnector / DataFromQueryURI. Now you have to modify your string like the one below (just add the variables where they are required):


Loading Google Analytics with QlikView

qlik view first quick chart


To keep reports compatible, the following dimensions are alway loaded as a minimum:

  • ga:browser
  • ga:deviceCategory
  • ga:pagePath
  • ga:date

Add Measures

Now as the dimensions are set, you can add up to 5 measures to be grouped by and displayed.

QlikView Load Script

If you don’t have QVSource running, you can use the query explorer and the url with the (1hour) token included to load the data like this. Then I recommend that you put this token into a variable to which will be passed to the script while you wanna load it.


If you have multiple sites you wanna load, just pack the hole load script into a sub and pass over at least the parameter:

  • gAppId

Then use this variable in your load url.

At least you can use an inline table to define your “websites” and then loop through all you sites:


QlikView Script Sub for Dataloading

Sorry, typo in the path variable, now fixed! Enjoy the script!

Project Documentation with github and markdown

A very important step while implementing more or less complex solutions is the availability of a documentation. While I’m really a fan of version based work, I will describe a quick an simple way, how I document my projects with github and markdown.

For all of you who don’t know markdown, it’s a simple “what you mean is what you get” syntax which can be compared to LATEX. (If you don’t know this eather, pls. give a search engine a visit) 😉

So what you acutally need is:

  • GitHub Account
  • TextEditor (min.) if you are the more “what you see is what you get” person, you’ll find a lot of editors in the web, even online based