Josip Nadih
Autor:
Josip Nadih

Specijalist za BI rješenja

Power Query i 'M' jezik - ETL nadohvat ruke?

Excel je u zadnje vrijeme dobio toliko novih dodataka da se čini kao da radi na steroidima. Power Query je jedan u nizu tih dodataka koji bi naprednim Excel korisnicima trebao omogućiti dohvat podataka s različitih vanjskih izvora,  transformacije tih podataka i povezivanje s podacima dostupnim unutar organizacije radi analize i izvještavanja.

Instalacija

Power Query dolazi automatski s Excelom 2013, a može se instalirati i kao add-in za Excel 2010. Ukoliko nije inicijalno uključen, moguće ga je uključiti kroz „File->Options->Add-Ins“:


Slika 1. Dodaci za Excel

Na drop-downu „Manage“ odabere se „COM Add-Ins“ i klikne „Go...“ nakon čega se može uključiti opcija „Microsoft Power Query for Excel“.

Slika 2. Uključivanje Power Query dodatka za Excel

Power Query kao dio Microsoftove vizije samoposlužnog BI-a

Ideja samoposlužnog BI- a (Self-Service BI) je osigurati poslovnim korisnicima alate pomoću kojih mogu obrađivati podatke, raditi analize i kreirati izvještaje, bez čekanja na skupe IT resurse koji bi to radili umjesto njih. Uvođenje centralnog organizacijskog BI rješenja sa skladištem podataka je skup i dugotrajan proces, a poslovni korisnici zbog dinamike posla i tržišta često do podataka moraju doći odmah. Zato je logično da su u zadnjih par godina BI alati prestali biti monopol IT sektora i sve su više namijenjeni poslovnim korisnicima.

Na slijedećoj slici prikazan je skup Power BI alata koji su okosnica Microsoftove vizije samoposlužnog BI-a.

Slika 3. Microsoftova vizija samoposlužnog BI-a

Generalna ideja je preslika postojećih enterprise rješenja koja podrazumijevaju uspostavu skladišta podataka, samo je sve smanjeno do mjere da stane u Excel:

  1. Podaci se dohvaćaju s izvornih sustava i transformiraju pomoću Power Query-a koji ima ulogu ETL (Extract-Transform-Load) alata.
  2. Podaci se zatim pune u Power Pivot model koji glumi skladište podataka.
  3. Podacima pripremljenima u Power Pivot modelu pristupa se pomoću Power View i Power Map dodataka ili klasičnim pivot tablicama i grafovima. U Office365 verziji podaci su dostupni i kroz Q&A pretragu.

Uvod u Power Query

Power Query zbilja jest ETL alat, što znači da osigurava podršku za sva tri aspekta ETL procesa:

  • Dohvat podataka
  • Transformacije
  • Punjenje izvještajnog modela

Dohvat podataka

Power Query za sada podržava dohvat podataka sa slijedećih izvora:

  • Online search
  • Web page
  • File (Excel, CSV, XML, Text, Folder)
  • Database (SQL Server, Azure SQL DB, SQL Server Analysis Services Database, Access, Oracle, IBM DB2, MySQL, PostgreSQL, Sybase IQ, Terradata)
  • Ostalo (SharePoint List, OData feed, Azure Marketplace, HDFS, Azure HDInsight, Azure Blob Storage, Azure Table Storage, Active Directory, Exchange Server, Facebook, SAP BusinessObjects BI Universe, Excel data table)

Slika 4. Podržani izvori podataka

Detaljna lista izvora može se pronaći ovdje: https://support.office.com/en-us/article/Import-data-from-external-data-sources-be4330b3-5356-486c-a168-b68e9e616f5a

Transformacije

Power Query omogućava upite prema izvoru podataka koji zadržava stalnu vezu s izvorom tako da se podaci mogu osvježiti na zahtjev. Upit se sastoji se od niza transformacija koje se slažu u seriju jedna iza druge tako da se čuva povijest svih promjena nad podacima te je u svakom trenutku moguće vratiti se na neku od prethodnih transformacija.

