Skip to content

Instantly share code, notes, and snippets.

View mountaindude's full-sized avatar
🏔️
Bringing DevOps to Qlik Sense - one tool at a time. Hello SenseOps!

Göran Sander mountaindude

🏔️
Bringing DevOps to Qlik Sense - one tool at a time. Hello SenseOps!
View GitHub Profile
@mountaindude
mountaindude / date_variables.qvs
Last active January 23, 2018 10:43
QlikView and Qlik Sense date variables
let vStartOf2ndPreviousQuarter = Date(Floor(QuarterStart(Today(), -2)), 'YYYY-MM-DD');
let vStartOf2ndPreviousQuarterNum = Num(Date(Floor(QuarterStart(Today(), -2)), 'YYYY-MM-DD'));
let vStartOfPreviousQuarter = Date(Floor(QuarterStart(Today(), -1)), 'YYYY-MM-DD');
let vStartOfPreviousQuarterNum = Num(Date(Floor(QuarterStart(Today(), -1)), 'YYYY-MM-DD'));
let vStartOfCurrentQuarter = Date(Floor(QuarterStart(Today())), 'YYYY-MM-DD');
let vStartOfCurrentQuarterNum = Num(Date(Floor(QuarterStart(Today())), 'YYYY-MM-DD'));
let vStartOfPreviousMonth = Date(Floor(MonthStart(Today(), -1)), 'YYYY-MM-DD');
@mountaindude
mountaindude / sense_set_max_date
Last active October 24, 2017 09:59
QlikView / Qlik Sense set expression to find largest date
// Use in chart title/subtitle/footer for describing what data is shown in a chart, etc
='Chart contains data up until and including ' & Date(Max({1} Date), 'YYYY-MM-DD')
@mountaindude
mountaindude / sense_create_qvd_load_table
Last active November 17, 2022 23:11
QlikView / Qlik Sense code to create table with all QVDs to load later in a script
// List all QVDs that should be loaded
// In this example the QVDs have a filename format of YYYYMMDD.qvd
//
// The rationale for loading QVDs this way, rather than using something like
// load "/some/path/*.qvd" where date > SomeDate
// is that the latter will have to test the date field of all lines within all QVDs in that directory.
// That might take a long time (and it will become slower over time, if new QVDs are added every day), whereas the method
// used in the code below offers (very close to) constant loading time.
//
For each Filename in 'D:\path\to\qvds'
@mountaindude
mountaindude / sense_set_general
Last active October 11, 2015 04:32
General set analysis syntax
// General syntax for set analysis
{$<Product = Product + {OurProduct1} – {OurProduct2} >}
@mountaindude
mountaindude / sense_set_sum_per_max_date
Last active October 24, 2017 09:56
QlikView / Sense set expression to pick the data for the last available date
// Sum FieldName per the last available date we have data for, withinin the current selection
Sum( {$<DateNum={$(#=Max(DateNum))}>} FieldName)
@mountaindude
mountaindude / sense_us_state_region_division.txt
Created October 7, 2015 20:55
QlikView / Sense code mapping US states to regions and divisions
// Load US high level regions (easter, southern, midwest etc) and divisions
// From https://en.wikipedia.org/wiki/List_of_regions_of_the_United_States
// Could also use https://www.npac.com/the-npac/about/npac-regions if more granularity is needed
US_States:
NoConcatenate Load
[State code],
[US census region],
[US census division]
Inline [
State code,US census region,US census division
@mountaindude
mountaindude / sense_find_max_value_of_field
Created October 11, 2015 05:58
Fastest way of finding max/min values of a field in Sense or QV
// The obvious way of finding the max/min value of a field might something like this:
//
// LOAD max(salesDate) Resident dataTable;
//
// However, if dataTable is very large (hundred of millions of lines or more, with many columns), the above will be
// very slow, as we will end up traversing that entire table.
//
// Instead, the fastest method of achieving the desired result is to load the FieldValue()s.
// We then only look at the values of the salesDate field itself, and not the entire dataTable table.
// Performance gains by many orders of magnitude can be gained by using this method.
@mountaindude
mountaindude / wblGen.bat
Created October 16, 2015 07:41 — forked from nate-untiedt/wblGen.bat
A simple batch file that automatically generates the wblfolder.wbl for your Qlik Sense visualization extension.
@echo off
REM wblGen.bat - v 1.0.0 - 2015-10-09
REM Description:
REM A simple batch file that automatically generates the wblfolder.wbl for your Qlik Sense visualization extension.
REM
REM Author: Nate Untiedt - Analytics8 - [email protected]
REM
REM Credit to: http://stackoverflow.com/a/8387078
setlocal EnableDelayedExpansion
/*
General format:
curl -X POST --data-urlencode 'payload={"channel": "#sense-notification", "username": "webhookbot", "text": "This is posted to #sense-notification and comes from a bot named sensebot.", "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/<....enter_your_key_here....>
Formatting: https://slack.zendesk.com/hc/en-us/articles/202288908-How-can-I-add-formatting-to-my-messages-
More formatting formatting: https://api.slack.com/docs/formatting
Slack API docs: https://api.slack.com/incoming-webhooks
Available emojis: http://www.emoji-cheat-sheet.com/
*/
@mountaindude
mountaindude / app2json.js
Created June 21, 2016 10:56 — forked from mindspank/app2json.js
Sample use of serializeapp and buildapp #serializer #engineapi
var qsocks = require('qsocks')
var serializeApp = require('serializeapp')
var fs = require('fs-extra')
var Promise = require('promise')
function create(docname) {
qsocks.Connect({appname: docname})
.then(function(global) {
return global.openDoc(docname)
})