Taking Analysis Services Tabular to Enterprise Levels Stacia Varga Data Inspirations stacia@datainspiratons.com blog.datainspirations.com @_Stacia_V
Stacia (Misner) Varga Over 30 years of IT experience, 17 years of BI experience Frequently speaks, writes, and teaches about Microsoft BI technologies Principal Consultant and Founder, Data Inspirations Data Platform MVP and SSAS Maestro Las Vegas User Group Chapter Leader and SQL Saturday Organizer Wants you to make sure you can understand what your data is telling you
Agenda Query Performance Modeling DAX Formulas Management #ITDEVCON
Query Performance
DAX Optimizations for Power BI Pre SQL Server 2016 SQL Server 2016 1 trip But… Simple measures required 100s of round trips! #ITDevConnections
New Efficiencies Variables Conditional expressions Nonempty calculations Multiple measures in same table Measure grouping Joins Multiple result sets Countrows() Available in all client tools! #ITDevConnections
Storage Engine Caching Pre SQL Server 2016 SQL Server 2016 One cache for all databases One cache PER database #ITDevConnections
DirectQuery Pre SQL Server 2016 SQL Server 2016 Inefficient Simpler, T-SQL queries Simpler, better queries #ITDevConnections
Why Use DirectQuery? Real-time data requirements Data volume greater than available server memory Database security requirements #ITDevConnections
Why Not Use DirectQuery? No support for calculated columns or tables No support for pasted tables Some DAX functions don’t translate to T-SQL #ITDevConnections
Modeling
More DirectQuery Sources Pre SQL Server 2016 SQL Server 2016 SQL Server 2005 or higher SQL 2008 or higher Azure SQL Database Analytics Platform System Oracle 9i, 10g, 11g, and 12g Teradata V2R6, V2
DirectQuery Modeling Faster development Work only with metadata #ITDevConnections
Sample Data for DirectQuery Modeling Create a temporary partition Define WHERE clause to define subset #ITDevConnections
Calculated Table Use a DAX function or query to return a table Use the table in relationships and calculations #ITDevConnections
Bi-Directional Cross-Filtering #ITDevConnections
Translations Generate empty JSON translation file Add translated text to JSON file Import JSON file into tabular model Build, process, or deploy model Use client allowing LCID in connection string #ITDevConnections
Translations Model requires translatedCaption and translatedDescription
DAX Formulas
Save incomplete formula DAX Formula Editor Syntax coloring IntelliSense Formatting Formula fixup Save incomplete formula #ITDevConnections
New DAX Functions…Just a Few Calendar() and CalendarAuto() DateDiff() Median() Many statistical functions Beta.Dist() Chisq.Inv() Expon.Dist() And trig… and filters... And more... #ITDevConnections
DAX Variables Non Bikes Sales Under $50 % of Total:= var tNonBikes = filter(values(Category[CategoryName]), Category[CategoryName]<> "Bikes") NonBikeSalesUnder50 = sumx(tNonBikes, calculate(sum([SalesAmount]),'Internet Sales'[UnitPrice]<50)) NonBikeAllSales = sumx(tNonBikes, calculate(sum([SalesAmount]))) return NonBikeSalesUnder50 / NonBikeAllSales #ITDevConnections
management
Partition Processing Pre SQL Server 2016 SQL Server 2016 Process each partition serially Process partitions in parallel (default) #ITDevConnections
Extended Events Create session (SSMS) Select events and event fields Stream live or persist to file #ITDevConnections
WIN Rate This Session Now! Tell Us What You Thought of This Session Rate with Mobile App: Be Entered to WIN Prizes! Tell Us What You Thought of This Session Select the session from the Agenda or Speakers menus Select the Actions tab Click Rate Session Rate with Website: Register at www.devconnections.com/logintoratesession Go to www.devconnections.com/ratesession Select this session from the list and rate it #ITDevConnections