Kroz Power Query sučelje podržane su slijedeće transformacije:

  • Filtriranje kolona i redova
  • Sortiranje
  • Grupiranje
  • Promjena tipa podatka
  • Formatiranje
  • Dodavanje novih kolona
  • Izmjena vrijednosti
  • Split
  • Transpose
  • Pivot/unpivot
  • Fill up/down
  • Merge
  • Append
  • Matematičke funkcije za numeričke podatke
  • Funkcije za manipulaciju teksta
  • Funkcije za datumsko-vremenske podatke

Slika 5. Tansformacije podržane kroz sučelje

Međutim, navedene transformacije su samo mali dio mogućnosti Power Query-a. Za naprednije transformacije potrebno je poznavanje 'M' jezika koji se nalazi „ispod haube“.

Punjenje izvještajnog modela

Nakon dohvata podataka i transformacija, podatke učitavamo ili u Excel worksheet ili u Power Pivot model.

 
Slika 6. Opcije za učitavanje podataka

S obzirom da se inicijalno podaci automatski učitavaju u Excel worksheet, dobro je u procesu razvoja isključiti obje opcije, a nakon dovršetka upita ručno odabrati gdje će se puniti podaci.

 

Slika 7. Odabir inicijalne opcije za učitavanje podataka

Nakon što se podaci učitaju u izvještajni model, dostupni su za prikaz na izvještajima.

'M' jezik

Kod savladavanja novog programskog jezika bitno je upoznati se sa sintaksom, podržanim tipovima podataka, te nekim standardnim funkcionalnostima kao što je iteriranje kroz podatke, uvjetna logika, upravljanje greškama te kreiranje i korištenje funkcija.

Sintaksa

Službeni naziv jezika je Power Query Formula Language, a neformalno je poznat kao 'M' jezik. Jezik je namijenjen naprednim korisnicima Excela kojima nije stran koncept programiranja, odnosno pisanja upita za dohvat podataka. Zamišljen je kao nadogradnja na postojeće formule u Excelu, odnosno može se koristiti za sve što se ne može postići klasičnim Excel formulama. Konceptualno je sličan DAX jeziku s obzirom da se radi o podacima u tabularnom obliku. S obzirom da se rezultati upita pisanog 'M' jezikom u konačnici učitavaju u Power Pivot model, jasno je da ta dva jezika moraju biti kompatibilna.

Jezik je Case Sensitive pa treba pripaziti kako se koriste mala i velika slova. Npr. if naredba mora se pisati malim slovima, inače je Power Query neće prepoznati.

Jezik je konceptualno drugačiji od ostalih jezika (C#, LINQ, T-SQL,...), a zamišljen je kao serija transformacija nad inicijalnim skupom podataka. Svaki korak sadrži jednu ili više transformacija, a u svakom idućem koraku moguće je referenciranje na bilo koji prethodni korak. Izlazna vrijednost prethodnog koraka je u pravilu ulazna vrijednost za idući korak.

Na slijedećoj slici prikazan je isti upit na 4 različita načina. Radi se o dohvatu podataka iz dvije povezane tablice sa sortiranjem podataka.

Slika 8. Usporedba 'M' jezika s ostalim popularnim jezicima

Ako se promotri upit izveden 'M' jezikom, dvije tablice su u prvom koraku povezane, zatim su odabrane kolone za prikaz, a u trećem koraku je skup sortiran. Na slici su istom bojom označeni isti skupovi podataka, pa je vidljivo da je izlaz iz prethodnog koraka ulaz u idući korak u opisanom nizu transformacija. Let dio sadrži transformacije, a in dio sadrži skup koji je izlaz iz upita.

Izvođenje upita

Power Query „gura” posao izvornom sustavu kad god to može (tzv. Query Folding), a ono što ne može izvodi lokalno. Ovo je dobar pristup, zato što se prema izvoru šalje upit sa svim potrebnim filterima tako da se mrežom prenosi najmanji mogući skup podataka. Na idućoj slici je prikazan upit koji sadrži filter koji se prevodi u upit nad bazom podataka.

Slika 9. Query Folding

Tu je i razlog zašto je kompleksno implementirati podršku za različite izvore podataka, s obzirom da Power Query mora naučiti govoriti jezikom izvora podataka. Npr. da bi se omogućio dohvat podataka sa SSAS-a, Power Query je morao naučiti MDX, odnosno DAX jezik.

Query Folding se može izbjeći na način da se skup podataka pozove unutar Table.Buffer() funkcije kao što je prikazano na idućoj slici. U tom slučaju će prema bazi podataka ići upit bez filtera, a filtriranje će se naknadno izvesti u memoriji nad podacima u cache-u.
 

Slika 10. Kontroliranje Query Folding-a korištenjem Table.Buffer() funkcije

Tipovi podataka

Kao i u svakom drugom jeziku, u 'M' jeziku podržani su jednostavni i složeni tipovi podataka.

Podržani su svi standardni jednostavni tipovi podataka kao što se vidi u slijedećoj tablici

Tip podatka Primjer
Null null
Logical true,  false
Number 1,  1.2,  1.2e-3,  #infinity,  #nan
Text „Hello, world!"
Date #date(2013, 3, 8)
Time #time(15, 10, 0)
DateTime #datetime(2013, 3, 8, 15, 10, 0)
DateTimeZone #datetimezone(2013, 3, 8, 15, 10, 0, -8, 0)
Duration #duration(1, 13, 59, 12.34)

Tablica 1. Jednostavni tipovi podataka

Podatke nije nužno eksplicitno deklarirati u kojem slučaju će im se implicitno dodijeliti tip podatka u ovisnosti o sadržaju.

Osim jednostavnih, podržani su i slijedeći složeni tipovi podataka:

Tip podatka Primjer
List { 1, 2, 3, "hello, world" }
Record [ a = 1, b = { 1, 2, 3 }, C2 = true ]
Table #table(
   {"n", "n^2"}, {
      {1, 2},
      {2, 4}
   })
