Tabular vs. Multidimensional in
Analysis Services
Alberto Ferrari
@FerrariAlberto
www.sqlbi.com
May 23, 2015
#sqlsatTorino
#sqlsat400
Sponsors
May 23, 2015
#sqlsatTorino
#sqlsat400
Organizers
May 23, 2015
#sqlsatTorino
#sqlsat400
Alberto Ferrari




Consulente e trainer su Business Intelligence
Autore di libri
SSAS Maestro – MVP – MCP
www.sqlbi.com
May 23, 2015
#sqlsatTorino
#sqlsat400
Agenda





Funzionalità a confronto
Prestazioni e hardware
Scalabilità e manutenibilità
Compatibilità
Licensing
May 23, 2015
#sqlsatTorino
#sqlsat400
UDM esordì nel 2005
 C’era una volta UDM
 Unified Dimensional Model
 Un solo tool di modellazione per la BI
Un modello per domarli
May 23, 2015
#sqlsatTorino
#sqlsat400
2012: BI Semantic Model
 UDM non c’è più, lunga vita a BISM
 Business Intelligence Semantic Model
 Un solo tool per la modellazione BI
 Diviso in due tipologie
 Tabular
 Multidimensional
 Due tecniche di modellazione
 Nello stesso prodotto
May 23, 2015
#sqlsatTorino
#sqlsat400
BI Semantic Model: Vision
Third-party
applications
Databases
May 23, 2015
Reporting
Services
Power
View
LOB Applications
Excel
Files
PowerPivot
OData Feeds
SharePoint
Insights
Cloud Services
#sqlsatTorino
#sqlsat400
Tabular: il nuovo modello
 Parte della vision di BISM
 Super veloce con xVelocity in-memory
engine
 Altissimo rapporto di compressione dei dati
 Basato sul modello relazionale
 Programmabile con DAX
 A confronto con OLAP
 Quasi sempre più veloce. Molto più veloce.
 Più facile da imparare e usare
May 23, 2015
#sqlsatTorino
#sqlsat400
È l’approccio giusto?
Sono xVelocity,
il tuo nuovo motore
Non avrai altro motore al
di fuori di me
May 23, 2015
#sqlsatTorino
#sqlsat400
O è meglio investigare?
Ora ho due motori
Quali sono le loro capacità?
Quando dovrei scegliere uno
piuttosto che l’altro?
May 23, 2015
#sqlsatTorino
#sqlsat400
Cosa è xVelocity in-memory?




In-memory database
Basato su metodologia relazionale
Column oriented database
Dati memorizzati in formato compresso
 Anche in memoria
 Dati su disco sono solo un backup
May 23, 2015
#sqlsatTorino
#sqlsat400
Row Storage Layout
Tabella Customers
Niente di nuovo. Questo è lo standard dei database che hanno
implementato un layout di tabelle su disco sin dagli anni ’70.
Tecnicamente prende il nome di “row store”
May 23, 2015
#sqlsatTorino
#sqlsat400
Column Storage Layout
Customers Table
ID
Name
Address
City
State
Bal Due
1
Bob
…
…
…
3,000
2
Sue
…
…
…
3
Ann
…
…
4
Jim
…
5
Liz
6
ID
Name
Address
City
State
Bal Due
500
1
Bob
…
…
…
3,000
…
1,700
2
Sue
…
…
…
500
…
…
1,500
3
Ann
…
…
…
1,700
…
…
…
0
4
Jim
…
…
…
1,500
Dave
…
…
…
9,000
5
Liz
…
…
…
0
7
Sue
…
…
…
1,010
6
Dave
…
…
…
9,000
8
Bob
…
…
…
50
7
Sue
…
…
…
1,010
9
Jim
…
…
…
1,300
8
Bob
…
…
…
50
9
Jim
…
…
…
1,300
Tabelle memorizzate “per colonna”, tutti i valori di una
colonna in un solo oggetto
May 23, 2015
#sqlsatTorino
#sqlsat400
Column vs Row Storage
 Column Storage
 Accesso veloce a singole colonne
 Tempo necessario per materializzare righe
 Si paga in CPU per ridurre I/O
 Row Storage
 Accesso veloce a singole righe
 Non è necessaria nessuna materializzazione
 Si paga in I/O per ridurre CPU
