#QlikSzort – zmiana języka interfejsu Qlik Sense

Zapraszam na kolejny techniczny odcinek z Qlik szortów 🤠. Zmiana języka interfejsu Qlik Sense oraz QlikView.

Materiały powiązane:

Support Qlik – kody języków: https://support.qlik.com/articles/000019301

Aplikacja, którą prezentuję w tle nagrania, została opublikowana przez Patrica Nordströma (Director Product Management w Qliku) na stronie: https://community.qlik.com/t5/Documents/Top-10-Viz-tips-QlikWorld-2021-part-V/ta-p/1787570

#QlikSzort – funkcja DISTINCT

Po dłuższej przerwie wracam do technicznych Qlik szortów 🤠. Zapraszam na kwadransik z Qlikiem przy kawce ☕️. Dzisiaj z funkcją “DISTINCT” 🐥.

Materiały powiązane:

Music: https://freemusicarchive.org/music/Scott_Holmes/rock-background-music/basic-rock

Henric o Count distinct: https://community.qlik.com/t5/Qlik-Design-Blog/A-Myth-About-Count-distinct/ba-p/1476053

Test Roba – wielowątkowość: https://www.youtube.com/watch?v=8OklNn2VSs0

Support Qlika – jak zrobić distinct ale tylko w jednej tabeli: https://support.qlik.com/articles/000005541

To co nam daje radość, a firmie pieniądze

Tym razem dzielę się refleksją związaną po części z Qlikiem ale również szerzej ze światem BI.

Piszę z perspektywy osoby, która spędziła ponad 10 lat we wdrożeniach i rozwoju systemów Business Intelligence (dalej BI) dla kilkudziesięciu firm. Specyfika tych rozwiązań wymusza niejako na nas, developerach, nie tylko posiadania umiejętności programowania przepływu danych, rozumienia ich, układania w model połączeń, przygotowywania właściwych analiz, ale przede wszystkim ścisłej współpracy ze stroną odbiorcy, czyli z biznesem. Świat BI jest na tyle fajny (słowo użyte świadomie), że nie możemy ograniczyć naszej pracy tylko do jednego obszaru. Zazwyczaj taki “BI developer” to wdrożeniowy lub firmowy “magik”. Jego praca powinna przynosić pozytywny feedback. To daje nam poczucie, że tworzymy wartość. Fantastyczna sprawa, kiedy poniedziałkowy poranek nie dołuje, ale motywuje. Tyle słowem wstępu do podzielenia się pewną obserwacją, właśnie z poziomu mojej/naszej pracy BI-owej. W poniższej refleksji używam słowa RAPORT w odniesieniu do Excela, Power Pointa czy Worda a słowo ANALIZY do interaktywnych dashboardów w systemie Power BI, Qlik, Tableau itp.

BI DZIAŁA ?
Pierwszym odczuwalnym zwrotem z inwestycji w system BI powinna być redukcja czasu przygotowania raportów i analiz przez pracowników firmy. A czas to pieniądz.

Praktyka pokazuje jednak, że nie zawsze firmy skutecznie automatyzują proces pracy swoich pracowników, mimo wdrożonego systemu klasy BI.

Możliwe przyczyny:

PRACOWNICY NIE CHCĄ
Strach przed przeniesieniem swojego zakresu obowiązków, mniejsze poczucie stabilności zatrudnienia czy też utrzymanie statusu quo (tylko ona/on wie jak to przygotować = wąskie gardło, wspominał o tym ostatnio Przemek Blicharski na swoim profilu). Sytuacja zdarza się szczególnie w większych firmach. Pracownicy często przygotowują swoje raporty na podstawie istniejących już w systemie BI analiz. Wiedzą, że można to zautomatyzować by system wygenerował złożone z kilku innych zestawienie. Nie informują o tym swoich przełożonych bądź osoby odpowiedzialne za zarządzanie platformą BI. Od czasu do czasu spotykam się z sytuacją, gdy ktoś na “callu” prezentuje takie zestawienie przygotowywane ręcznie (w Excelu lub Power Poincie). Przyjmijmy czas przygotowania takiego raportu: 1 h / tydzień. W roku dla np. 40 aktywnych tygodni pracy (bez urlopu, świąt), będzie to 40 h. Dla pracodawcy jest to tydzień w roku do zastąpienie przez często minutowe przeładowanie danych. Tydzień pracownika na inne zadanie. Przy działach typu Controlling, Sprzedaż, Finanse – takie szacunki należałoby pomnożyć o wiele raportów.

