From 94ef8db289d5e61f29720cb0fae27e9f058e5b98 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:10:23 -0600 Subject: [PATCH 01/37] best practices overview all workloads Azure Data Factory (ADF) - Best Practices Overview Data Engineering - Best Practices Overview Data Warehouse - Best Practices Overview - in progress Data Science - Best Practices Overview - in progress Real-Time Intelligence - Best Practices Overview - in progress Power Bi - Best Practices Overview Copilot - Best Practices Overview - in progress Purview - Best Practices Overview - in progress OneLake - Best Practices Overview - in progress --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f934f1e..401b0b2 100644 --- a/README.md +++ b/README.md @@ -201,13 +201,13 @@ Click to read more about [Microsoft Purview for Fabric - Overview](./Purview-Fab - [Azure Data Factory (ADF) - Best Practices Overview](./Workloads-Specific/DataFactory/BestPractices.md) - [Data Engineering - Best Practices Overview](./Workloads-Specific/DataEngineering/BestPractices.md) -- [Data Warehouse - Best Practices Overview]() - in progress -- [Data Science - Best Practices Overview]() - in progress -- [Real-Time Intelligence - Best Practices Overview]() - in progress +- [Data Warehouse - Best Practices Overview](./Workloads-Specific/DataWarehouse/BestPractices.md) - in progress +- [Data Science - Best Practices Overview](./Workloads-Specific/DataScience/BestPractices.md) - in progress +- [Real-Time Intelligence - Best Practices Overview](./Workloads-Specific/RealTimeIntelligence/BestPractices.md) - in progress - [Power Bi - Best Practices Overview](./Workloads-Specific/PowerBi/BestPractices.md) -- [Copilot - Best Practices Overview]() - in progress -- [Purview - Best Practices Overview]() - in progress -- [OneLake - Best Practices Overview]() - in progress +- [Copilot - Best Practices Overview](./Workloads-Specific/Copilot/BestPractices.md) - in progress +- [Purview - Best Practices Overview](./Workloads-Specific/Purview/BestPractices.md) - in progress +- [OneLake - Best Practices Overview](./Workloads-Specific/OneLake/BestPractices.md) - in progress
VAR TotalSales = SUM('Sales'[Amount]) RETURN TotalSales to simplify logic and improve performance. |
+| **Best Practice** | **Description** | **Example**|
+|--------------------------------------|----------------------------------------------|-----------------------------------------------------------------------------------------------|
+| **Star Schema Implementation** | Structure your data using a star schema to improve clarity and query performance.| Separate fact tables (e.g., Sales) from dimension tables (e.g., Date, Customer) as recommended by [Power BI guidance documentation](https://learn.microsoft.com/en-us/power-bi/guidance/). |
+| **Efficient DAX Coding** | Utilize variables and avoid deeply nested functions to streamline DAX calculations.| Replace nested CALCULATE functions with variables: VAR TotalSales = SUM('Sales'[Amount]) RETURN TotalSales to simplify logic and improve performance. |
| **Reduce Cardinality When Possible** | Pre-aggregate data where applicable to reduce the detail in fact tables and improve efficiency. | Aggregate detailed transaction logs to daily totals if high granularity is not necessary, as covered in the [Optimization guide for Power BI](https://learn.microsoft.com/en-us/power-bi/guidance/power-bi-optimization). |
## Security and Governance
@@ -116,21 +116,21 @@ From [Understand star schema and the importance for Power BI](https://learn.micr
### Row-Level Security (RLS)
-| **Best Practice** | **Description** | **Example** |
-|---------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **Define RLS in Power BI Desktop** | Use Power BI Desktop to create roles and restrict data at the row level. | Implement RLS by defining roles such as `SalesManager` and applying DAX filters (e.g., `[Region] = USERPRINCIPALNAME()`) as described in [Row-level security (RLS) guidance in Power BI Desktop](https://learn.microsoft.com/en-us/power-bi/guidance/rls-guidance). |
-| **Test RLS Thoroughly** | Validate security settings using the “View as Role” feature before publishing your reports. | Verify RLS filters by simulating different user roles to ensure users can only view allowed data. |
-| **Optimize RLS Implementation** | Apply RLS filters preferably on dimension tables so that filtering propagates efficiently through relationships. | Structure RLS so that filters on the Customer or Region tables automatically restrict the related fact table data. |
+| **Best Practice** | **Description**| **Example**|
+|---------------------------------------|--------------------------------------------------------------------|----------------|
+| **Define RLS in Power BI Desktop** | Use Power BI Desktop to create roles and restrict data at the row level. | Implement RLS by defining roles such as `SalesManager` and applying DAX filters (e.g., `[Region] = USERPRINCIPALNAME()`) as described in [Row-level security (RLS) guidance in Power BI Desktop](https://learn.microsoft.com/en-us/power-bi/guidance/rls-guidance). |
+| **Test RLS Thoroughly** | Validate security settings using the “View as Role” feature before publishing your reports. | Verify RLS filters by simulating different user roles to ensure users can only view allowed data. |
+| **Optimize RLS Implementation** | Apply RLS filters preferably on dimension tables so that filtering propagates efficiently through relationships. | Structure RLS so that filters on the Customer or Region tables automatically restrict the related fact table data. |
## Source Control and Collaboration
> Leverage version control systems and collaborative workspaces for efficient report deployment and teamwork.
-| **Best Practice** | **Description** | **Example** |
-|---------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Best Practice** | **Description** | **Example** |
+|---------------------------------------|------------------------------|----------------------------------------------|
| **Git-based Version Control** | Use Git repositories (via Azure DevOps or GitHub) to manage and version your Power BI Desktop projects. | Follow the [Azure DevOps build pipeline integration with Power BI Desktop projects](https://learn.microsoft.com/en-us/power-bi/developer/projects/projects-build-pipelines) guidance for setting up continuous integration. |
| **Collaborative Workspaces** | Configure shared workspaces within the Power BI service for team collaboration and controlled deployment. | Integrate your workspace with Git as described in [Power BI Desktop projects Azure DevOps integration](https://learn.microsoft.com/en-us/power-bi/developer/projects/projects-azdo) to manage team contributions. |
-| **Change Documentation** | Maintain a detailed changelog or README file to document major updates and decision rationales. | Use Git commit messages and an in-repository README to capture changes and ensure transparency across development cycles.
+| **Change Documentation** | Maintain a detailed changelog or README file to document major updates and decision rationales. | Use Git commit messages and an in-repository README to capture changes and ensure transparency across development cycles. |
## Performance Tuning
From 6e48349cb54a90987bf3af26cdca0c7f8472874e Mon Sep 17 00:00:00 2001
From: Timna Brown <24630902+brown9804@users.noreply.github.com>
Date: Fri, 2 May 2025 17:31:30 -0600
Subject: [PATCH 03/37] cleaning
---
Workloads-Specific/PowerBi/BestPractices.md | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/Workloads-Specific/PowerBi/BestPractices.md b/Workloads-Specific/PowerBi/BestPractices.md
index beeffe4..60d4176 100644
--- a/Workloads-Specific/PowerBi/BestPractices.md
+++ b/Workloads-Specific/PowerBi/BestPractices.md
@@ -136,8 +136,8 @@ From [Understand star schema and the importance for Power BI](https://learn.micr
> Enhance report responsiveness and reduce resource load by optimizing visuals and query performance.
-| **Best Practice** | **Description** | **Example** |
-|---------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Best Practice** | **Description** | **Example** |
+|---------------------------------------|-------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Optimize Visuals and Interactions** | Limit the number of visuals per report page and simplify complex interactions to improve performance. | Use [Optimize ribbon in Power BI Desktop](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-optimize-ribbon) to pause visuals and control query execution during design. |
| **DirectQuery Optimization** | Use features from the Optimize ribbon to streamline DirectQuery interactions and reduce redundant queries. | Follow methods in [DirectQuery optimization scenarios with the Optimize ribbon in Power BI Desktop](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-optimize-ribbon-scenarios) to adjust visual refresh behavior. |
@@ -145,23 +145,22 @@ From [Understand star schema and the importance for Power BI](https://learn.micr
> Keep your reports self-explanatory and maintain a centralized repository for ongoing support and future enhancements.
-| **Best Practice** | **Description** | **Example** |
-|---------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Best Practice** | **Description** | **Example**|
+|---------------------------------------|-----------------------------------------------------------|--------------------|
| **In-Report Annotations** | Use text boxes, tooltips, and in-report comments to document data sources, transformations, and calculation logic. | Include explanatory notes within report pages as encouraged in the [Power BI guidance documentation](https://learn.microsoft.com/en-us/power-bi/guidance/). |
| **Scheduled Reviews and Updates** | Periodically review report performance, refresh schedules, and security settings to keep the solution optimized and current. | Adopt a routine review cycle based on feedback and usage metrics provided by Power BI service administration tools. |
-| **Centralized Repository** | Store and version-control all project artifacts (PBIX files, change logs, documentation) in a secure repository. | Use Azure DevOps or another Git-based repository, following the practices laid out in the source control sections above.
+| **Centralized Repository** | Store and version-control all project artifacts (PBIX files, change logs, documentation) in a secure repository. | Use Azure DevOps or another Git-based repository, following the practices laid out in the source control sections above. |
## Deploying Reports with DevOps Best Practices
> Automate and streamline deployment processes using CI/CD pipelines integrated within your Power BI environment.
-| **Best Practice** | **Description** | **Example** |
-|---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Best Practice** | **Description** | **Example**|
+|---------------------------------------|------------------------------------------------------------|---------------------------------|
| **Automated Build Pipelines** | Integrate Git repositories with Azure DevOps to automatically validate and deploy Power BI content. | Refer to [Azure DevOps build pipeline integration with Power BI Desktop projects](https://learn.microsoft.com/en-us/power-bi/developer/projects/projects-build-pipelines) for guidance. |
| **Deployment Pipelines via APIs** | Use the Power BI deployment pipelines APIs to automate report deployment steps and ensure quality across environments. | Implement automated deployments as described in [Automate deployment pipelines with APIs for Power BI items](https://learn.microsoft.com/en-us/fabric/cicd/deployment-pipelines/pipeline-automation). |
| **Continuous Integration** | Incorporate quality gates and automated testing within your CI/CD process to catch issues early in the development cycle. | Utilize Git-based integration and automated tests as shown in [Power BI Desktop projects Azure DevOps integration](https://learn.microsoft.com/en-us/power-bi/developer/projects/projects-azdo) for best practices. |
-