1
0
Fork
You've already forked ms_data
0
No description
  • Makefile 34.5%
  • PowerShell 25.6%
  • ASL 15.3%
  • Dockerfile 15.3%
  • Shell 6.4%
  • Other 2.9%
2025年11月20日 18:54:46 -07:00
.devcontainer start 2024年01月07日 18:06:33 -07:00
bin/plantuml track png as lfs 2024年03月04日 17:55:32 -07:00
BuildTools these output as png, not svg 2024年03月04日 13:23:37 -07:00
docs start some notes about what/why structurizer 2024年03月11日 22:49:40 -06:00
src feat: run every 10 seconds 2025年11月20日 18:49:56 -07:00
.gitattributes track png as lfs 2024年03月04日 17:55:32 -07:00
.gitignore feat: start tls for the sql server 2025年11月20日 18:12:40 -07:00
.pre-commit-config.yaml start 2024年01月07日 18:06:33 -07:00
docker-compose.yml feat: start tls for the sql server 2025年11月20日 18:12:40 -07:00
LICENSE Initial commit 2024年01月06日 12:27:11 -07:00
Makefile feat: split the cert generation into different targets. Only run them if the files do not exist 2025年11月20日 18:54:46 -07:00
readme.md add notes about the .sql.env, and a link to the sql specific document 2024年03月04日 13:27:04 -07:00
renovate.json start my renovate config 2024年12月20日 15:23:37 -07:00
todo.md bunch of todo items 2024年03月04日 12:24:58 -07:00
workspace.dsl add the observability stack 2024年03月11日 22:50:05 -06:00

Microsoft Data Stack

This repo demonstrates architecture of a data warehouse using Microsoft Data stack. It is not meant to be a drop in solution. There is an app that produces data. This is translated into a star schema data warehouse which has a SSAS tabular model which aggregates data.

I will demonstrate "as code" principles throughout. Start with this readme file, and then explore the links to other parts of the codebase.

User Story

As a data professional, I often encounter MS SQL instances and other ancillary MS products. As of 2024, I do not believe a microsoft certificate would demonstrate the type of knowledge that organizations need to manage their MS data stack. I would like to have a git repo that I can use as a playground for documenting and modeling my thoughts on how I "do data with microsoft".

Components

App

Will be a powershell script to generate data/schema changes to start. We are going to mock up data to demonstrate recurring workloads on the database.

App SQL database

This database is generated via ORM tools from the app. Our tools will read data and load it into our Data Warehouse. This is our primary data source for the data warehouse. We will also keep changes to the schema updated in our source code and discuss why we want to do that.

Data Warehouse

Any design constrains some of the answers that can be answered in a data warehouse. I talk about what I see as constraints, in the limited example(s) we integrate.

SSAS - Tabular

This is going to be hard to do "as code". It will start with documentation on:

  • partitioning strategy
    • Dates are easy! Include an example of "transaction date" style partitioning and something based on source IDs.
  • refresh button
Monitoring

This really should be first, but I don't think you would still be reading this if I structured it that way. I want to have actionable, real time data to help me troubleshoot issues and introduce changes in an intelligent manner. This will include the use of Ola Hallengren's sql maintenance solution, Brent Ozar's SQL server first responder kit and the prometheus stack.

How To Build

You need gnu bash and docker.

I used vs code, gnu make, powershell 7+ to develop this. The jobs that will make up the ETL and general automation use powershell 7. Follow the Makefile targets and please open a ticket if you run into issues and would like me to improve the documentation/code.

I include a vs code devcontainer specification file to allow people to get an working environment quickly.

We trust in the CI. Refer to our Continuous Integration documentation and code to understand more about how to build this project.

SQL

You will need a .sql.env file with the SA password. Using the default make target will create one with the default password. Read up on sql more here

Documentation

The documentation is UTF-8 markdown files and should be editable in any text editor.

You will need structurizr cli and plantuml to generate the architecture diagrams that are linked throughout. structurizr lite can be used to run a local web server that provides an interactive view of these diagrams which is not needed, but pretty useful.