Rola dobrego managera – niwelować wąskie gardła dostępu do danych zlecając automatyzację. Praktyczna wskazówka: prawie każde tworzenie Excela może być zautomatyzowane ! 🙂

PRACOWNICY NIE WIEDZĄ
Nieświadomość możliwości automatyzacji. Przykład z życia: pracownicy firmy produkcyjnej w każdym tygodniu informują mailowo inną grupę kilkudziesięciu dostawców o zmianach w systemie wraz z wygenerowaniem listy części, których ta zmiana dotyczy. Poświęcają wiele czasu by z systemów wyeksportować do Exceli zestawienia części. Muszą również znaleźć adresy mailowe do dostawców i ręcznie do każdego z osobna wysłać maila. Proces planowany jest na rok. Firma ma wdrożony system Qlik NPrinting do automatycznej wysyłki maili wraz z personalizacją załączników. Jednak pracownicy tego nie wiedzą. Developer BI przypadkiem (!) zauważa, że taka sytuacja ma miejsce. Widzi, że mamy tutaj obszar powtarzalności, są dane, potrafimy przygotować szablon Excelowy – czyli jest realna szansa automatyzacji. Czas przygotowania procesu od strony systemu BI to ok. 4 h. Efekt? Wiele wdzięczności i zaoszczędzonego czasu.

Rola dobrego managera – zdobywać informacje o istniejących możliwościach budowania procesu automatyzacji, rozpoznawać obszary ich użycia w swoim zespole.

DŁUGI PROCES
Walczymy o redukcję czasu pracownika, a drugiej strony samo wdrożenie nowej analizy może być czasochłonne z perspektywy pracy specjalisty BI. Da się to “odczuć” przy dużych wdrożeniach, przy skomplikowanej analizie wymagań, bądź przy braku wszystkich potrzebnych źródeł danych. Czas wdrożenia automatyzacji się wydłuża. Szczególnie kiedy w firmie brakuje ludzi do takiej pracy. Polski rynek BI również jest dość skromny w zasoby specjalistów (Power BI – troszkę więcej niż skromnie, Qlik – skromnie, Tableau – bardzo skromnie). Warto się szkolić, a kiedy trzeba skorzystać z usług firm posiadających takich konsultantów.

Rola dobrego managera – wyszukiwać w swoich zespołach “key userów”, którzy technicznie mogliby wspierać proces tworzenia nowych analiz. Języki skryptowe używane przez BI to nie języki skomplikowanego programowania. Tego da się nauczyć! 🙂 Taka osoba, która posiądzie wiedzę techniczną, wnosi również wiedzę biznesową, której my developerzy w takim stopniu nie posiadamy.

BE/BI MOTIVATED !
Dla mnie jako konsultanta/developera BI nic nie przynosi większego poczucia radości z wykonanej pracy jak pozytywny feedback od strony odbiorcy. Szczególnie jeśli udało się zautomatyzować złożony i czasochłonny proces przygotowania w kierunku analizy “LIVE” przez przeglądarkę z dostępem dla wielu osób. To “WOW” daje nam POWER! 🙂 My czekamy na takie zadania! Chcemy je realizować!

