Difference Between between the two modes of SSAS: Multi dimensional mode vs Tabular mode - ssas

I was wondering if anyone here knows the exact differences for these 2 modes, more specifically:
What can we do in one model that we can't do with the other? (Multi-dimensional vs Tabular and vice versa)
How is the data stored in one model versus another?
If I am wring an SSRS / PowerBI / Excel report against this, what limitations does one model have over the other?
Does the tabular model have cubes? If not, what is the alternative storage medium and how does it differ from cubes (maybe provide for me
some background on what cubes are to begin with)
What are the differences in security considerations? As I understand, with the Multi-dimensional model, row-level, column, level
and even cell-level security can be applied - what is available with
this for the tabular model?
Also, as I understand SQL Server 2016 is moving to using the Tabular Model by default and that there may be some differences/improvements
over what is current in use (SQL Server 2014) - can you please provide
a list of what those are?
Thank you so much in advance.

A good place to start might be these articles which should be accurate as to the differences in SSAS 2014.
Advice on the decision points for choosing to build a Tabular or Multidimensional model
Paul Turley’s high-level description of Tabular strengths and weaknesses
Dimension relationships
Summary level presentation
Many-to-many relationships and writeback and scope statements and non-visual dimension security are some of the biggest missing features in SSAS 2014 Tabular in my opinion.
Tabular security is row based and just supports visual totals, not non-visual totals or cell security. But in many cases you don't want to use cell security for performance reasons.
Tabular uses in-memory columnar storage. Multidimensional uses disk-based row-based storage. So scanning a billion row fact table requires reading all columns from disk in Multidimensional and takes a minute or two to return a query on a fact table that large. If you optimize the Multidimensional model by building an aggregation then the query may take seconds. Tabular just scans the columns used in the query and simple queries or calculations even on a billion row table may return in under a second.
With SSAS 2016 Tabular the bidirectional relationship was added which was a very big deal for modeling flexibility and allowing many-to-many relationships. And parallel partition processing made loading large models feasible.
SQL 2017 installer for SSAS has Tabular as the default.
If you have the option for using SSAS 2016 Tabular or above it is highly recommended for performance and modeling flexibility. Here is what's new in SSAS 2016 and SSAS 2017.

Related

Are tabular and multidimensional models built the same way?

I'm having a real hard time understanding what the difference is between a tabular vs multidimensional model.
Don't both use dimensions and fact tables?
Can't both have a star or snowflake schema?
Don't both have measures and calculated columns?
What is the difference?
Also, if I'm using Power BI and I connect to SQL Server instead of SSAS, I can still do my thing with it. Why is SSAS needed for tabular models if you can just do it in SQL Server?
Don't both use dimensions and fact tables?
Nope. Multidimensional uses Attribute Hierarchies and Measure Groups. Tabular uses Tables, and has no built-in notion of what a "fact" or "dimension" is.
Can't both have a star or snowflake schema?
Yes. And Tabular can have other designs as well. Tabular models can have single-table, or more normalized schemas, although using a star or snowflake design is generally considered a best-practice.
Don't both have measures and calculated columns?
MD does not have calculated columns. See Comparing tabular and multidimensional solutions
Also, if I'm using Power BI and I connect to SQL Server instead of SSAS, I can still do my thing with it.
Nope. Power BI always uses a Tabular or Multi-Dimensional model. When you connect to SQL Server with Power BI you are creating a Tabular model, and either Importing the data into memory, or creating a DirectQuery model (or a hybrid). In either case there is still a Tabular Model created, either embedded in the .PBIX or in a SSAS/AAS server.

SSAS tabular model VS multidimentional model

