-
Notifications
You must be signed in to change notification settings - Fork 134
01 Set‐up
-
Fork the Repository: github.com/bennyaustin/fabric-accelerator
-
Provision Fabric Capacity: Run the GitHub Action Workflow iac-fabric-dataplatform.yml to provision Fabric Capacity and related cloud resources. Follow the instructions in Infrastructure as Code (IaC) Bicep to configure and execute the workflow. Once provisioning is done, from the Fabric admin portal navigate to the Capacity Settings and take note of the Capacity ID 1, you will need this later.
-
Create a Workspace: From the Fabric portal, create a new workspace. Assign the Fabric capacity created in previous step to your workspace 2. Take note of the Workspace ID 3, you will need this later.
-
Create controlDB: While in Fabric portal create a SQL database4, name it controlDB. Take note of the connection string5, you will need this in a subsequent step.
-
Create a Service Principal: Create 6 or reuse an existing Service Principal. Take note of the Application (client) ID and the secret, as they will be used to authenticate the Fabric SQL database provisioned in previous step.
-
Create controlDB connection: Next, create a Fabric connection to controlDB by following these steps
- Grant db_owner permission to the Service Principal
CREATE USER [<service_principal>] FROM EXTERNAL PROVIDER
GO
EXEC sp_addrolemember 'db_owner', [<service_principal>]
GO
-
Grant the Service Principal contributor permission to the Fabric workspace
-
From the Fabric portal, create connection to controlDB7. Use the server and database name from the connection string noted earlier. Authenticate using Service Principal method with credentials from previous step. Take note of the Connection ID, you will need this later.
- Wide World Importers: This accelerator uses Wide World Importer database as a sample data source.
- If you don't already have it, install Wide World Importers8 as Azure SQL database. An S0 DTU on Standard tier with 50GB would be sufficient.
- Grant the Service Principal created earlier db_owner permission to Wide World Importers using the same SQL script in step 5
- From the Fabric portal, create connection to Wide World Importers. Authenticate using Service Principal method. Take note of the Connection ID, you will need this later.
- Refactor Connection IDs: Create a branch from main. Open the repo folder in VS Code and connect to the newly created branch. Search and replace all these GUIDs with the values you took note earlier.
Description | Find | Replace All |
---|---|---|
Fabric Capacity ID | e4eb626a-4082-4143-983d-6fc9284b74cd | your Capacity ID from step 2 |
Fabric Workspace ID | 00000000-0000-0000-0000-000000000000 | your Workspace ID from step 3 |
Fabric Workspace ID | 8d8d00a7-0e8a-4e3b-8c0e-8dcafac7adec | your Workspace ID from step 3 |
controlDB Name | controlDB-78d6902e-70ea-4fb0-b51e-af3f2aaee3b7 | your control DB database name from step 4 |
controlDB Connection ID | 78e8d795-a55c-412e-9b76-47ba404b4d51 | your control DB Connection ID from step 6 |
Wide World Importers Connection ID | a0a57e51-5032-4e46-b0f0-493c9d2f51c9 | your WWI Connection ID from step 7 |
Fabric Tenant Id | 4e921ed2-9b1c-457c-a917-16ef468eb90a | From Fabric portal, click the Help & Support icon (?) and select About Fabric. Take note of the Fabric Tenant Id from the ctid part of Tenant URL: https://app.fabric.microsoft.com/home?ctid=FabricTenantId |
After completing the find and replace, delete and move the folder es_fabricEvents.Eventstream to the recycle bin. Do not permanently delete it, as it is needed for the next step. This is a temporary workaround while Git sync issues are being addressed by the Fabric platform. Once done, commit and push the updates to branch.
-
Connect Git Repository: Connect your workspace to your Git repository 9. Set your preferred branch to the one in previous step that has the refactored IDs. Set the Git folder as workspace, then connect and sync.
-
Configure es_fabricEvents.Eventstream itemId: From recycle bin, restore es_fabricEvents.Eventstream folder. Open evenstream.json file in VS Code. You will need to replace itemId of the following entries in JSON file.
Description | Find itemId | Replace itemId |
---|---|---|
Fabric Tenant Id | 4e921ed2-9b1c-457c-a917-16ef468eb90a | From Fabric portal, click the Help & Support icon (?) and select About Fabric. Take note of the Fabric Tenant Id from the ctid part of Tenant URL: https://app.fabric.microsoft.com/home?ctid=FabricTenantId |
lh-bronze-storage | c6c5024f-de55-45ca-a79a-decbe16235e3 | Object Id of lh_bronze lakehouse. Open the lakehouse in your workspace, and the ID is after /lakehouses/ in the URL |
lh-silver-storage | cc80a0ab-603d-4df9-bdfc-c35a7e8ab095 | Object Id of lh_silver lakehouse. Open the lakehouse in your workspace, and the ID is after /lakehouses/ in the URL |
dw-gold | 7e2bbf6b-43fb-498c-90e3-56199c8c3b5e | Object Id of dw_gold data warehouse. Open the data warehouse in your workspace, and the ID is after /databases/ in the URL |
Master-ELT-ASQL | 02b37a75-fb44-4efb-9d88-b6171a4d0d7d | Object Id of Master ETL ASQL data pipeline. Open the data pipeline in your workspace, and the ID is after /pipelines/ in the URL |
Optimize-DeltaLake-Tables | dcbe357b-2a94-4d28-a21f-8e2300e33f89 | Object Id of Optimize DeltaLake Tables notebook. Open the notebook in your workspace, and the ID is after /synapsenotebooks/ in the URL |
storageEvents | b22b1edd-6292-97ea-4089-fe9314ea1177 | Object Id of kdb_fabricEvents KQL database. Open the KQL database in your workspace, and the ID is after /databases/ in the URL |
workspaceEvents | b22b1edd-6292-97ea-4089-fe9314ea1177 | Object Id of kdb_fabricEvents KQL database. Open the KQL database in your workspace, and the ID is after /databases/ in the URL |
jobEvents | b22b1edd-6292-97ea-4089-fe9314ea1177 | Object Id of kdb_fabricEvents KQL database. Open the KQL database in your workspace, and the ID is after /databases/ in the URL |
Once done, commit and push the updates to branch.
-
Sync Updates: From your Fabric workspace, sync updates to get the latest version of the accelerator Fabric items. Once the sync is successful, merge this branch to main through a Pull Request. This will be you baseline code going forward.
-
Update Lakehouse References: Once sync is successful, update the missing Lakehouse references in these notebooks to lh_silver as default.
- L1Transform-Generic-Fabric
- Optimize Delta Lake Tables
-
Update EnvSettings Notebook: From your workspace, navigate to EnvSettings notebook and update these variables
Variable | Description | Default Value |
---|---|---|
bronzeWorkspaceId | Fabric Workspace ID for the Bronze medallion layer | your Workspace ID from step 3 |
bronzeLakehouseName | Bronze Lakehouse name. Set to None if not applicable | lh_bronze |
bronzeDatawarehouseName | Bronze data warehouse name. Set to None if not applicable | None |
silverWorkspaceId | Fabric Workspace ID for the Silver medallion layer. Use the same ID if all medallion layers are in the same workspace | your Workspace ID from step 3 |
silverLakehouseName | Silver Lakehouse name. Set to None if not applicable | lh_silver |
silverDatawarehouseName | Silver data warehouse name. Set to None if not applicable | None |
goldWorkspaceId | Fabric Workspace ID for the Gold medallion layer. Use the same ID if all medallion layers are in the same workspace | your Workspace ID from step 3 |
goldLakehouseName | Gold Lakehouse name. Set to None if not applicable | None |
goldDatawarehouseName | Gold data warehouse name. Set to None if not applicable | dw_gold |
- Deploy controlDB objects: Follow the instructions in Deploy controlDB to deploy ELT Framework database objects.
The baseline deployment of the Fabric Accelerator is now complete.
You can now explore the features and extend them as needed. To get a good feel of how all these hang together, it's highly recommended to take a quick look at the accelerator before taking the plunge.