Jesteś managerem i masz takie osoby w swoim zasięgu? Wykorzystaj ten potencjał! Zwrot w postaci dodatkowego czasu dla pracowników to szybko odczuwalny zysk dla firmy.

Qlik World 10-12.05.2021

Koniecznie zarejestruj się na kolejną coroczną konfernecję Qlika! Rejestracja jest darmowa. Czeka na Ciebie ponad 100 sesji w tematach oferty Qlika, Clouda, integracji. Przejrzyj agendę (zachęcam by wyfiltrować interesujące parametry po lewej stronie):

https://www.qlik.com/qlikworld/sessions/breakout-sessions#/

Na tej liście znajdziesz również warsztaty. Jednak zapisać możesz się na nie tylko do 7 maja!

 

 

Zaproszenie na szkolenia – Piotr Bratek

Wynegocjowaliśmy z Mateuszem Morawieckim kolejny mniejszy-większy lockdown.
A skoro już siedzimy w domach, to zamiast przechodzić czwarty raz Wiedźmina i oglądać Netflixa (tym razem od tyłu), można zainwestować w siebie.

Skuteczniej niż w Bitcoina – bo cenna wiedza i umiejętności zostaną a kurs bitcoina … nie znosi umiaru.
Zapraszam na szkolenia QlikView i Qlik Sense.

QlikView
30-31.03.2021 – Wizualizacja Danych
21-23.03.2021 – Modelowanie Danych

Qlik Sense
07-08.04.2021 – Wizualizacja Danych
26-28.04.2021 – Modelowanie Danych

Piotr Bratek
# najbardziej doświadczony trener Qlik w Europie Środkowej
500 dni szkoleniowych w Europie,
650 dni doświadczenia szkleniowego na czterech kontynentach od São Paulo przez NYC, Toronto, Londyn aż po Stalową Wolę … Moskwę i Manillę
# historycznie jedyny oficjalny trener Qlik Eastern Europe (Top 5 globalnego rankingu trenerów Qlik w ostatnich dwóch latach)
# Miłośnik rolad, klusek i modrej kapusty, nieudolnie usiłujący policzyć w Qliku jak poskromić trzyletnie bliźniaczki

Zyskaj wyróżnienie Qlik Luminary – wnioski do 28.02.2021