I am new to SSAS tabular model and DAX. We are doing a POC to check which model we should use for our system. There are currently 2 models that we are evaluating: the SSAS Tabular Model and the Multidimensional Model.
My understanding is that the SSAS Tabular Model has some size limitations, i.e. it is good for data <= 1TB as on a single server but it is limited in terms of memory usage. Is this true?
Currently our requirements call for less than 1TB of data, but that may change in the future.
I find the SSAS Tabular Model attractive due to ease of use and faster development cycles, but I would like to get some input from the community on whether this is the right choice.
Thank you,
Atul.
If you have enough money to buy requisite hardware, go for Tabular model as it is almost always faster(exceptions aside). It has the new faster Vertipaq engine which does a better job at compressing data and retrieving results. But never trust just the size of data to decide the model. There could be cases where the calculations are so complex that it overwhelms the RAM. Finally there are good bit of features which are still unavailable on tabular model, so understand those very well before making the decisions. That said, there are a lot of factors in favor of multi dimensional model too and for many practical cases it doesn't make much sense to ditch it in favor of tabular. But adopting Tabular modelling surely is looking towards the future. Hope that helps. All the best.
Today multidimensional models perform better in scalability, security and stability and they have many advanced features that are not available in tabular.
For example implementing many-to-many relationships is easier in multidimensional (only workarrounds available in tabular mode).
Besides technicalities, tabular also requires more expensive SQL Server license.
These 3 resources give quite a comprehensive analysis of the situation:
http://richardlees.blogspot.ca/2012/05/sql-server-2012-tabular-versus.html
https://sqlserverbiblog.wordpress.com/2013/06/24/ssas-tabular-models-the-good-the-bad-the-ugly-the-beautiful/
http://blogs.technet.com/b/cansql/archive/2015/01/15/mvp-series-promoting-an-excel-tabular-model-to-ssas.aspx

Datawarehouse and OLAP, ROLAP

I have read all those article about datawarehouse and olap.....however I have some question on it
I have created a datawarehouse using mysql and I also created an API which contain ad-hoc query to query from the datawarehouse, so is this API consider as ROLAP?
Is it possible to create own OLAP? If yes, how?
Usually data warehouse has normalized structure and DWH is not the same as ROLAP.
ROLAP it is technique used to modeling data. ROLAP is usually used for reporting. ROLAP is very good to make analytical query and you can use many reporting (BI) tools to easily build reports on you data.
It isn't necessary to write you own application to build reports. ROLAP (relational OLAP) it is when you model you data as "star" or "snowflake" using facts and dimension tables in traditional RDBMS. It star schemas also called "multidimensional cubes".
By OLAP often is meant MOLAP (multidimensional OLAP) - it's when you really store your data in multidimensional data structure in special data stores (not in RDBMS).
You shouldent create you own MOLAP e data storag- you should use alredy developed OLAP servers like MANDARIN, Pentaho Olap,Essbase, ORACLE EE database with OLAP option.
The confusion you are pointing out comes from the fact that peoples tend to use this term anywhere and in a wrong context.
OLAP applications are precisely defined by the OLAP council. These are applications that fullfill a bunch of requirements. You can read these requirements Here.
In big words, these are analytical oriented applications that allow you to build reports in an a multidimensional fashion (it means you have dimensions and indicators that you can cross) and get fast anwsers at enterprise-scale, with drill down and drill accross capabilities. Something close to OLAP applications is this : http://try.meteorite.bi/
Building an adhoc reporting engine on top of a datawarehouse doesn't mean you have an OLAP application. Does it have a multidimensional shape ? Is it user oriented ? Is it fast enough ? It has to answer yes to all these questions and the ones below to be a candidate to be an OLAP application.

SSAS - data in three places?