May 23, 2015
#sqlsatTorino
#sqlsat400
Run Length Encoding (RLE)
Quarter
ProdID
Price
Quarter
Start
Count
Price
Q1
1
100
Q1
1
310
100
Q1
1
120
Q2
311
290
Q1
1
315
…
…
…
Q1
1
100
Q1
1
315
Q1
2
198
…
2
450
Q2
2
320
Q2
…
320
315
100
315
ProdID
Start
Count
1
1
5
2
6
3
…
…
…
51
5
150
56
3
256
Q2
1
150
1
Q2
1
256
2
Q2
1
450
Q2
1
192
Q2
1
184
Q2
2
310
Q2
2
251
…
2
266
May 23, 2015
120
198
450
320
320
450
Compressione RLE applicata solo
se la dimensione dei dati
compressi è inferiore all’originale
192
184
310
251
266
#sqlsatTorino
#sqlsat400
Dictionary Encoding
Quarter
Quarter
Q1
0
Q1
0
Q1
0
Q1
0
Q2
1
Q2
1
…
…
Q2
1
Q3
Q3
DISTINCT
2
2
Q3
2
Q3
2
Q4
3
Q4
3
Q4
3
Q4
3
…
…
May 23, 2015
Quarter
Quarter
0
Q1
1
Q2
2
Q3
3
Q4
R.L.E.
Solo 4 valori.
Bastano 2 bit per
rappresentarli tutti.
xVelocity Store
Quarter
Start
Count
0
1
4
1
5
10
2
11
4
3
15
15
#sqlsatTorino
#sqlsat400
xVelocity in-memory Compression
 Dictionary Encoding
 Interviene quasi sempre (eccezione: valori interi)
 Rende tabelle indipendenti dal tipo di dati
 RLE Encoding
 Solo se i dati compressi sono più piccoli
dell’originale
 Dipende molto dall’ordine dei dati
 SSAS sceglie automaticamente l’ordinamento
migliore
 In finestre di dati da 8Mb
May 23, 2015
#sqlsatTorino
#sqlsat400
Limitazioni di Tabular
 Il database risiede completamente in
memoria
 Funzionalità mancanti
 Non c’è supporto per le traduzioni
 Non c’è il concetto di «Set»
 MDX Script non è disponibile
 Solo relazioni 1-molti (m2m in arrivo, già
presenti in Power BI)
May 23, 2015
#sqlsatTorino
#sqlsat400
Distinct Count
 In Multidimensional sono misure
costosissime
 Measure group dedicato
 Necessario partizionamento
 In base al numero di core
 Disegno ottimizzato per l’hardware
 Scarse prestazioni per process
 ORDER BY durante il process della tabella dei
fatti
May 23, 2015
#sqlsatTorino
#sqlsat400
Distinct Count
 In Tabular sono misure semplici
 Distinct Count su qualsiasi colonna
 Dictionary encoding aiuta molto
 Calcoli in memoria
 Nessun process speciale per Distinct Count
May 23, 2015
#sqlsatTorino
#sqlsat400
Tool Dimension
 Tecnica comune in Multidimensional
 Tool dimension modifica i calcoli
 Interviene su misure esistenti
 Usato spesso per dimensione Data
 Tecnica basata su
 [Measures].CurrentMember
 SCOPE
 Funzionalità non disponibile in DAX…
May 23, 2015
#sqlsatTorino
#sqlsat400
Gerarchie Parent / Child
 Multidimensional supporta gerarchie P/C
 Ma sono lente
 Si ottimizzano trasformandole in gerarchie
normali
 P/C Naturalization
 Tabular supporta solo gerarchie regolari
 Le parent/child vanno sempre convertite
 Proprietà HideMemberIf non disponibile
 Si può simulare in DAX
 Non è semplice ma funziona correttamente
May 23, 2015
#sqlsatTorino
#sqlsat400
Unary Operator
 Multidimensional supporta unary operator
 Usati spesso in gerarchie P/C
 Calcoli molto lenti
 Usati su cubi finanziari
 Su dati pre-aggregati
 Interfaccia utente molto comoda per la loro
definizione
 Tabular non supporta unary operator
 Implementare calcoli in normali misure DAX
 Ma le formule diventano molto complesse
May 23, 2015
#sqlsatTorino
#sqlsat400
Custom Rollup
 Estende il concetto di unary operator
 Calcoli basati sui dati
 Basse prestazioni durante i calcoli
 Va bene su piccoli cubi finanziari
 O per implementare conversione valuta
 Non c’è supporto in Tabular
 Calcoli data-driven non implementabili in DAX
 Ma la conversione delle valute può essere
anche più veloce rispetto a Multidimensional
May 23, 2015
#sqlsatTorino
#sqlsat400
Uso gerarchie
 Gerarchie in Multidimensional
 Uno dei pilastri della modellazione
 Es.: «Incidenza % rispetto a parent nella gerarchia»
 Gerarchie in Tabular
 Elenco di colonne
 Non ci sono funzioni per gestirle in DAX
 Il calcolo del rapporto rispetto al parent diventa
complesso
 Comunque gli sviluppatori, conoscendo il
modello, riescono ad adattarsi a questa
limitazione
May 23, 2015
#sqlsatTorino
#sqlsat400
Calcoli a livello foglia
 Diversi scenari
 Aggregazioni ponderate
 Conversione valute
 Facili da calcolare in DAX
 Molto più veloci che in MDX
 Non richiedono modifiche al modello dati!
May 23, 2015
#sqlsatTorino
#sqlsat400
Script MDX non disponibile
 Uso di Script MDX
 Semplici calcoli
 Valutazioni complesse tramite SCOPE
 Business logic completa in alcuni modelli
 È corretto memorizzare la business logic in
MDX?
 No!
 A volte è necessario
 In quei casi, DAX non è l’opzione migliore
 Provare a spostare la business logic nell’ETL
