Zobrazují se příspěvky se štítkemAzure. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemAzure. Zobrazit všechny příspěvky

27. října 2016

Power BI on premises v SSRS

Pár týdnů zpátky na konferenci Microsoft Ignite byla zveřejněna informace, že tým Reporting Services již intenzivně pracuje na integraci Power BI do Reporting Services. Nečekal jsem ale, že dostaneme první verzi k otestování pár týdnů na to. Právě probíhá PASS Summit a přišla další skvělá novinka. Technické preview k vyzkoušení pro veřejnost již ve čtvrtek 27.10. Není proto náhoda, že je skoro půlnoc a já sedím u počítače testuji a píšu článek :)
Verze k otestování je zatím k dispozici pouze jako virtuálka v Azure, ale verze ke stažení bude snad následovat brzy. Do vyhledávače stačí napsat SQL Server Reporting Services Technical Preview.
Obsahuje předinstalované Reporting Services, Power BI Desktop, Databázový engine a Analytické služby. Zatím je možno publikovat Power BI repoty právě s živým připojením proti Analytickým službám a to jak v Multidimenzionálním, tak tabulárním provedení.
Tvorba virtuální stanice je relativně jednoduchá (pokud vymyslíte dostatečně složité heslo). Nejlevnější konfigurace, která mi byla nabídnuta přijde na cca 120 Eur za měsíce, takže nezapomeňte po testování vypnout.
Nicméně až to naběhne, můžete rovnou napsat do prohlížeče http:\\localhost\reports a jste v Report Manageru. Tam vás přivítají, mimo jiné, 3 ukázkové reporty Power BI reporty. nebo si v desktopu můžete vytvořit vlastní přes živé připojení na lokální SSAS. Vytvořil jsem si soubor Test. Tento vypublikoval do galerie Report Manageru.
Otvírám report přímo v prohlížeči a nekecali... Funguje to :)
Report se otevřel a reaguje.
Napadá mě, zda budou vidět Power BI reporty a statistiky z nih v databázi Report Serveru v tabulkách Catalog a Execution Log. Jsou tu a v Execution logu vidím jak dlouho se načítal dataset v milisekundách z SSAS.
Závěr
Power BI se vám líbí, ale nemůžete je používat, protože je to cloud? Svítá na lepší časy. Integrace s SSRS vypadá slibně. Zatím jen připojení na analytické služby, ale přibydou další. Otázky jsou, jestli se dočkají i uživatelé standardní edice. Jakou formou bude probíhat update SSRS, pokud máte už SQL 2016 bez Power BI a celkově jakým způsobem budou poskytovány aktualizace. Tohle jsou ale otázky na jiné dny. Dnes jsem si radost udělal, tak si ji těmito otázkami nebudu kazit a půjdu raději spát :)


18. dubna 2016

Záznam přednášky - Global Azure Bootcamp - Logic Apps - Automatizace procesů a workflow bez řádku kódu

Co dělat jiného při sobotním dopoledni, když jste blázen do IT a technologií Microsoft, než si střihnout přednášku na Global Azure Bootcampu v Brně. Akce probíhala celosvětově na různých místech a byla zaměřená na cloudové technologie. Já jsem si zvolil téma lehce netradiční. Překvapilo by mě, pokud jste o Logic Apps už slyšeli a ještě více by mě překvapilo, kdybyste je používali.:) S tímto nastavením jsem šel na přednášku a mé očekávání bylo naplněno. Pro 99,99% účastníků to byl s Logic Apps první kontakt. Ukazoval jsem, jak bez nutnosti cokoliv programovat stáhnout tweety do Azure SQL Databáze, prohnat nad nimi Machine Learningový Algoritmus pro vyhodnocení sentimentu a ve finále data vizualizovat pomocí Power BI.
Jednalo se o aplikaci, kterou jsem použil u nás v Dixonu, když jsem se snažil namotivovat management, aby si nainstaloval dopředu Power BI mobilní aplikaci.
Záznam přednášky najdete zde
http://www.wug.cz/zaznamy/309-Global-Azure-Bootcamp-2016-Azure-Logic-Apps-Automatizace-procesu-a-workflow-bez-radku-kodu

24. února 2016

Temporal tables

