Skip to content

Commit d8fc9d1

Browse files
authored
missing | table
1 parent f5f0d14 commit d8fc9d1

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

Workloads-Specific/PowerBi/BestPractices.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ Last updated: 2025-05-02
5050

5151
> Ensure that your Power BI dashboards and reports are organized, visually cohesive, and provide clear insights at a glance.
5252
53-
| **Best Practice** | **Description** | **Example** |
54-
|--------------------------------------|------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
55-
| **Consistent Naming Conventions** | Use clear and descriptive names for reports, pages, visuals, measures, and datasets. | Instead of generic names like `Report1`, prefer descriptive names such as `SalesPerformanceReport`. |
56-
| **Modular Report Design** | Organize your reports by separating key performance indicators (KPIs), detailed analysis, and context. | Design separate pages for overviews, analytics details, and contextual information as your audience drills down. |
53+
| **Best Practice** | **Description** | **Example** |
54+
|--------------------------------------|-------------------------|-------------------------------------------------------------------|
55+
| **Consistent Naming Conventions** | Use clear and descriptive names for reports, pages, visuals, measures, and datasets. | Instead of generic names like `Report1`, prefer descriptive names such as `SalesPerformanceReport`. |
56+
| **Modular Report Design** | Organize your reports by separating key performance indicators (KPIs), detailed analysis, and context. | Design separate pages for overviews, analytics details, and contextual information as your audience drills down. |
5757
| **Visual Consistency** | Apply a uniform theme and layout using Power BI themes to maintain brand consistency and readability. | Follow [Tips for designing a great Power BI dashboard](https://learn.microsoft.com/en-us/power-bi/create-reports/service-dashboards-design-tips) for layout and visual emphasis best practices. |
58-
| **Annotations and Tooltips** | Document complex visual logic and calculations via in-report annotations and dynamic tooltips. | Include tooltips that explain data sources or DAX logic to enhance report understandability. |
58+
| **Annotations and Tooltips** | Document complex visual logic and calculations via in-report annotations and dynamic tooltips. | Include tooltips that explain data sources or DAX logic to enhance report understandability. |
5959

6060
### Example Report Layout
6161

@@ -76,20 +76,20 @@ From [Understand star schema and the importance for Power BI](https://learn.micr
7676

7777
> Enhance report flexibility by using parameters and dynamic expressions.
7878
79-
| **Best Practice** | **Description** | **Example** |
80-
|----------------------------------------|------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
81-
| **Power Query Parameters** | Use parameters to dynamically adjust data sources and filter conditions during data ingestion. | Define date range parameters in Power Query to allow reports to automatically update based on user configurations. |
79+
| **Best Practice** | **Description** | **Example** |
80+
|----------------------------------------|-------------------------------------------|------------------------------------------------------------------------|
81+
| **Power Query Parameters** | Use parameters to dynamically adjust data sources and filter conditions during data ingestion. | Define date range parameters in Power Query to allow reports to automatically update based on user configurations. |
8282
| **Dynamic DAX Expressions** | Create DAX measures that change in response to slicer selections or other user inputs. | Implement dynamic calculations using variables in DAX so that measures (like Year-over-Year growth) adjust automatically per user selection. |
83-
| **Dynamic Drill-throughs** | Build drill-through URLs and links dynamically for a seamless navigation experience. | Concatenate strings and field values in DAX to direct users to detailed reports or external dashboards. |
83+
| **Dynamic Drill-throughs** | Build drill-through URLs and links dynamically for a seamless navigation experience. | Concatenate strings and field values in DAX to direct users to detailed reports or external dashboards. |
8484

8585
## Incremental Data Refresh
8686

8787
> Optimize your data refresh process by updating only the data that has changed.
8888
89-
| **Best Practice** | **Description** | **Example** |
90-
|----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
89+
| **Best Practice** | **Description** | **Example** |
90+
|----------------------------------------|--------------------------------------------------|------------------------------------------------------------------------------------------------------|
9191
| **Enable Incremental Refresh** | Set up incremental refresh policies to refresh only new or modified data, reducing load time and resource usage. | Use the [Data refresh in Power BI](https://learn.microsoft.com/en-us/power-bi/connect-data/refresh-data) guidelines to configure incremental refresh for large datasets. |
92-
| **Data Partitioning** | Partition your data by logical segments (e.g., date ranges) to target refresh operations more efficiently. | Partition sales or transaction data by month or quarter so that only the most recent partitions are refreshed during scheduled updates. |
92+
| **Data Partitioning** | Partition your data by logical segments (e.g., date ranges) to target refresh operations more efficiently. | Partition sales or transaction data by month or quarter so that only the most recent partitions are refreshed during scheduled updates. |
9393

9494
> Click to read [Incremental Refresh for Reporting - Overview](./Workloads-Specific/PowerBi/IncrementalRefresh.md)
9595
@@ -104,10 +104,10 @@ From [Understand star schema and the importance for Power BI](https://learn.micr
104104

105105
> Build robust data models and optimize DAX calculations to ensure high performance and maintainability.
106106
107-
| **Best Practice** | **Description** | **Example** |
108-
|--------------------------------------|---------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
109-
| **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/). |
110-
| **Efficient DAX Coding** | Utilize variables and avoid deeply nested functions to streamline DAX calculations. | Replace nested CALCULATE functions with variables: <br/><code>VAR TotalSales = SUM('Sales'[Amount]) RETURN TotalSales</code> to simplify logic and improve performance. |
107+
| **Best Practice** | **Description** | **Example**|
108+
|--------------------------------------|----------------------------------------------|-----------------------------------------------------------------------------------------------|
109+
| **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/). |
110+
| **Efficient DAX Coding** | Utilize variables and avoid deeply nested functions to streamline DAX calculations.| Replace nested CALCULATE functions with variables: <br/><code>VAR TotalSales = SUM('Sales'[Amount]) RETURN TotalSales</code> to simplify logic and improve performance. |
111111
| **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). |
112112

113113
## Security and Governance
@@ -116,21 +116,21 @@ From [Understand star schema and the importance for Power BI](https://learn.micr
116116
117117
### Row-Level Security (RLS)
118118

119-
| **Best Practice** | **Description** | **Example** |
120-
|---------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
121-
| **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). |
122-
| **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. |
123-
| **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. |
119+
| **Best Practice** | **Description**| **Example**|
120+
|---------------------------------------|--------------------------------------------------------------------|----------------|
121+
| **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). |
122+
| **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. |
123+
| **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. |
124124

125125
## Source Control and Collaboration
126126

127127
> Leverage version control systems and collaborative workspaces for efficient report deployment and teamwork.
128128
129-
| **Best Practice** | **Description** | **Example** |
130-
|---------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
129+
| **Best Practice** | **Description** | **Example** |
130+
|---------------------------------------|------------------------------|----------------------------------------------|
131131
| **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. |
132132
| **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. |
133-
| **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.
133+
| **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. |
134134

135135
## Performance Tuning
136136

0 commit comments

Comments
 (0)