Function MyFunction = ( x, y, optional z ) =>
   if z = null then
      x + y
   else
      (x + y) / z
Type type table [ n = number, #"n^2" = number ]
Binary #binary({0x68, 0x65, 0x6C, 0x6C, 0x6F})

Tablica 2. Složeni tipovi podataka

Primjer kreiranja liste bio bi {1..20} gdje će Power Query generirati listu brojeva od 1 do 20. Kad želimo takav upit pokrenuti u Power Query-u, najprije odabiremo „Blank Query“ opciju kao izvor podataka.

 

Slika 11. Odabir „Blank Query“ opcije

Nakon toga u Formula Bar upisujemo naredbu ={1..20}. Ako se Formula Bar ne prikazuje na sučelju, možemo ga uključiti na „View“ tabu. Ono što upisujemo u Formula Bar predstavlja jedan korak transformacije. Kompleksniji upiti mogu se umjesto u Formula Bar unositi u Advanced Editor koji se također otvara na „View“ tabu.
 
Slika 12. Kreiranje liste

Primjer kreiranja recorda bio bi =[X=1, Y=2] kao što je prikazano na slici.
 

Slika 13. Kreiranje recorda

Moguće je kreirati i kombinaciju, odnosno listu recorda.
 

Slika 14. Kreiranje liste recorda

Navedenu listu recorda možemo pretvoriti odmah u tablicu pomoću naredbe =Table.FromRecords({[X=1, Y=2], [X=3, Y=3]}).
 
Slika 15. Tablica liste recorda

Iteriranje i uvjetna logika

Za iteriranje redaka u skupu (for petlja) koriste se unarne funkcije. Sintaksa podsjeća na lambda expression logiku u C# jeziku. Ovo su primjeri iteriranja, gdje su zadnja dva primjera skraćeni zapisi iste logike iz prvog primjera:
 

Slika 16. Iteriranje kroz redove skupa

Primjer bi bio iteriranje kroz listu recorda s provjerom uvjeta da je kolona X jednaka koloni Y, kao što je prikazano na slijedećoj slici.
 

Slika 17. Primjer upita za iteriranje kroz skup podataka

Upit se sastoji od dvije transformacije - dohvata podataka i logike iteriranja uz provjeru, a izlaz je jedan redak iz skupa koji zadovoljava uvjet X=Y.
 

Slika 18. Rezultat upita za iteriranje kroz skup podataka iz primjera

Uvjetna logika, odnosno logika grananja izvodi se na slijedeći način:
 

Slika 19. Uvjetna logika

Primjer korištenja iteriranja i uvjetne logike zajedno prikazan je u slijedećem upitu.
 

Slika 20. Primjer upita gdje se koristi kombinacija iteriranja i uvjetne logike

Upit će iterirati kroz skup Source i na dodatnoj koloni (izvedenoj pomoću Table.AddColumn() funkcije) prikazati slovčani naziv broja iz X kolone.
 

Slika 21. Rezultat primjera upita gdje se koristi kombinacija iteriranja i uvjetne logike

Upravljanje greškama

Kao svi ozbiljni jezici i 'M' jezik sadrži logiku za prepoznavanje i upravljanje greškama. Za to se koristi naredba try. Primjer sintakse je slijedeći:
 

Slika 22. Try naredba za prepoznavanje i upravljanje greškama

Logika je jasna sama po sebi. U prvom primjeru na prethodnoj slici pokušat će se konvertirati sadržaj kolone X u podatak numeričkog tipa, a ako se desi greška prikazat će se 0. U drugom primjeru će se prikazati detaljni opis greške ukoliko postoji greška u koloni X.

Za eksplicitno podizanje greške koristi se naredba error.
 

Slika 23. Error naredba za podizanje greške

Prvi primjer na prethodnoj slici predstavlja najjednostavnije podizanje greške sa zadanim tekstom poruke. Drugi primjer prikazuje složeni zapis greške koji sadrži više informacija o grešci.

Primjer upita s kombinacijom navedenih naredbi prikazan je na slijedećoj slici.

 

Slika 24. Primjer upita sa try i error naredbama

U navedenom primjeru se radi o nekoliko različitih pokušaja parsiranja teksta u broj. U prvoj transformaciji ne koristi se try naredba tako da će se desiti generička greška prilikom konverzije. U drugoj transformaciji koristimo try naredbu te u slučaju greške prikazujemo zadanu poruku greške. U trećoj transformaciji koristimo try naredbu za presretanje greške te prikazujemo broj 0 umjesto greške. U četvrtoj transformaciji prikazujemo detaljan prikaz greške ako se ona desi kod prve transformacije. Rezultat tog upita prikazan je na slijedećoj slici.
 

Slika 25. Rezultat primjera upita sa try i error naredbama

Funkcije

Bilo koji Power Query upit moguće je pretvoriti u funkciju pomoću () => sintakse na slijedeći način:


 

Slika 26. Power Query upit kao funkcija

U primjeru na slici datumski zapis koji šaljemo kao parametar funkcije će se prikazati u formatu MM/DD/YYYY. Iz primjera je vidljivo i da možemo kombinirati let-in konstrukcije jednu unutar druge, pa tako vanjska predstavlja definiciju funkcije s ulaznim i izlaznim podacima, a unutarnja predstavlja logiku funkcije

Upit unosimo također u Advanced Editor kao što je prikazano na slijedećoj slici.
 

Slika 27. Primjer kreiranja funkcije

Rezultat takvog upita je malo drugačiji od prijašnjih upita. Sada se više ne prikazuje izlazni skup podataka, nego se prikazuje opis definirane funkcije.
 

Slika 28. Rezultat primjera kreiranja funkcije

Funkciji možemo i promijeniti naziv, npr. u fCustomDateFormat kao što je prikazano na slici.

Imamo i mogućnost testiranja kreirane funkcije klikom na gumb „Invoke“ nakon čega se otvara prozor sa slijedeće slike.
 
Slika 29. Korištenje „Invoke“ funkcionalnosti za testiranje funkcije

Nakon što unesemo traženi parametar funkcije, prikazuje se rezultat kao na slijedećoj slici.
  

Slika 30. Rezultat „Invoke“ funkcionalnosti za testiranje funkcije

Sada kada je funkcija kreirana i testirana, možemo je spremiti kroz sučelje. Nakon spremanja, funkcija se prikazuje na panelu „Workbook Queries“.
 

Slika 31. Prikaz spremljene funkcije na panelu „Workbook Queries“

Probajmo sada novokreiranu funkciju primijeniti na nekom skupu podataka. Za potrebe demonstracije spojit ćemo se na AdventureWorks bazu podataka na lokalnoj instanci SQL Servera te otvoriti Power Query upit nad DimCustomer tablicom koja sadrži kolonu s datum rođenja koju ćemo pokušati konvertirati u drugi format pomoću fCustomDateFormat funkcije.
 

Slika 32. Primjer upita nad DimCustomer tablicom u AdventureWorks bazi podataka

Nakon što smo otvorili upit s podacima iz DimCustomer tablice, odabrat ćemo sa sučelja „Add Custom Column“ transformaciju te na prozoru sa slijedeće slike upisati poziv funkcije kao = fCustomDateFormat([BirthDate]).

 

Slika 33. Kreiranje nove kolone FormattedDate s pozivom funkcije fCustomDateFormat

Rezultat je nova kolona s formatiranim datumom rođenja kao što je prikazano na slijedećoj slici.
 

Slika 34. Rezultat korištenja funkcije fCustomDateFormat

Ako želimo vidjeti definiciju i opis bilo koje funkcije (bilo da se radi o internoj ili korisnički definiranoj funkciji) u Formula Bar možemo unijeti naziv funkcije bez parametara.
 

Slika 35. Detaljan opis funkcije i primjer korištenja

Ako u Formula Bar upišemo naredbu =#shared dobit ćemo popis svih internih i korisnički definiranih funkcija.
 

Slika 36. Korištenje #shared naredbe za prikaz svih funkcija

Primjer upotrebe Power Query-a u praksi

Ako poznajemo osnove 'M' jezika i znamo se koristiti funkcijama, pomoću Power Query-a možemo kreirati vrlo složene ETL procese.

Na primjer, mogli bi iskoristiti mogućnosti Power Query-a za kreiranje bogatih poslovnih izvještaja kombinirajući podatke dostupne unutar organizacije s javno dostupnim informacijama na Internetu. Jedan od primjera bio bi dohvat dnevnih tečajnih lista koje možemo koristiti u kalkulacijama s iznosima u valutama da dobijemo iznose u kunama. Drugi primjer bio bi automatski dohvat podataka s web stranica s otvorenim natječajima iz EU fondova. Treći primjer mogao bi biti dohvat podataka o vremenskoj prognozi radi planiranja specifičnih projekata koji ovise o vremenskim prilikama. To je samo nekoliko primjera.

U Hrvatskoj nažalost još uvijek nemamo velik broj javno dostupnih informacija, za razliku od većine zemalja Europske Unije. U većini zemalja EU podaci o radu državne uprave, prirodnim resursima, energetici, zaštiti okoliša i ostalim podacima od javnog interesa lako su dostupni putem weba ili putem javnih web servisa. U Hrvatskoj imamo rijetke primjere objave podataka od javnog interesa kao što je bila objava liste poreznih dužnika. Taj podatak za neku tvrku može imati poslovni značaj ako se želi osigurati da ne ulazi u posao s tvrtkom koja ima visoke porezne dugove. Isto tako, za pojedinca koji traži posao korisna je informacija da li firma u kojoj se zapošljava redovito plaća doprinose svojim zaposlenicima. 

Umjesto da ručno pretražujemo pojedinačne stranice, možemo iskoristiti mogućnosti Power Query-a za kreiranje priručnog ETL-a za dohvat podatka koji su nam zanimljivi.

Kada npr. otvorimo stranicu s listom dužnika Porezne Uprave najprije moramo odabrati da li želimo gledati pravne ili fizičke osobe, nakon čega moramo odabrati županiju koja nas interesira:
 

Slika 37. Odabir županije na početnoj stranici liste dužnika Porezne Uprave

Nakon odabira županije prikazuje se lista dužnika za odabranu županiju koja je razbijena u više stranica.

 

Slika 38. Stranica s listom dužnika za odabranu županiju

Važno je napomenuti da radi tajnosti osobnih podataka ovdje ne prikazujemo čitavu stranicu niti bilo kakve podatke o dužnicima Porezne Uprave. Svakako potičemo poštivanje pravila korištenja koje je Porezna Uprava definirala na svojim stranicama te ne potičemo nikavu daljnju obradu i objavu podataka bez ovlaštenja Porezne Uprave.

Za ovaj eksperiment bitan nam je tehnički strana dohvata podataka s weba, tako da nam je u fokusu URL web stranice s koje dohvaćamo podatke. U URL-u u primjeru je sadržan broj županije (koji je u rasponu od 3002 do 30022 za 21 županiju u RH) i broj stranice (koji može biti od 1 na više). Navedene brojeve možemo iskoristi kako bismo parametrizirali dohvat pojedinačne stranice.

Ako želimo podatke s web stranice učitati u Power Query biramo opciju „From Web“ te na prozoru koje se otvori upišemo URL iz browsera.
 
Slika 39. Učitavanje podataka s web stranice korištenjem Power Query-a

Nakon što kliknemo „OK“, Power Query će dohvatiti sve tabularne podatke s odabrane web stranice te ih ponuditi u panelu „Workbook Queries“ u obliku zasebnih upita.
 
Slika 40. Prikaz rezultata dohvata podataka s web stranice

U ovom slučaju imamo dva upita, a upit „Table 0“ će sadržavati podatke o poreznim dužnicima koji nas zanimaju. Nakon što odaberemo „Edit Query“ i otvorimo Advanced Editor vidjet ćemo upit sa slijedeće slike.
 
Slika 41. Upit za dohvat podataka s web stranice

Prva linija predstavlja dohvat podataka s web stranice prema zadanom URL-u, druga predstavlja odabir upita „Table 0“ s tabularnim podacima o poreznim dužnicima, a treća je automatska konverzija dohvaćenih podataka.

Da bismo mogli dohvaćati podatke na parametrizirani način, potrebno je navedeni upit pretvoriti u funkciju koja će prihvaćati broj županije i broj stranice kao ulazne parametre.

 
Slika 42. Pretvaranje upita za dohvat podataka s web stranice u funkciju

Nakon što kliknemo „Done“ na sučelju će se prikazati definicija kreirane funkcije.
 
Slika 43. Prikaz upita za dohvat podataka s web stranice kao funkcije

Klikom na „Invoke“ možemo testirati dohvat podataka za odabrani broj županije i stranice.
 

 

Slika 44. Odabir ulaznih parametara za poziv funkcije za dohvat podataka s web stranice

Korak dalje mogao bi biti kreiranje liste sa svim županijama pomoću naredbe ={3002...3022} te liste sa svim brojevima stranice pomoću naredbe ={1..100} (ako računamo da nema više od 100 stranica po županiji). Nakon toga za sve kombinacije brojeva u generiranim listama možemo pozivati funkciju kako bi dohvatili podatke za sve županije sa svih stranica u jednu tablicu. Pomoću tako kreiranog upita možemo zatim učitati podatke u Power Pivot model te ih prikazati pomoću Power View ili Power Map dodataka za Excel. Upit će ostati spremljen, tako da se u svakom trenutku mogu osvježiti podaci ako se promijene na web stranici, a korištenjem Table.Buffer() funkcije možemo dohvatiti sve podatke u memoriju tako tako da smanjimo mrežni promet prema stranicama s kojih dohvaćamo podatke.

Power Query vodi računa da se privatni (tajni) podaci ne mogu slučajno kombinirati s javno dostupnim podacima. Zbog toga treba voditi računa o postavkama privatnosti za svaki upit koji se kreria kroz Power Query. Ako želimo Power Query-u prepustiti automatsko kombiniranje javnih i privatnih podataka (što nije preporučljivo), možemo uključiti opciju „Fast Combine“ kao što je prikazano na slijedećoj slici.
  

 
Slika 45. Korištenje opcije „Fast Combine“

Navedeni postupak dohvata podataka s web stranica može se primijeniti na bilo koju web stranicu, npr. ako želimo dohvaćati podatke s Wikipedije ili drugih izvora podataka na Internetu.

Zaključak

Power Query je priručni ETL alat namijenjen naprednim Excel korisnicima koji se bave analizom i obradom podataka u svakodnevnom radu.

Za kreiranje inicijalnog Power Query upita preporučljivo je koristiti funkcionalnosti na sučelju, a zatim se za nadogradnju upita mogu koristiti bogate mogućnosti 'M' jezika za transformaciju podataka. Prilikom pisanja upita potrebno je pripaziti na mala i velika slova s obzirom da je jezik Case Sensitive. Za upravljanje greškama moguće je koristiti try...otherwise i error naredbe.

Power Query upiti izvode se direktno na izvoru podataka (tzv. Query Folding), ali pomoću Table.Buffer() funkcije moguće je privremeno onemogućiti Query Folding, u kojem slučaju će se inicijalno dohvatiti svi podaci u memoriju, a zatim provoditi filtriranje i ostale transofmmacije nad podacima u memoriji.

Prije objave upita, potrebno je paziti da su ispravno postavljene postavke privatnosti tako da se privatni podaci ne bi bez našeg odobrenja kombinirali u upitu s javno dostupnim podacima.

Za automatsko osvježavanje podataka u Excelu (Scheduled Refresh) postoji podrška samo kroz Office365 korištenjem Data Management Gateway i to (za sada) samo za SQL Server i Oracle baze podataka.

Zanimljivo je da se Power Query upiti mogu kombinirati i sa SSIS paketima zahvaljujući komponenti koja je dostupna na Codeplex-u, a zove se SSIS Excel Refresh Task: http://ssisexcelrefresh.codeplex.com/. Prava moć Power Query-a i 'M' jezika došla bi do izražaja kada bi se pojavila serverska verzija ovog alata, što bi mu proširilo upotrebu i na ozbiljnije ETL projekte.

Biti će zanimljvo vidjeti u budućnosti što sve može nastati od ove ideje koja je počela s Power Query-em.

Reference

  1. Power Query Formula Library Specification: http://go.microsoft.com/fwlink/?linkid=235474&clcid=0x409&lc=hr-hr
  2. Teched 2014 prezentacija „Deep Dive into Power Query Formula Language” by Matt Masson, Tessa Palmer: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2014/DBI-B410#fbid= 
  3. Power Query hands-on lab VM: https://vlabs.holsystems.com/vlabs/tena2014?eng=TENA2014&auth=none&src=microsoft.holsystems.com&altadd=true&labid=11887  

Popularne teme
.NET ABAP ADFS Agile Always On Anemic Model Angular Azure Backbone BI Bootstrap building people business inteligence Business Intelligence Change Chrome CI CITCON Claims compile continuous deployment Continuous Integration CSR d3js data visualization DDD dekompozicija dependency injection dinamička forma dinamički parametri dinamički query distribuirani razvoj Domain-Driven design DOP društvena odgovornost edge-based video analytics Eliminating waste enkapsulacija enterprise razvoj softvera ERP ETL Excel FIORI Frontend game Geopackage GPKG GIS Git Groovy heat map HICCUPS Hichert HTML IBCS interoperability IoT IPSO izvještavanje java JavaFX Javascript Jazz Build Engine JBE Jenkins jquery jqueryui jsfiddle JVM Kaizen Kanban KING ICT Kingovci Knockout kvaliteta leadership Lean M language Management Maven Metodologija microservices Microsoft mobile Mobility moć monday game NetWeaver network nodejs OGC OKR open source optimizacija organizacija organizacijska struktura OutOfMemoryError outsourcing paginacija Performance performanse PERT PMI podatkovni skup pouzdanost Power BI Power Map Power Pivot Power Query Power View pretraga proces procjena Product Owner programming proizvod Project manager projektni plan radar Rational Team Concert razvoj tima resize responsive charts REST retrospektiva Rich-Domain model Roko Roić rolling wave planning RTC SAP scale scatterplot chart Scrum scrum team scrum tim service boundaries single responsibility principle Single Sign-On smart metering SoapUI social responsibility softver Software Software Testing Club Spring Boot SQL standard sustav videonadzora svg Team team building team development terminski plan Testing tim timesheet timovi Toggl.com touch transakcijski nadzor tražilica Visual Studio vodstvo vodstvo leadership moć društvena odgovornost DOP social responsibility CSR vođenje projekata WBS Web Zagreb STC

PRIJAVA NA NEWSLETTER

Najnovije novosti iz ICT svijeta