Co jsou temporal tables? Jedná se o novinku, která bude dostupná v SQL Serveru 2016 a je také k dispozici v Azure SQL Database jako Preview funkce. O co u temporal tables jde? Jednoduše o verzování dat. Umožňují vytáhnout, jak data vypadaly ve specifickém okamžiku v čase.
Možné aplikace
Verzování veškerých datových změn v tabulce
Správa SCD (Slowly changing dimension) pro podporu rozhodování
Možnost vrátit se k předchozí verzi záznamu/ů při nechtěné změně
Počítání trendů
Z pohledu BI bych vypíchnul první dva body, audit veškerých změn a SCD vestavěným mechanismem bez nutnosti programovat vlastní logiku při vkládání. Tzn pokud chcete SCD 2 na tabulce, kde je temporal table zapnutá. Děláte jen update stávajících záznamů. O SCD se starají skřítci SeTo a Samo :)
Jak to funguje
Kažá temporal table obsahuje dva explicitně definované sloupce typu datetime2, které vy ale neplníte. Při tvorbě tabulky tvoříte referencovanou tabulku pro udržování historie pokud je záznam v temporal table upraven, nebo smazán. Tato tabulka je tvořena buď uživatelem, nebo si systém vytvoří tabulku defaultní.
Příklad
Tvorba temporal table
CREATE TABLE dbo.MY_CUSTOMERS
(
       [CustomerID] [int] IDENTITY(1,1) PRIMARY KEY CLUSTERED NOT NULL,
       [NameStyle] [dbo].[NameStyle] NOT NULL,
       [Title] [nvarchar](8) NULL,
       [FirstName] [dbo].[Name] NOT NULL,
       [MiddleName] [dbo].[Name] NULL,
       [LastName] [dbo].[Name] NOT NULL,
       [Suffix] [nvarchar](10) NULL,
       [CompanyName] [nvarchar](128) NULL,
       [SalesPerson] [nvarchar](256) NULL,
       [EmailAddress] [nvarchar](50) NULL,
       [Phone] [dbo].[Phone] NULL,
       [ValidFrom] datetime2 (2) GENERATED ALWAYS AS ROW START,
       [ValidTo] datetime2 (2) GENERATED ALWAYS AS ROW END,
       PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
 ) 
 WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.MY_CUSTOMERS_HISTORY));

Všimněte si elementů u sloupců validfrom a valito, které se budou starat o udržování historie. System versioning on a název history table se postará o zbytek. Dále jsem naplnil data do tabulky z DB AdventurWorksLT, která je k dispozici v Azure SQL Database jako demo. Po nějaké době jsem změnil emailové adresy vybraných zákazníků. Pokud chci vytáhnout veškeré verze záznamů pro zákazníka 21, mohu to udělat následujícím dotazem
DECLARE @DATEFROM datetime = getdate()-1
DECLARE @DATETO datetime = getdate()
SELECT * FROM dbo.MY_CUSTOMERS
    FOR SYSTEM_TIME 
       FROM @DATEFROM TO @DATETO
WHERE CustomerID = 21
ORDER BY ValidFrom DESC;
For system time from to definuje časové okno ze kterého mě zajímají verze. Pokud mě zajímá poslední verze záznamu k datumu a času
DECLARE @DATETO datetime = getdate()
SELECT * FROM dbo.MY_CUSTOMERS
    FOR SYSTEM_TIME AS OF  @DATETO
WHERE CustomerID = 21
ORDER BY ValidFrom DESC;

Závěr

Temporal tables jsou zajímavá funkce, která zjednodušuje práci s historizací záznamů. Pokud by Vás zajímalo více informací, můžete kouknout na oficiální dokumentaci zde https://msdn.microsoft.com/en-IN/library/dn935015.aspx

12. února 2016

Azure SQL Data Warehouse

