Master Data Services (MDS) is one of the hidden gems in the Microsoft BI tool stack. As the name suggests, the idea is to use the tool to technically support Master Data Management.
But despite being a good tool, in real life we see that MDS isn’t up to standard compared to the master data management tools offered by other big vendors like IBM and SAP.
This doesn’t mean that you shouldn’t use MDS, which provides great added value in many business intelligence and data warehousing projects.
One of the biggest challenges we face today in data warehouse projects is giving end users the ability to interact with data. If existing data needs to be manipulated by a user, or missing data needs to be added, currently we have two options:
So it would be easier to have an environment where we could:
All these requirements are met in MDS – it’s a perfect match. What’s more, the simplicity with which the requirements can be set up makes MDS one of the hidden gems in the Microsoft BI tool stack.
To give you an idea of how MDS can be used, below we give some examples of solutions implemented for our customers.
For one customer we had to provide business users with data that didn’t meet data quality standards. So we created a data flow that would validate the data and give business users the option to review the data that was flagged as invalid. Not only could users review this data, but they could also correct the information with MDS, which wasn’t possible in the source system.
So the actual flow works like this: data is loaded from the source system to a staging environment, where it is validated. The data that is flagged as invalid is then loaded to MDS and a business user is notified of this. The business user opens their Excel and connects to MDS to load the invalid data, including a message about why the record is invalid. If possible, the business user corrects the data and publishes it back to the server, where it is validated again. If there are still issues to be resolved, the user receives another message.
In most source systems data is available at the lowest level. Some systems have hierarchies available, while others don’t. But when it comes to reporting, even the systems with hierarchies are not what business users generally want.
So we started managing alternative hierarchies with simple Excel files that were loaded into the system. The major downside of working like this is that the Excel structure is easily changed, causing errors when trying to load the data. Typos or incorrect matching would lead to errors when loading the Excel file. What’s more, it is difficult to apply security to these Excel files to prevent unauthorized access.
The use of MDS solved all these problems. Users were only allowed to select existing values in drop-down lists. Fine-grained security was set up so that users could only view or update fields they were authorized to access. And uploading the data was instantaneous, with a fixed format that end users couldn’t change.
MDS can also benefit non-business users. It can be used when an advanced project configuration is required. One of the projects we worked on had several Navision systems as a source. These systems typically have an exact copy of a database for each entity or company within the organization. Instead of creating a source extraction package for each of these databases we chose to make the packages more dynamic and store the necessary configuration information in tables. When a new company needed to be added, several lines were added. To make this maintenance easier a small MDS model was created that allowed users to add a new company and automatically add all the necessary configuration lines. So instead of spending several hours setting up a new company, it took just 2 minutes to add a company to the data warehouse – the time needed to open Excel, connect to MDS, open the company table, add the new company and publish the info to the server.
© 2023 Kohera
Crafted by
© 2022 Kohera
Crafted by
Cookie | Duration | Description |
---|---|---|
ARRAffinity | session | ARRAffinity cookie is set by Azure app service, and allows the service to choose the right instance established by a user to deliver subsequent requests made by that user. |
ARRAffinitySameSite | session | This cookie is set by Windows Azure cloud, and is used for load balancing to make sure the visitor page requests are routed to the same server in any browsing session. |
cookielawinfo-checkbox-advertisement | 1 year | Set by the GDPR Cookie Consent plugin, this cookie records the user consent for the cookies in the "Advertisement" category. |
cookielawinfo-checkbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
cookielawinfo-checkbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
CookieLawInfoConsent | 1 year | CookieYes sets this cookie to record the default button state of the corresponding category and the status of CCPA. It works only in coordination with the primary cookie. |
elementor | never | The website's WordPress theme uses this cookie. It allows the website owner to implement or change the website's content in real-time. |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
Cookie | Duration | Description |
---|---|---|
__cf_bm | 30 minutes | Cloudflare set the cookie to support Cloudflare Bot Management. |
pll_language | 1 year | Polylang sets this cookie to remember the language the user selects when returning to the website and get the language information when unavailable in another way. |
Cookie | Duration | Description |
---|---|---|
_ga | 1 year 1 month 4 days | Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors. |
_ga_* | 1 year 1 month 4 days | Google Analytics sets this cookie to store and count page views. |
_gat_gtag_UA_* | 1 minute | Google Analytics sets this cookie to store a unique user ID. |
_gid | 1 day | Google Analytics sets this cookie to store information on how visitors use a website while also creating an analytics report of the website's performance. Some of the collected data includes the number of visitors, their source, and the pages they visit anonymously. |
ai_session | 30 minutes | This is a unique anonymous session identifier cookie set by Microsoft Application Insights software to gather statistical usage and telemetry data for apps built on the Azure cloud platform. |
CONSENT | 2 years | YouTube sets this cookie via embedded YouTube videos and registers anonymous statistical data. |
vuid | 1 year 1 month 4 days | Vimeo installs this cookie to collect tracking information by setting a unique ID to embed videos on the website. |
Cookie | Duration | Description |
---|---|---|
ai_user | 1 year | Microsoft Azure sets this cookie as a unique user identifier cookie, enabling counting of the number of users accessing the application over time. |
VISITOR_INFO1_LIVE | 5 months 27 days | YouTube sets this cookie to measure bandwidth, determining whether the user gets the new or old player interface. |
YSC | session | Youtube sets this cookie to track the views of embedded videos on Youtube pages. |
yt-remote-connected-devices | never | YouTube sets this cookie to store the user's video preferences using embedded YouTube videos. |
yt-remote-device-id | never | YouTube sets this cookie to store the user's video preferences using embedded YouTube videos. |
yt.innertube::nextId | never | YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen. |
yt.innertube::requests | never | YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen. |
Cookie | Duration | Description |
---|---|---|
WFESessionId | session | No description available. |