<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'Tabular'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=Tabular&amp;orTags=0</link><description>Search results matching tag 'Tabular'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>How Far Can You Push Tabular? Birds of a Feather at TechEd 2013–North America #msteched #ssas #tabular</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/05/20/how-far-can-you-push-tabular-birds-of-a-feather-at-teched-2013-north-america-msteched-ssas-tabular.aspx</link><pubDate>Mon, 20 May 2013 13:15:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:49110</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;I and &lt;a href="http://www.sqlbi.com/articles/author/alberto-ferrari/"&gt;Alberto Ferrari&lt;/a&gt; will moderate the following Birds of a Feather session at &lt;a href="http://northamerica.msteched.com"&gt;TechEd North America 2013&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;CODE: BOF-ITP21   &lt;br /&gt;&lt;strong&gt;TITLE: How Far Can You Push Tabular?&lt;/strong&gt;    &lt;br /&gt;SPEAKER: A. Ferrari; M. Russo    &lt;br /&gt;TIMESLOT: June 5, 2013 at 1:30 pm    &lt;br /&gt;ROOM: 263&lt;/p&gt;  &lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;"&gt;&lt;font face="Calibri"&gt;Abstract: Tabular is the new engine in SQL Server Analysis Services. It is an in-memory columnar database capable of unprecedented performance but… how far can we go with an in-memory database? Will you be able to load your data warehouse in-memory to obtain the best performance? What should you care about when building the DWH? What does “fast” mean? What about real-time data? Can you query many billions rows really fast? In this BOF we will show some theory and share some of our experience, but we will welcome your questions and experience, to build a round-table of experts in order to speak about this fascinating topic.&lt;/font&gt;&lt;/span&gt;     &lt;/p&gt;  &lt;p&gt;I really look forward to this event – I and Alberto have some experience using Tabular in many different scenarios, but every time we meet new people at conferences we discover that there are new challenges ahead. This session will be the place to discuss together where are the limits today. Much far than many people realize, in my opinion!&lt;/p&gt;</description></item><item><title>From 0 to DAX at TechEd Pre-Conference Seminar #dax #msteched #tee13</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/05/07/from-0-to-dax-at-teched-pre-conference-seminar-dax-msteched-tee13.aspx</link><pubDate>Tue, 07 May 2013 12:54:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48968</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;In June I and Alberto will deliver a pre-conference seminar at both TechEd North America (New Orleans, LA) and TechEd Europe (Madrid, Spain).&lt;/p&gt;&lt;p&gt;This day is a&amp;nbsp;very good&amp;nbsp;quickstart for those of&amp;nbsp;you that still didn't&amp;nbsp;complete&amp;nbsp;one of our &lt;a href="http://www.sqlbi.com/books/"&gt;&lt;font color="#02469b"&gt;books&lt;/font&gt;&lt;/a&gt;, or those of you that missed one of our workshop about &lt;a href="http://www.ssasworkshop.com/"&gt;&lt;font color="#02469b"&gt;Tabular&lt;/font&gt;&lt;/a&gt; or &lt;a href="http://www.powerpivotworkshop.com/"&gt;&lt;font color="#02469b"&gt;PowerPivot&lt;/font&gt;&lt;/a&gt;. If you are planning to go to TechEd, you might also consider attending a full day about DAX, following the &lt;strong&gt;From 0 to DAX &lt;/strong&gt;one-day seminar. Here are the links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://northamerica.msteched.com/PreCons"&gt;&lt;font color="#02469b"&gt;TechEd North America&lt;/font&gt;&lt;/a&gt; – From 0 to DAX Pre-Conference Seminar (New Orleans, LA - June 2, 2013)&lt;/li&gt;&lt;li&gt;&lt;a href="http://europe.msteched.com/PreCons"&gt;&lt;font color="#02469b"&gt;TechEd Europe&lt;/font&gt;&lt;/a&gt; – From 0 to DAX Pre-Conference Seminar (Madrid, Spain - June 24, 2013)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And in case you are underestimating the importance of DAX in your future BI projects... read &lt;a href="http://blogs.technet.com/b/ilikesql_by_dandyman/archive/2013/05/03/the-importance-of-understanding-dax.aspx"&gt;this blog post from Dandy Weyn&lt;/a&gt; - his privileged point of view inside Microsoft highlights how much DAX is important today and will be pervasive in the future!&lt;/p&gt;</description></item><item><title>Group Sales by Age of Customers #dax #powerpivot #tabular</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/05/06/group-sales-by-age-of-customers-dax-powerpivot-tabular.aspx</link><pubDate>Mon, 06 May 2013 12:16:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48800</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;I published an article describing how to implement the &lt;a href="http://www.sqlbi.com/articles/grouping-transactions-by-age-of-customers-in-dax"&gt;grouping of sales transactions by age of customer at the moment of the transaction&lt;/a&gt; by using PowerPivot or Analysis Services. The same pattern can be used also for any kind of banding operation, this specific case is useful also to recycle the formula that gets the exact age of the customer for each transaction.&lt;/p&gt;  &lt;p&gt;An interesting point is related to performance optimization. The technique is based on adding a calculated column in a table that might contain millions of transactions. This is less expensive than adding a column that contains a foreign key and then a relationship between a table containing group definitions and the transactions table. Every relationship is expensive and generates additional structures (you can see more files in the Analysis Services database, too). Adding one or two columns that have a low number of distinct values (10-15 rows) usually has a lower memory cost than creating a relationship with another table. &lt;a href="http://www.sqlbi.com/articles/grouping-transactions-by-age-of-customers-in-dax"&gt;The article&lt;/a&gt; also contains PowerPivot examples for both Excel 2010 and Excel 2013.&lt;/p&gt;  &lt;p&gt;If only I could decouple attribute visualization from physical structure, I would put these “degenerate dimensions” in a separate folder, because in this way such attribute will be included in attributes belonging to the fact table, which might not be so clear in presenting data. However, I understand that such a decoupling could make live very hard to DAX clients (but probably for MDX it could be not a big issue).&lt;/p&gt;</description></item><item><title>DAX Studio for Excel 2013 finally available! #dax #excel #powerpivot #ssas #tabular</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/05/04/dax-studio-for-excel-2013-finally-available-dax-excel-powerpivot-ssas-tabular.aspx</link><pubDate>Sat, 04 May 2013 05:49:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48963</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;I'm so happy that &lt;a href="http://www.sqlbi.com/tools/dax-studio/"&gt;DAX Studio&lt;/a&gt; finally supports Excel 2013! As &lt;a href="http://geekswithblogs.net/darrengosbell/archive/2013/05/04/new-release---dax-studio-1.2-with-excel-2013-support.aspx"&gt;Darren Gosbell described in his blog&lt;/a&gt;, this release has a few internal changes that will better support future enhancements. I will port the code to capture the query plan for a query in this new release, but unfortunately it will require some weeks because I'm traveling a lot in these days.&lt;/p&gt;&lt;p&gt;If you write DAX formulas and queries for PowerPivot or Analysis Services Tabular, DAX Studio is a must have tool: do you really want to live without a DAX Editor? There are a lot of possible improvements and I hope other contributors will give their help to &lt;a href="http://daxstudio.codeplex.com/"&gt;this Codeplex project&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Advanced DAX course in May - unique date in 1H 2013 #dax #tabular #ssas #powerpivot</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/04/22/advanced-dax-course-in-may-unique-date-in-1h-2013-dax-tabular-ssas-powerpivot.aspx</link><pubDate>Mon, 22 Apr 2013 08:55:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48797</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;One year after the release of SQL Server 2012 I see the growing demand for DAX. There are two reasons for that: an higher number of PowerPivot users started to build more complex data models, and SSAS Tabular is starting to be adopted by a larger number of companies, with and without a previous experience on former versions of Analysis Services.&lt;/p&gt;  &lt;p&gt;For this reasons we decided to offer a &lt;a href="http://www.sqlbi.com/courses/dax-advanced-workshop-london-may2013/"&gt;first public edition&lt;/a&gt; of our &lt;strong&gt;&lt;a href="http://www.sqlbi.com/training/"&gt;Advanced DAX Workshop&lt;/a&gt;&lt;/strong&gt;, a training on DAX that is aimed at Advanced PowerPivot users and Analysis Services developers that want to master the DAX language. Up to now, we offered this course only for &lt;a href="http://www.sqlbi.com/courses-on-site/dax-advanced-workshop/"&gt;private classes&lt;/a&gt;, because of the limited demand, but now there is enough interest and adoption to justify an open class.&lt;/p&gt;  &lt;p&gt;The goal of this DAX training is learning to write DAX expressions for measures and calculated columns, DAX queries for reporting needs, read DAX query plans and optimize DAX formulas. The course is a three-day workshop that includes many hands-on lab sessions, with exercises that will guide you in the learning process of the more advanced DAX concepts, enabling you to master the writing of DAX code.&lt;/p&gt;  &lt;p&gt;The course will be in &lt;a href="http://www.sqlbi.com/courses/dax-advanced-workshop-london-may2013/"&gt;London on May 13-15, 2013&lt;/a&gt;. There are direct flights with a huge number of countries and cities, also outside of Europe. We do not expect to deliver other editions of this course before other 5-6 months, so don’t lose the chance to attend this intensive DAX master course. I will be the teacher in this edition and Chris Webb will assist me in organization with &lt;a href="http://www.technitrain.com/"&gt;Technitrain&lt;/a&gt;. So don’t wait, early bird discount will expire in a few days, &lt;a href="http://www.sqlbi.com/courses/dax-advanced-workshop-london-may2013/#register"&gt;register now&lt;/a&gt; and join us in London!&lt;/p&gt;</description></item><item><title>LASTNONBLANK and FIRSTNONBLANK functions work with any column #dax #powerpivot #ssas #tabular</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/04/19/lastnonblank-and-firstnonblank-functions-work-with-any-column-dax-powerpivot-ssas-tabular.aspx</link><pubDate>Fri, 19 Apr 2013 10:28:50 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48789</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;During a &lt;a href="http://www.powerpivotworkshop.com/"&gt;PowerPivot Workshop&lt;/a&gt; course we received an interesting question from a student: “Can I use LASTNONBLANK (and FIRSTNONBLANK) with a column which is not a date column?”&lt;/p&gt;  &lt;p&gt;The reason is that we introduce LASTNONBLANK in the Advanced Time Intelligence module, because its typical use case is on a date column. However, you can use these functions on any column, which raises the question about what happens at that point. The sort order used is the one that depends on the data type of the column. If it is a Text column, the alphabetical sort order is the reference order. If it is a number, then the numeric order is the reference.&lt;/p&gt;  &lt;p&gt;What happens if a column has the “Sort By Column” property set to another column? This sort order is &lt;strong&gt;*not considered*&lt;/strong&gt; by LASTNONBLANK and FIRSTNONBLANK functions. Even if a PivotTable shows you data sorted according to Sort by Column property, any DAX formula ignores such a sort order. Thus, be careful writing your DAX queries if you have to do some assumptions on the sort order of a column using DAX functions that rely on sort order, such as LASTNONBLANK and FIRSTNONBLANK.&lt;/p&gt;</description></item><item><title>SQLLunch on April 23 in London and Cardiff #sqlpass #dax #sqllunch</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/04/15/sqllunch-on-april-23-in-london-and-cardiff-sqlpass-dax-sqllunch.aspx</link><pubDate>Mon, 15 Apr 2013 08:52:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48691</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;On April 23 I will present DAX in Action in London and Cardiff at SQLLunch event.&lt;br&gt;How is it possible I will be in two places at the same time?&lt;br&gt;This will be a remote presentation delivered in two locations, where you can have lunch while watching the session. &lt;/p&gt;&lt;p&gt;What is this session about? This is the session description:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Tabular is the new SSAS modeling experience and DAX is the new language to use to create BI solution with Tabular. How does it compare with MDX and Multidimensional? In this session, which is mostly based on demos, we will build a complex BI solution from scratch, starting from simple analysis and moving through complex scenarios, showing how you will leverage the tremendous speed of DAX to create complex solution on simple data models, focusing on the differences in building the same solution in MDX or DAX.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;These free events are organized by the UK SQL Server User Group. If you are interested, you can register using the following links.&lt;br&gt;London : &lt;a href="http://sqlserverfaq.com/events/534/SQLLunch-All-stuff-no-fluff-Marco-Russo.aspx"&gt;http://sqlserverfaq.com/events/534/SQLLunch-All-stuff-no-fluff-Marco-Russo.aspx&lt;/a&gt;&lt;br&gt;Cardiff : &lt;a href="http://sqlserverfaq.com/events/535/SQLLunch-All-stuff-no-fluff-Marco-Russo.aspx"&gt;http://sqlserverfaq.com/events/535/SQLLunch-All-stuff-no-fluff-Marco-Russo.aspx&lt;/a&gt;&lt;br&gt;&lt;/p&gt;</description></item><item><title>Optimize memory in #powerpivot and #ssas #tabular</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/04/03/optimize-memory-in-powerpivot-and-ssas-tabular.aspx</link><pubDate>Wed, 03 Apr 2013 10:55:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48473</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;Microsoft published an interesting article about how to &lt;a href="http://office.microsoft.com/en-us/excel-help/create-a-memory-efficient-data-model-using-excel-2013-and-the-powerpivot-add-in-HA103981538.aspx"&gt;optimize memory consumption of a PowerPivot Data Model in Excel 2013&lt;/a&gt;. All these suggestions are also valid for SSAS Tabular. I&amp;nbsp;also wrote an article&amp;nbsp;&lt;a href="http://www.sqlbi.com/articles/checklist-for-memory-optimizations-in-powerpivot-and-tabular-models/"&gt;Checklist for Memory Optimizations in PowerPivot and Tabular Models&lt;/a&gt; with a summary of the best practices.&lt;/p&gt;  &lt;p&gt;The short list of things to do is very valuable:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Removing columns non necessary for analysis&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Identity column (PK) of a fact table&lt;/li&gt;      &lt;li&gt;Timestamps, guid and other info useful for auditing and replication, but with no data for analysis&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;If a column has too many distinct value and cannot be removed (i.e. transaction ID in a fact table for drillthrough), consider splitting the column into multiple distinct parts.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Each one of the parts will have a small number of unique values, and the combined total will be smaller than the original unified column. &lt;/li&gt;      &lt;li&gt;Always separate date and time in two columns, instead of the original datetime.&lt;/li&gt;      &lt;li&gt;In many cases, you also need the distinct parts to use as slicers in your reports. When appropriate, you can create hierarchies from parts like Hours, Minutes, and Seconds.&lt;/li&gt;      &lt;li&gt;Keep only the granularity you really need.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Normalize columns keeping only those with the lower number of distinct values&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;For example, if you have quantity, price and total line amount, import quantity and price and calculate total line amount as SUMX( Sales, Sales[quantity] * Sales[price] ) instead of SUM( Sales[line amount] ) importing line amount. &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Reduce precision of number to reduce distinct values (i.e. round to integer if decimal values are not relevant). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The reason is that VertiPaq compress data at column level, creating a dictionary for each column and storing for each row only the number of bits required to store the index to the dictionary. More details in the article &lt;a href="http://www.sqlbi.com/articles/optimizing-high-cardinality-columns-in-vertipaq/"&gt;Optimizing High Cardinality Columns in VertiPaq&lt;/a&gt; I wrote a few months ago and on the &lt;a href="http://www.sqlbi.com/books/microsoft-sql-server-2012-analysis-services-the-bism-tabular-model/"&gt;SSAS 2012 Tabular book&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;A useful macro to analyze memory consumption and quickly identify the most expensive tables and columns in a PowerPivot workbook is available on Kasper De Jonge blog &lt;a href="http://www.powerpivotblog.nl/what-is-eating-up-my-memory-powerpivot-excel-edition"&gt;What is eating up my memory the PowerPivot / Excel edition&lt;/a&gt;. There is also a version for a Tabular database in his &lt;a href="http://www.powerpivotblog.nl/what-is-using-all-that-memory-on-my-analysis-server-instance"&gt;What is using all that memory on my Analysis server instance&lt;/a&gt; post.&lt;/p&gt;</description></item><item><title>Interviewed in SQL Down Under podcast #sqlserver #ssas #powerpivot</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/04/01/interviewed-in-sql-down-under-podcast-sqlserver-ssas-powerpivot.aspx</link><pubDate>Mon, 01 Apr 2013 18:03:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48477</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;I’ve been interviewed by Greg Low in SQL Down Under show 58, and this is *not* an April fool! We talked for one hour about Tabular, Multidimensional, Data Warehouse and just a little bit about music (you can discover which music genre I’m used to listen…).&lt;/p&gt;  &lt;p&gt;You can hear this interview from the &lt;a href="http://www.sqldownunder.com/Resources/Podcast/Show058MarcoRusso.aspx"&gt;SQL Down Under Show 58 page&lt;/a&gt; (it is an MP3 format) and if you like it there are many &lt;a href="http://www.sqldownunder.com/Resources/Podcast.aspx"&gt;other past shows available&lt;/a&gt;. The PodCast is also available on &lt;a&gt;iTunes&lt;/a&gt; and you can hear other podcasts in &lt;a href="https://itunes.apple.com/us/podcast/sql-down-under/id503822116"&gt;SQL Down Under page&lt;/a&gt; on iTunes Preview.&lt;/p&gt;</description></item><item><title>Cost of Process Defrag in Analysis Services Tabular #ssas #tabular</title><link>http://sqlblog.com/blogs/marco_russo/archive/2013/03/13/cost-of-process-defrag-in-analysis-services-tabular-ssas-tabular.aspx</link><pubDate>Wed, 13 Mar 2013 12:17:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48145</guid><dc:creator>sqlbi</dc:creator><description>&lt;p&gt;I recently received a question about the memory required to run a Process 
Defrag on a Tabular model in Analysis Services. The Process Defrag is useful 
when you run incremental processing of a table frequently, or when some of the 
values in the dictionary are no longer used in the table, for example if you 
process the same partition multiple times in a table and/or remove partitions 
from a table. Cathy Dumas wrote an &lt;a href="http://cathydumas.com/2012/04/30/process-defrag/"&gt;interesting blog 
post&lt;/a&gt; about the savings you can obtain by running process defrag.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I made some investigation and I’ve been assured that data is not completely 
uncompressed in this process, even if some coding/encoding happens. In a rough 
estimate, you need a free space equivalent to the size of the table you are 
going to defrag (which is already in memory) plus buffer for transient data 
structure, but data are managed in a compressed form, without requiring larger 
memory buffers for uncompressed raw&amp;nbsp;data. So, if all partitions of your table 
and the column dictionaries require 100MB in RAM, then you need another 100MB of free RAM in order to 
execute a Process Defrag.&lt;/p&gt; &lt;p&gt;Here is a more detailed description I received from Akshai Mirchandani:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In addition to the master copies, it requires enough memory for a new dictionary, and the final compressed data + some small temporary buffer space for the transient data structures (no big buffers like normal processing).       &lt;br&gt;&amp;nbsp; &lt;br&gt;It is essentially going to read each column value, insert it into a new dictionary, get a new DataID back from the dictionary insert, and append that DataID to the current segment. It doesn’t need to do VertiPaq (compression) again, and it doesn’t keep the uncompressed data in buffers like the data processing algorithm does.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;The important point here is that the analysis of the segment data to come up 
with the best compression strategy no longer needs to be performed – and that’s 
typically the most expensive step of the compression (the VERTIPAQ_STATE in 
DISCOVER_STORAGE_TABLE_COLUMN_SEGMENTS shows whether this was done).&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is a good news if you are concerned with memory required to perform this operation.&lt;/p&gt;</description></item></channel></rss>