Dnešní článek bude trochu z jiného soudku. Už od SQL Server 2008 R2 Microsoft nabízí svoji appliance pro masivní paralelní zpracování dat (MPP Masive Parallel Processing). Řešení pro ty největší datové sklady se jmenuje Parallel Data Warehouse (PDW). Pár let zpátky začal Microsoft říkat řešení Analalytics Platform System, protože k PDW přidal i možnost dotazovat se na nestrukturovaná data z Hadoop regionu díky Polybase... Pokud jsem Vás nezabil tímto úvdoníkem, tak už nevím čím. PDW  není dvakrát cenově dostupná hračka. V České republice vím o jediné společnosti, která PDW má k dispozici (a to hned dvakrát). Touto společností je můj zaměstnavatel Dixons Carphone plc. (v Česku zastoupena Dixons Retails SSC s.r.o.). PDW se budu věnovat v samostatném článku někdy v budoucnu. Jako lektor jsem se bavil se spoustou firem a poslouchal, jak řeší jestli koupit BI edici, nebo spíš skončí na Standardu protože se licencuje na jádra. Enterprise edice by byla krásná, ale že je moc drahá a budou muset vystačit se Standardem i když funkce budou chybět.
No a teď si představte rack (nebo třeba 6ti rack), do kterého narvete několik Enterprise SQL Serverů s redundancí, control nodem a že to spolu všechno mluví a parallelně zpracovává dotazy. Megaželezo + Megalicence = Megapálka :) 1,340 milionu dolarů za full rack jednorázová pořizovací cena. A kdo z Vás tohle má... :) V porovnání s konkurencí ale stále vychází PDW od Microsoftu levně viz tabulka na straně 4 (bez Hadoop regionu) http://www.valueprism.com/resources/whitepaper/APS%20TCO%20Whitepaper%20-%20FINAL.pdf
A pak zjednodušeně řečeno inženýři z Microsoftu PDW zvirtualizovali a vznikl Azure SQL Data Warehouse. Tímto se dostupnost MPP platformy výrazně posouvá blíž běžným firmám. Nastalo mi ideální období 2 dny do expirace kreditu z MSDN předplatného, tak se jde testovat.
Tvorba DW
V novém Azure Portálu – New – Data + Storage – SQL Data Warehouse
Povinné údaje
Název databáze. Posuvník týkající se výkonnosti podobný toho co je dostupný u Azure SQL Database. Výběr serveru, pokud zatím žádný vytvořený nemáte, vytvoří se nový. Resource group a subscription, ze kterého budete platit. Mezi databázemi je možno vybrat ukázkovou a koho to tu máme? Ejhle Adventure Works. To už jsem někde viděl. Jen doufám, že největší faktová tabulka bude mít víc jak 60 000 řádků. Tvorba databáze trvá několik málo minut.

Po tvorbě databáze se zobrazí následující obrazovka.
Monitor aktivity co se děje uprostřed. Důležitá nastavení včetně connection stringu. Nahoře ovládací lišta a po pravici podpora. Chcete-li se připojit z klientských nástrojů, můžete použít buď Visual Studio, nebo PowerBI. Management studio se připojí, ale neumí číst správně metadata.
Připojuji se přes visual Studio a koukám na velikost faktové tabulky FactResellerSales. Nezklamala a má svých klasických 60855 záznamů. Tady výkon neotestuji, takže si data trochu namnožím. Faktová tabulka obsahuje data po dnech, tak si je rozpočítám na minuty. Nechce se mi s tím moc trápit, tak to čísla rozpočítám na minuty rovnoměrně.
Pokud chci psát dotaz proti Azure SQL Data Warehouse musím zvolit správnou šablonu a sice .dsql stejně jako v případě PDW. Jedná se o zkratku Distributed SQL. V Azure SQL Data Warehouse máme 2 typy tabulek, replikované a distribuované. Replikované tabulky obsahují stejná data na každém uzlu. Hodí se například pro dimenze. Distribuované tabulky jsou naopak rozbity na několik serverů podle hashovacího klíče. Hodí se pro velké faktové tabulky. Na rozdíl od klasického partitioningu se hodí distribuovat tabulku podle klíče, který umožní rozprostření na výpočetní nody rovnoměrně. Nejde nám o to, abychom eliminovaly nehodící se partitions při čtení, ale naopak chceme rovnoměrně číst na několika uzlech zaráz.
Z výkonového pohledu je výhodnější než vytvořit tabulku a do ní provést insert udělat to příkazem v principu podobným SELECT * INTO tabulka FROM DATA až na to, že SELECT INTO zde nefunguje. Používá se zde syntaxe tzv. CTAS (CREATE TABLE AS SELECT). Dokonce je v mnoha případech rychlejší tabulku dropnout a znovu vytvořit příkazem CTAS, než do ní dělat insert/update.
Nová faktová tabulka z původní Fact Reseller Sales by se dala vytvořit příkazem
create table fact_reseller_sales
with (Distribution = hash(productKey))
as
with dim_hour as (
select top 24 hour_key = row_number() over(order by name)-1 from sys.columns
),
dim_minute as (
select top 60 minute_key = row_number() over(order by name)-1 from sys.columns
)
SELECT
f.*
,time = cast(cast(h.hour_key as varchar(2)) + ':' + cast(m.minute_key as varchar(2)) as time)
,Sales = salesamount /24
FROM factresellersales f
CROSS JOIN dim_hour h
CROSS JOIN dim_minute m
Dalo by se to napsat i krásněji? Možná ano, ale je půl desáté večer a já jsem si řekl, že prostě ne :)
Všimněte si několika specifik. Zaprvé Create Table As Select.
Zadruhé distribution = hash(Hashovací klíč). Pro replikovanou tabulku byste použili
create table fact_reseller_sales
with (Distribution = round_robin )
as
Za třetí na klasickém SQL Serveru bych použil nejspíš rekurzivní CTE (Common Table Expression), zde nemohu, protože mi to král bramborových lidí nedovolí (DSQL).
Protože jsem škrt a šetřil jsem na posuvníku (článek dopisuji po zahájení nového účtovacího měsíce) s výkonem (SCALE 100 DWU), tvorba tabulky trvala 7:21  a obsahuje 87 631 200 řádků. To bude na pokusy s výkonem trochu lepší.
To byl zápis, co čtení? První co zkusím je počet řádků a celková suma.
SELECT
Rows_count = count(*)
,Sales = sum(f.sales)
FROM Fact_reseller_sales f
Výstup získávám za 16 vteřin. Zkouším dotaz, kde využiji hashovací klíč.
SELECT
c.englishproductcategoryname
,s.englishproductsubcategoryname
,p.modelname
,p.englishproductname
,Rows_count = count(*)
,Sales = sum(f.sales)
FROM Fact_reseller_sales f
JOIN dimproduct p
ON p.productkey = f.productkey
JOIN dimproductsubcategory s
ON p.productsubcategorykey = s.productsubcategorykey
JOIN dimproductcategory c
ON c.productcategorykey = s.productcategorykey
group by
c.englishproductcategoryname
,s.englishproductsubcategoryname
,p.modelname
,p.englishproductname
Dotaz pouštím opakovaně a měním DTU, abych porovnal cenu a výkon :) DTU je zkratka Database Transaction Unit, která nám vypovídá o poměru, kolik transakcí za vteřinu by měl server zvládnout. Přesná definice DTU v angličtině https://azure.microsoft.com/en-gb/documentation/articles/sql-database-service-tiers/#understanding-dtus  Škálování trvá v řádu jednotek minut. Výkonové srovnání můžete shlédnout v přehledné tabulce. Zkušenost je taková, že po změně škálování, případně stopu/startu databáze je Azure SQL Data Warehouse nějaký líný. Když běží nějakou dobu, je to diametrálně lepší. Proto dva časy v tabulce
DWU
Eur/h
Čas 1.
Čas 2.
100
0.66