May 23, 2015
#sqlsatTorino
#sqlsat400
Prestazioni a confronto
Tabular
•
•
•
•
•
Scansioni complete
Uso intensivo CPU e cache L2
Cache solo per storage engine
Collo di bottiglia: velocità bus RAM
Ottimizzazioni
• Modellazione per aumentare
compressione e diminuire RAM
usata
• DAX per diminuire scansioni e
diminuire carico da formula engine
May 23, 2015
Multidimensional
•
•
•
•
Pre-aggregazioni
Cache gerarchica su storage engine
Cache anche su formula engine
Accesso I/O random frequente
• Usa cache sistema
• Ottimizzazioni
• Preaggregazioni
• Dischi SSD per migliorare I/O
• MDX per ridurre uso formula
engine
#sqlsatTorino
#sqlsat400
Quale hardware per Analysis Services?
Multidimensional
Tabular
RAM
Media (16/32 Gb)
Grande (64/128 Gb)
RAM Velocità
Importante
Cruciale
Numero di core
4/8/16
4/8/16
Velocità CPU
Importante
Fondamentale
Velocità disco
Molto importante
Inutile
Disco SSD
Fortemente consigliato
Inutile
Velocità rete (verso client)
Importante
Importante
Concorrenza/scalabilità verticale
Molto buona
Poca esperienza per dirlo…
Virtualizzazione
Fattibile sfruttando preaggregazioni
Vale la pena? Rapporto
costi/benefici discutibile
May 23, 2015
#sqlsatTorino
#sqlsat400
SQL Server Appliances
SQL Engine appliance
PowerPivot appliance
May 23, 2015
#sqlsatTorino
#sqlsat400
Scalabilità
 Scalabilità verticale
 Non serve aumentare numero core con Tabular
 Collo di bottiglia è la RAM
 Più RAM per Multidimensional per contenere
cache, CPU più veloci per Tabular
 Scalabilità orizzontale
 Approccio analogo tra Tabular e Multidimensional
 Diversa modalità di aggiornamento incrementale
May 23, 2015
#sqlsatTorino
#sqlsat400
Manutenzione
 Più alta in Multidimensional
 Usage-based optimization per nuove
aggregazioni
 Ridotta in Tabular
 Valutare ricostruzione dizionari in caso di
aggiornamenti incrementali e partizionamento
May 23, 2015
#sqlsatTorino
#sqlsat400
Compatibilità
 Client OLAP/MDX esistenti funzionano con
Tabular
 Difficile migrare report esistenti
 Non si può ricreare un modello in Tabular con le
stesse entità di Multidimensional
 Differenze nei dettagli, es. chiavi su attributi
 Nuovi client DAX (Power View) solo su
Tabular
 Power BI è Tabular…
May 23, 2015
#sqlsatTorino
#sqlsat400
Licensing
 Standard
 SSAS Multidimensional, no Tabular
 Funzioni limitate in Multidimensional (es. no partizioni,
…)
 Business Intelligence
 Per Server, richiede CAL
 Tutte le funzionalità per Multidimensional e Tabular
 No partizioni e no columnar storage in SQL Server
 Enterprise
 Per Core, nessuna CAL
 Tutte le funzionalità per Multidimensional e Tabular
 Include partizioni e columnar storage in SQL Server
May 23, 2015
#sqlsatTorino
#sqlsat400
Bisogna migrare da Multidimensional?
 Non è necessario
 Opzioni diverse di modellazione
 Colonne calcolate
 Relazioni complesse in DAX
 Tecniche di calcolo differenti
 Evaluation Context
 Porting implica creazione di un nuovo
progetto
May 23, 2015
#sqlsatTorino
#sqlsat400
Multidimensional: The BI Path
Complessità
del modello
di dati
Visual Studio
SSAS
Multidimensional
Funzionalità richieste
May 23, 2015
#sqlsatTorino
#sqlsat400
Tabular: The BI Path
Complessità
Visual
Studio
del modello
di dati
EXCEL
SSAS Tabular
PowerPivot
for
SharePoint
PowerPivot
for Excel
Funzionalità richieste
May 23, 2015
#sqlsatTorino
#sqlsat400
Ricapitolando
 Tabular non è il nuovo UDM
 È una delle opzioni di modellazione per BISM
 Side by side con Multidimensional
 DAX è più semplice da imparare e usare rispetto
a MDX
 Nessuna esperienza con SSAS? Usa Tabular
 Nuovo progetto? Considera Tabular come
un’opzione
 Attenzione alle limitazioni
 Bisogna imparare DAX prima di cominciare
 Diverse tecniche di modellazione
May 23, 2015
#sqlsatTorino
#sqlsat400
Prossimo passo?
 Imparare DAX
 Davvero, è importante!
 DAX è semplice, ma non è facile
 Imparare diverse tecniche di modellazione
 Dedicare del tempo per conoscere Tabular
 Costruire qualche prototipo
 Non fare un porting, costruire un nuovo progetto
 Imparare a pensare in DAX
May 23, 2015
#sqlsatTorino
#sqlsat400
#sqlsatTorino
#sqlsat400
SPEAKERSCORE
http://speakerscore.com/MK1T
THANKS!
May 23, 2015
#sqlsatTorino
#sqlsat400