Jeśli jesteś fanem Qlika, promujesz jego rozwiązania, pracujesz na co dzień z systemem QlikView lub Qlik Sense – czytaj dalej ! Do 28 lutego firma Qlik zbiera aplikacje kandydatów do tytułu Qlik Luminary. Od tego roku zostały zmienione zasady przydzielania do tej grupy. Otóż, zgłoszeń mogą dokonywać jedynie KLIENCI Qlika. Konsultanci, partnerzy zostali wykluczeni. Zatem miejsca się zwolniły. Zachęcam do wysyłania zgłoszeń! Co możesz zyskać? Prestiżowy tytuł (tylko 50 osób na świecie przez rok może się nim posługiwać), którego w Polsce nikt jeszcze nie osiągnął. Poza tym: darmowy dostęp do platformy szkoleniowej, do licencji, bezpośredni kontakt z wewnętrznymi zespołami projektowymi Qlika, spotkania z pozostałymi Luminaries (więcej informacji: https://www.qlik.com/us/solutions/customers/qlik-luminaries ).

Zgłoszenia: https://www.qlik.com/blog/2021-qlik-luminary-applications-are-now-open

Przełom roku, a numer tygodnia, zmienna BrokenWeeks

Wraz z nowym rokiem przychodzi pierwsze wyzwanie Qlikowe dot. numeru tygodnia. Jeśli w twoim skrypcie lub wyrażeniu obliczeniowym używasz fukncji Week(Date) sprawdź koniecznie dwie zmienne wpływające na właściwą numerację tygodnia. Są one definiowane na początku skryptu:

SET FirstWeekDay=0;  // pierwszy dzień tygodnia to PONIEDZIAŁEK
SET BrokenWeeks=0;  //gdy 0 numeruje od pierwszego całego tygodnia w nowym roku

Powyższe ustawienie prawdpodobnie będzie prawidłowe w większości przypadków.

Zobacz różnicę:

Allegro parser + rest connector

Cześć,

Bardzo często w naszej pracy zachodzi potrzeba porównywania cen różnych produktów. Możemy parsować strony konkurencji (nie mogłem znaleźć jasnej informacji czy jest to legalne :), możemy zapłacić za dane ceneo.pl lub poszukać danych dostępnych za pomocą API. Ciekawym źródłem jest allegro.pl. API systemu umożliwia odpytanie frazą na przykład eanem wyszukiwarkę (również opisy) i zwrócenie najniżej lub najwyżej ceny. Interfejs jest darmowy, a limity odpytań wysokie.

Oto co musimy wykonać aby sięgnąć po dane (autor wpisu zakłada, że czytelnik posiada Qlik + Rest zainstalowany na komputerze):

  1. Zakładamy konto na https://apps.developer.allegro.pl/
  2. Tworzy własną aplikację – interesują nas wartości Client ID i Secret ID
  3. https://allegro.pl/auth/oauth/token?grant_type=client_credentials Wywołujemy w przeglądarce adres: logujemy się danymi z punktu 2.
  4. Voila! jeżeli wszystko przebiegło sprawnie przeglądarka zwróci nam odpowiedź zawierającą token wymagany do pobrania danych.

Wyposażeni w token zbudujmy zapytanie GET, które zwróci nam frazę Qlikview w wyszukiwarce allegro i poda nam tylko najniższą cenę.

https://api.allegro.pl/offers/listing?&phrase=Qlikview&limit=1&searchMode=DESCRIPTIONS&sort=+price

Rzućmy okiem na konfigurację Rest Connector w Qlikview:

Wklejamy zbudowany przez nas URL, dodajemy nagłówki – parametry po lewej stronie nagłówka są stałe, jak również “bearer” – token jest zmienną o określony czasie trwania (dokumentacja). Jeżeli test połączenia przebiega prawidłowo możemy przejrzeć dane.

Efekt:

Teraz pozostaje tylko:

  1. Zdefiniować zmienną i zamienić frazę Qlikview na przykład na ean: LET vEAN$(i) = FieldValue(‘ean’, $(i));
  2. Wcześniej dodać For i = 1 to FieldValueCount(‘ean’)
  3. No i nasze produkty: LOAD ean, ceny_z_mojego_erpa, FROM [C:\DANE.xlsx];
  4. Wklejamy ‘$(vEAN$(i))’ as ean tak aby w wynikowej tabeli mieć cenę i ean.
  5. Na koniec next i;

Właśnie zbudowaliśmy porównywarkę cen produktów z cenami na allegro przy użyciu rest w Qlikview. Do ideału można w wyżej wymienionym kodzie uwzględnić odnowienie tokena poprzez odpytanie POST, zastosowanie interwałów aby ominąć ewentualne limity odpytań oraz uwzględnienie na wypadek 503 (znalazłem na githubie tickety, że czasem tak się zdarza i nie jest to rozwiązane dalej po stronie allegro). W przypadku niezgodnego token odpowiedź 401.

Przydatne linki:

https://developer.allegro.pl/documentation/

Podsumowanie 2020 – nowości w Qlik Sense, webinarium 10.12.2020

Zaproszenie of firmy Data Wizards na webinar w dniu 10.12.2020, godz. 13:00

Rok 2020 pełen był nowości w świecie Qlika. Być może w natłoku conf-calli nie udało Ci się ich wszystkich wychwycić, ale nic straconego! Jak zawsze możesz na nas liczyć! Zapraszamy na nasze subiektywne podsumowanie tego, co wydarzyło się w Qliku w 2020 roku. Na webinarium pokażemy m.in.:
– Nowe licencje: Qlik Sense SaaS.
– Proaktywne alertowanie o danych: Qlik Alerting.
– Natural Language Processing – Siri w Qliku?
– Program AMP – czyli co zrobić z QlikView?
– Nowa rodzina produktów z zakresu integracji danych: Qlik Data Integration.

A może nawet uchylimy rąbka tajemnicy i powiemy, jakich nowości możemy spodziewać się w roku 2021? Więc nie czekaj i już dziś zarejestruj się webinar.

ZAPISZ SIĘ

Nagranie – I Qlik meetup w Wiedniu 19.10.2020

Moi drodzy Qlikowcy. 19 października odbył się pierwszy Qlikowy meetup z Wiednia w formie online. Znakomici prelegneci w ciekawe prezentacje. Każdy znajdzie coś dla siebie. Dwa główne omawiane tematy to: Nowości w Qlik Sense oraz zarządzanie Master Itemsami (prezentacja trzech rozszerzeń).

Nagranie: https://www.youtube.com/watch?v=x5j56EZRQq8

Materiały: https://drive.google.com/drive/folders/1a5klN8fRGf8EQjfEadTlGKK3rSarqcSj?usp=sharing

Set analysis ” czy ‘ ?

Czy kiedykolwiek mieliście tak, że kopiując fragment kodu, który używaliście od lat po prostu przestał Wam działać?

Ostatnio Klient poprosił o poprawki w używanych miarach sprzedaży. Klasyka. Ponieważ robicie to od lat, macie już pewnie sprawdzony kod. Jedni z Was deweloperzy opierają miary o kalendarz, inni definiuje zmienne. W moim przypadku stosuje rozwiązanie Steve – schludne i klarowne. 

let vMaxDate  = ‘=max(Date)’;

let vMaxDay   = ‘=day(max(Date))’;

let vMaxMonth  = ‘=month(max(Date))’;

let vMaxYear  = ‘=max(Year)’;

Ok, banał. Tutaj poza cudami z datą nic nie ma prawa się zepsuć. Unikamy timestapów, korzystamy z floor i num. Przechodzimy do miary.

SUM({<Year={‘$(vPriorMonthYear)’},Month={‘$(vPriorMonth)’},[Day]={‘<=$(vMaxDay)’},DOK={’10’,’5′,’10010′,’50’},Date=,”Rok-Miesiąc”=>}[Sale])

Miara powyższa ma policzyć nic innego jak sumę kolumny Sale dla konkretnych typów dokumentu w miesiącu poprzednim do konkretnego dnia. Czyli od 1 do 23 lipca 2020. Zatem dlaczego suma wynosi 0? (nie, to nie kwestia danych). Co w tej mierze jest złego?

Dodam, że w dolnym rogu ekranu widać wynik przypisania zmiennych i wszystko jest ok – dalej wielkie zero.

Ok, metodą cięcia miary dochodzę do wniosku, że jeżeli pozbędę się [Day]={‘<=$(vMaxDay)’  otrzymuję wynik.

Ok, to może inny zapis? [Day]={‘$(vMaxDay)’  kasuje znak <=, hmm otrzymuję sprzedaż za konkretny dzień. Ciekawe…

Pomyliłem się w składni?

Szybki telefon do przyjaciela. “Piotrek, a zamień ‘ na ” “”  czyli [Day]={“=$(vMaxDay)”}, voila działa! 

First Day on the Internet Kid | Know Your Meme

Zatem ‘ i ” są tak samo interpretowane w Qlik czy nie?

Przekopując community natrafiłem na wpisy:

https://community.qlik.com/t5/New-to-Qlik-Sense/Set-analysis-difference-between-single-quote-and-double-quote/m-p/1339053

https://community.qlik.com/t5/Qlik-Sense-App-Development/Dual-Single-Versus-Double-Quotes/td-p/71709

Dzięki, że przeczytałeś do końca! 🙂