New to DW concepts and SSAS. I'm reading alot that normalized relational dbs are optimal for OLTP due to a typical workload of many one-transaction batches. And denormalization is generally better for DW/BI applications because the nature of queries used for reporting are more batch-based... there were other reasons that I don't recall right now.
It sounds like the advice says to create a denormalized model and populate it from the base relationship model and then build your cubes off the denormalized model. Assuming you're using MOLAP storage type, your cube will store and incrementally update your data in a multidimensional model that it builds behind the scenes.
So now we have essentially the same data stored three times!
Am I reading that right? Why do we even need that intermediate denormalized table? It can't be to optimize report queries because those are being run against the multidimensional SSAS data store. Why not just build your cubes against a dsv whose definition is basically a view of the relational db?
The multidimensional model needs the relational model to be available in star schemas (that is what you call "denormalized model") for loading the data. And in many cases, there is some processing like combining data from different sources, keeping the data for reporting longer than it is needed in the OLTP world, keeping historical views like old regional or department structures available for analyzing which are not necessary and hence overwritten in the OLTP world. Hence, this intermediate step makes sense in many cases. You might also want to have clear cut of times, i. e. always report data for complete days (or, in some cases, months), and not have some data for the last day available and some not, which makes comparison of numbers for a day easier than comparing e. g. the sales of today containing only the data up to 10 o'clock with the sales of the whole day yesterday.
In some simple cases, the intermediate relational data structure need not be available physically. A few days ago I prepared a prototype cube where the star schema was just a set of views on the source data. In this case, of course, the data was only physically available in the original source form and in the cube. The structure of the source data did not make the views that inefficient, and thus data loading to the cube was fast enough for the prototype.

Multidimensional Data Warehouse Alternative for Reporting

I'm a few months into developing a reporting solution. Currently I am loading a relational data warehouse (Fact and Dimension tables) using SSIS. SSAS cubes and dimensions are then created from the relational Data warehouse. I then use SSRS to build reports using MDX queries.
The problem I have is that things are starting to get rather complicated trying to understand how multidimensional modelling works as well as MDX and cubes. Since the organization it's being designed for is rather small, I'm thinking that I should re-evaluate my approach.
I think maybe I should just eliminate SSAS from the picture and simply create reports that report directly off the relational data warehouse using SQL queries. The relational data warehouse could still be loaded nightly to allow up to date data for reporting.
I'm just wondering if that would be a good idea considering I'm not very experienced with data warehousing and SSAS. Also I wanted to know if keeping my relational data warehouse in dimension and fact tables would still work with SQL queries or would I need to redesign the tables. I don't want to make the decision to eliminate SSAS if that will end up causing more headaches or issues.
The reports will not include complicated calculations besides row counts and YTD percentages. For example "How many callers were male?" and "How many callers called for Product A?" Which are then broken down by month.
Any comments or suggestion are much appreciated cause I'm starting to feel rather frustrated with trying get SSAS cubes developed properly.
I was in a similar situation at my company. I had never used SSAS, and I was asked to do research on the benefits of using cubes to do some reporting. It was a pretty steep learning curve because my background is in development not data and reporting. SSAS is most useful when aggregate queries on a relational database are time consuming and if reports need to be broken down into hierarchies that an analyst can use to better understand the state of the business. Since SSAS stores aggregate info, queries of that nature are very quick. If your organization's data is small, the relational queries might be quick enough that you don't really need the benefit of storing aggregates.
Also you need to take into consideration the maintainability of using SSAS. If you're having trouble figuring out SSAS and MDX then how easy of a time will others? I tried to explain an MDX query I wrote to my boss who is experienced with SQL, but it's really quite different from relational queries. How easy is it going to be to add more complex reports?
A benefit to using SSAS is it can put the analyst in control of the report. Second, there are great tools and support. Finally, it's pretty easy to deploy and connect.
You can remove SSAS from your architecture yes because all the results you can get from an MDX query to SSAS, you can get from a T-SQL query to your datawarehouse because the cube was built reading data from the DW. BUT, bear in mind the following: the main advantage on an OLAP cube, in my point of view, are aggregations.
Very simple explanation: lets say you have a fact table called orders with 1 million orders per month. If you want to know how much you sold on that month, using sql you need to read row by row and sum the value to produce the total. That's like 1 million reads on your DB. If you have a cube, with the propper agrregations configured, you can have that value pre-calculated and pre-stored on your cube so if you need to know how much you sold on a month, you will have only one read to your cube.
Its a matter of analyse your situation, if you have a small cube, maybe aggregations are not necessary and you cna do fine with SQL, but depending on the situation, they can be very helpfull