Skip to content

Instantly share code, notes, and snippets.

View ralfbecher's full-sized avatar

Ralf Becher ralfbecher

View GitHub Profile
@ralfbecher
ralfbecher / puppini_bridge_uss_1.sql
Created September 8, 2025 10:09
LLM generated virtual USS SQL View
-- =====================================================================
-- VIRTUAL PUPPINI BRIDGE - UNIFIED STAR SCHEMA (USS)
-- Schema: uss_1
-- Purpose: Create a unified fact table combining all business processes
-- (sales, purchases, shipments, returns) with conformed dimensions
-- Author: Ralfo Becher, OrionBelt
-- Date: 2025
-- =====================================================================
CREATE OR REPLACE VIEW uss_1.v_unified_star_schema AS
@ralfbecher
ralfbecher / orionbelt_1_DML_pg.sql
Created September 8, 2025 10:08
Load Sample Data
SET schema 'orionbelt_1';
-- Clear existing data (if any)
TRUNCATE TABLE clientcomplaints CASCADE;
TRUNCATE TABLE acctbal CASCADE;
TRUNCATE TABLE returns CASCADE;
TRUNCATE TABLE shipments CASCADE;
TRUNCATE TABLE purchases CASCADE;
TRUNCATE TABLE sales CASCADE;
TRUNCATE TABLE calendar CASCADE;
@ralfbecher
ralfbecher / orionbelt_1_DDL_pg.sql
Created September 8, 2025 10:05
Generate Test Data Schema
-- create schema orionbelt_1;
set schema 'orionbelt_1'; -- ensures that you work on this schema, and not on the default public
-- tables summary:
drop table if exists clients cascade;
drop table if exists products cascade;
drop table if exists sales cascade;
drop table if exists shipments cascade;
ʕ◔ϖ◔ʔ
U+0295, U+25D4, U+03D6, U+25D4, U+0294
@ralfbecher
ralfbecher / getSnowflakeQueryID.go
Last active February 6, 2021 09:44
Golang get Snowflake QueryID out of *sql.Rows
import (
"context"
"database/sql"
"database/sql/driver"
"errors"
"reflect"
// ...
sf "github.com/snowflakedb/gosnowflake"
)
@ralfbecher
ralfbecher / mashupEnigmaRequire.js
Created February 6, 2018 16:07
Qlik Sense Mashup with Enigma.js - the official way
var prefix = window.location.pathname.substr(0, window.location.pathname.toLowerCase().lastIndexOf("/extensions") + 1);
var config = {
host: window.location.hostname,
prefix: prefix,
port: window.location.port,
isSecure: window.location.protocol === "https:"
};
require.config({
baseUrl: (config.isSecure ? "https://" : "http://") + config.host + (config.port ? ":" + config.port : "") + config.prefix + "resources"
});
@ralfbecher
ralfbecher / mashupEnigma.js
Created December 29, 2017 15:15
Qlik Sense Mashup bind Enigma before openApp() is called
//
// Bind Enigma before openApp() is called
//
var prefix = window.location.pathname.substr(0, window.location.pathname.toLowerCase().lastIndexOf("/extensions") + 1);
var config = {
host: window.location.hostname,
prefix: prefix,
port: window.location.port,
isSecure: window.location.protocol === "https:"
};
@ralfbecher
ralfbecher / getObjectId.ts
Created December 28, 2017 22:52
Qlik Sense Extension get right Object Id in all Situations (vanilla, master item, story)
function getObjectId(scope: any): Promise<string> {
return new Promise((resolve, reject) => {
try {
let objectId: string = "";
if (scope.layout.sourceObjectId) {
// story
objectId = scope.layout.sourceObjectId;
scope.component.model.app.getObject(objectId)
.then( ( obj: EngineAPI.IGenericObject ) => {
obj.getProperties()
@ralfbecher
ralfbecher / Qlik_master_Calendar_DE.qvs
Created November 16, 2017 08:32
Qlik Master Calendar Script
Kalender:
Load
TempDate AS [Issue Datum],
Year(TempDate) As Jahr,
Month(TempDate) As Monat,
monthname(TempDate) as [Monat Jahr],
Day(TempDate) As Tag,
'Q' & ceil(month(TempDate) / 3) AS Quartal,
'Q' & ceil(month(TempDate) / 3) & ' ' & Year(TempDate) AS [Quartal Jahr],
Dual('KW' & Week(weekstart(TempDate)), Week(weekstart(TempDate))) as Woche,
@ralfbecher
ralfbecher / Qlik_Jira_Time_Formattings.qvs
Created November 15, 2017 16:24
Qlik JIRA Time Formatting
// Format a time like in JIRA: 4w 3d 06:30
// means: 4 weeks + 3 days (1 day = 8 hrs) + 6 hrs + 30 mins
If(Floor(Sum(AllIssues_fields_aggregatetimeoriginalestimate)/28800)/5 >= 1,
Num(Floor(Floor(Sum(AllIssues_fields_aggregatetimeoriginalestimate)/28800)/5), '#0') & 'w ', '') &
Num(Frac(Sum(AllIssues_fields_aggregatetimeoriginalestimate)/28800/5) * 5, '#0') & 'd ' &
Interval(Frac(Sum(AllIssues_fields_aggregatetimeoriginalestimate)/28800)/3, 'hh:mm')