1:15
200
1.32
4:28
0:28
500
3.31
5:15
0:02
1000
6.61
2:40
0:02

Závěr:
Azure SQL Data Warehouse přináší možnosti MPP masám díky Azure. Za zásadní výhodu považuji možnost Warehouse pausnout a tím pádem neplatit za výkon. Posuvník se škálováním je také super, potřebujete masivní výkon pro zpracování dat ve špičce? Ohulíte DTU posuvník, až systém není využíván, stáhnete na DTU 100 nebo úplně zastavíte. Tohle s normálním SQL Serverem a koneckonců ani PDW dost dobře nejde. Tam většinou musíte škálovat hardware podle špičkového výkonu, kterého chcete dosáhnout.

1. září 2015

Data Mining vs. Machine Learning

Minulý týden mi vyšel článek na MSDN na téma Data Mining vs. Machine Learning. Jedná se o lehce modifikovanou verzi předchozího článku a Azure Machine Learningu. Porovnávám obě technologie a popisuji, v čem je ML jiný, než DM

http://blogs.msdn.com/b/vyvojari/archive/2015/08/27/data-mining-vs-machine-learning.aspx

24. července 2015

Úvod do Azure Machine Learning

Součástí Analytických služeb SQL Serveru je již po několik verzí Data Mining (od 2000). Azure Machine Learning je na druhou stranu pro veřejnost poměrně nová záležitost (z preview verze se překlenulo na začátku roku 2015). Nabízí se tedy několik otázek. Jaký je vlastně rozdíl mezi Data Miningem a Machine Learningem. Není Azure Machine Learning jen nový marketingový název pro starý Data Mining převlečený do Azure? K čemu by tahle technologie mohla být dobrá a bude mi k něčemu i když nejsem datový věděc?
Na začátek definice obou pojmů
Data Mining (DM)
Data Mining je pokročilá statistická analýza dat, která zkoumá historická data za účelem objevení korelací a vazeb mezi daty.
Data Miningová funkčnost je součástí analytických služeb SQL Serveru. Tedy pro tvorbu řešení budete potřebovat SSAS, Visual Studio pro design řešení a Management Studio pro psaní DMX (Data Mining eXtensions)
Machine Learning (ML)
Machine Learning je definován jako technologie, které používá prediktivní modely, které se učí z dat za účelem předvídat budoucí chování, výstupy, trendy. Jiná definice by mohla znít, že se jedná o: “Počítačové systémy, které se stávají chytřejší na základě předchozí zkušenosti.” Kde zkušenost může být brána z historických dat, nebo lidských vstupů.
Rozdílem v definici mezi DM a ML tedy je, že ML se systém může učit z předchozí zkušenosti. Hranice mezi tím, co je DM a ML je ale tenká :)
Kde se ML používá a jaké jsou scénáře použití
·        Prodej a marketing
o   forecasting prodejů
o   forecasting poptávky
o   cílená reklama
·        Finance a risk management
·        Segmentace zákazníků
·        Doporučení zboží
·        Fraud detection (odhalování podvodů)
·        Předpověd počasí
·        Analýza lidské řeči
o   sentiment analýza spokojenosti zákazníků
o   detekece SPAMu
·        a další.
Azure ML klíčové vlastnosti
Azure Machine learning je služba v MS Azure. Oproti SQL Server Data Miningu nebudeme potřebovat SQL Server, stačí nám Azure Subscription a libovolný internetový prohlížeč. Při tvorbě řešení se začíná tvorbou Machine Learning Workspace v Azure Portálu https://manage.windowsazure.com/ Když ML Workspace hotov, můžeme se přihlásit do ML Studia, které najdeme na adrese https://studio.azureml.net Zde se tvoří Experimenty. Experiment můžeme tvořit nad demo daty, nebo daty vlastními. Data můžeme importovat jako csv, textový soubor, načíst z databáze, nebo jiných podporovaných zdrojů. Proces analýzy dat máme možnost ovlivnit od začátku do konce transformacemi, nebo i vlastními skripty (R nebo Python). Experiment se dá vypublikovat jako webová služba a k této můžeme přistupovat z externích aplikací.
Tvorba experimentu
Když klikneme na velké plusko, vyskočí na nás možnost tvořit Experimenty, Datasety, Moduly. Když se podíváme na Experimenty je tu solidní základna ukázek. Najdeme zde například aplikace jako je sentiment analýza tweetů (o sentiment analýze přes PowerBI jsem psal zde http://www.neoral.cz/2015/06/sentiment-analyza-pres-powerbi.html), příklady z analýzy retailu, fraud detection, doporučení restaurací, filmů a mnohé další. Pokud by Vám pro inspiraci nestačily ukázky od Microsoftu, můžete kouknout do galerie na tvorbu komunity https://gallery.azureml.net/ Pro milovníky vína je zde například „Wine quality predictor“ Takže až při dlouhých teplých letních večerech nebudete vědět co dělat, můžete se věnovat Machine Learningu :)
Když zvolíme prázdný experiment, tvorba experimentu připomíná SQL Server Integration Services. Do prázdné plochy experimentu můžeme drag & drop  přetahovat datasety, transformace, moduly a tyto mezi sebou spojovat a konfigurovat.
Na závěr jde vypublikovat experiment jako webovou službu s vstupními a výstupními parametry. Webovou službu poté může volat aplikace a tímto ML využívat.
Experiment “Movie recommender”
Zde stručně textově popisuji proces, který taktéž můžete shlédnout na videu https://youtu.be/5AAxrjbVtCg

Ve vyhledávači můžeme najít zdrojový dataset Movie ratings, který obsahuje 4 sloupce UserID, MovieID, Rating a Timestamp. Už nyní by se dalo jít na transformaci Project Columns, kde vybereme jen relevantní sloupce UserID, MovieID a Rating, které očekává Train Matchbox Recommender. Dalo by se ale dohledat i název filmu z druhého datasetu IMDB Movie Titles přes „Join“. Transformace Split rozdělí dataset na část pro trénování a část pro testování přesnosti, aby se ML mohl učit. Score Matchbox Recomender slouží k samotnému doporučení. Zde se dá zvolit kolik filmů chceme minimálně  a maximálně doporučit.

Závěr
Machine Learning posouvá hranice a hlavně dostupnost analýzy zase o něco dál. Jako největší přednosti Machine Learningu spatřuji. Nenáročnost – jediné co potřebujete pro tvorbu jsou Azure subscription a internetový prohlížeč. Rozšiřitelnost – můžete vystačit s “klikacími” komponentami, ale můžete psát pro analýzy dat vlastní skripty. Svůj výtvor můžete vystavit jako webovou službu a tuto volat z aplikace. Tedy pokud jste datový věděc, umíte psát R skripty a vytvořit řešení , které bude užitečné pro širší spektrum lidí. Vystavte svůj výtvor a vydělejte na něm peníze. Nejste datový věděc? Přesto můžete používat výtvory jiných. To dělá z Machine Learningu technologii pro všechny.
Další zdroje informací