Create Tabular Model Sample from SQL Server Database – Part 1
As a SQL Server business intelligence developer, I would like to work directly on a tabular
analysis services project using a SQL database sample which must comply with data
warehouse sample requirements. How can I prepare a database to be used for
The solution is to convert a SQL database sample into a tabular model sample
by making changes in such a way that it looks as if the data model has gone through
all the stages of a data warehouse and is ready to be used with a tabular analysis
SQL Database Sample Overview
Let’s have a look at the potential SQL database sample to be converted into tabular
data model sample.
Sample Database Structure (OfficeSuppliesSampleV2)
The sample database covers a common business scenario where customers can place
orders using multiple options such as email, phone or in-store to buy products.
The database consists of the following database objects (tables):
- Orders Table
- Product Table
- Customer Table
- OrderType Table
The sample database also contains OrdersView and some other database objects
which are not important in the context of current article.
Setup Sample Database (OfficeSuppliesSampleV2)
Create and populate sample database (OfficeSuppliesSampleV2) using the
Test Run Sample Database (OfficeSuppliesSampleV2)
Once you have created the SQL database sample, it is worth doing a test run by
running the following script:
-- View orders SELECT ov.OrderID ,ov.OrderType ,ov.OrderDate ,ov.Customer ,ov.Product ,ov.Quantity ,ov.TotalPrice FROM OrdersView ov
Once we have successfully created, populated and quick tested our sample database
next thing is to add the sample database to a tabular model project using SQL Server
Data Tools (SSDT).
Adding sample database to tabular model project consists of the following steps:
SQL Server Data Tools (SSDT) for Visual Studio is installed (which must
match your Visual Studio version)
|Integrated Workspace server is available with the latest versions of
Visual Studio (For example, Visual Studio 2015 and Visual Studio 2017 offer
integrated workspace server) otherwise you have to install Tabular Analysis
Server on your dev machine.
|If you are using integrated workspace server then setting the compatibility
level to SQL Server 2017 (provided your Visual Studio version offers that
level of compatibility) makes your project compatible with Azure Analysis
|Specify data source which is SQL Server Database in our case.|
|Server name followed by your windows account user name and password
is provided which impersonates your account.
If you are pointing to the (installed) default instance of SQL Server then
The desired database is connected after server and user credentials are
|The data is loaded into the Data Model which can be one or more than
one database tables (including views).
|Diagram view shows the tables and the relationships between tables.|
|The primary key columns of SQL database sample is not important (if
we are considering a data warehouse compliant sample) inside the data model
so we change them into alternate keys so that we can refer to them if required
Create Tabular Model Project
This tip assumes you have already installed SQL Server Data Tools (SSDT) and
have a basic understanding of creating and managing Analysis Services Tabular Projects.
Open Visual Studio and create a new Analysis Services Tabular Project and name
it “OfficeSuppliesSampleV2Tabular” as follows:
Next choose “Integrated workspace” option and latest compatibility
level (if possible) and click OK:
Tabular Project is ready as shown in Tabular Model Explorer:
Import SQL Server Sample Database
Click the Database icon on the toolbar and select SQL Server database from
the Get Data
Next enter the server and database name:
Enter credentials accordingly and carry on without encryption when asked since
this is a sample database:
Next select the desired database (OfficeSuppliesSampleV2) and click “OK”:
Loading Data into the Data Model
Select Orders, Customers and Product tables only and click Load button:
Clicking the Load button will load data into tabular data model:
If we look at the model, we can now see the tables loaded into it:
Switching to the Diagram View
From the Model menu Click Model View > Diagram View:
The Diagram View shows tables and their relationships:
Converting IDs into Alternate Keys
The database tables have been successfully loaded into the data model, but there
are some key things missing from the model.
If we assume that we are creating a data (warehouse) model which has gone through
all the basic stages of data warehouse creation, then we cannot ignore the importance
of alternate keys.
Yes, the primary key columns represented by IDs in the database world become
alternate key(s) in BI (Business Intelligence) world.
The relationships in a data warehouse are created using special types of keys
called surrogate keys rather than using primary keys.
Switch to Diagram View and right click on Customer and click “Rename”:
Rename CustomerID as CustomerAlternateKey:
Similarly Rename ProductID as ProductAlternateKey and OrderID as OrderAlternateKey:
We have dropped the alternate key relationship(s) in our data model as per data
warehouse standard practices.
You must be wondering why we cannot use alternate key(s) to create relationships
(in the context data warehouse) while they are still unique, but think of a scenario
where data is extracted from multiple data sources (multiple databases, flat
files, Excel, etc.), before loading into the model, as a single table having same ids with different values (which
is quite possible) then they are no more unique so we cannot depend on these keys
Please stay in tuned as we are going to transform the database sample into a
full fledge data warehouse compatible model sample in the next part of this tip.
- Please try creating a new tabular project by adding any other SQL database
sample of your choice and follow the steps mentioned in the tip.
- Please try removing CustomerID primary key from the SQL database sample
and add duplicate CustomerID values to the table to understand why data warehouse
does not depend on data source ids (primary keys).
- Please add Supplier table to the SQL database sample and populate it manually
and follow the steps mentioned in this tip to make it a tabular model sample.
Last Update: 2018-08-10
About the author
Haroon Ashraf’s interests are Database-Centric Architectures and his expertise includes development, testing, implementation and migration along with Database Life Cycle Management (DLM).
View all my tips