Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Find articles, guides, information and community news

Most Recent
slindsay
Community Admin
Community Admin

Introducing the Translytical Task Flow Contest - a community challenge to build, share, and inspire with reusable task flow templates that bridge analytics and action. Your work will grow the Translytical Task Flow Gallery and show off what’s possible with Microsoft Fabric.

Read more...

slindsay
Community Admin
Community Admin

Are you a Power BI enthusiast, a data science pro, or just someone who loves a great challenge? This August, we’re inviting you to unleash your creativity, and analytical skills in our inaugural Fabric Notebooks Competition for Power BI to contribute to the Power BI Notebooks Gallery.

Read more...

slindsay
Community Admin
Community Admin

Find answers to your questions about the upcoming Power BI Dataviz World Championships contest, EU edition.

Read more...

slindsay
Community Admin
Community Admin

This August, we’re celebrating creativity, storytelling, and community with four unique contests -from Power BI visualizations to notebooks, code templates, and custom sticker designs. Whether you’re into dashboards or doodles, there’s something here for you.

Read more...

slindsay
Community Admin
Community Admin

Have you heard? The DataViz World Championships is back - with the finale being held at FabCon in Vienna!

Read more...

slindsay
Community Admin
Community Admin

This article details the judging process for Fabric Community Contests.

Read more...

Abhilash_P
Continued Contributor
Continued Contributor

Databricks is widely known for large-scale data processing and building machine learning models. It is primarily used by IT teams, such as data engineers and data scientists, for managing and transforming massive volumes of data. On the other hand, business users often rely on Power BI for interactive dashboards and visualizations, connecting to various data sources for day-to-day analytics.

In this blog, we’ll explore how organizations can bridge Databricks and Power BI to give business users seamless access to curated, governed data without duplicating data pipelines or manual effort.

For organizations already using Databricks for data engineering and Power BI for analytics, this integration brings tangible benefits: streamlined implementation, cost optimization, scalable performance, and consistent security and governance.

Read more...

BhavinVyas3003
Super User
Super User

Power BI has grown beyond just creating dashboards. It’s now a full-fledged analytics platform. As someone who works with data regularly, I’ve picked up a few practical tricks that make a big difference in day-to-day reporting. Here are 10 features and shortcuts that every analyst should know in 2025.

Read more...

prathyoo
Advocate II
Advocate II

I have recently used Gemini-CLI to document Power BI reports which are in the PBIP format. Here is the prompt I have used - 

# AI Prompt for Generating a Power BI Design Document (Batched)

You are an expert AI assistant tasked with creating a comprehensive technical design document for a Power BI report by analyzing its raw file structure. Your goal is to produce a clean, human-readable Markdown output detailing the report's structure, visuals, and purpose.

**IMPORTANT WORKFLOW: You will process the report in batches of four (4) pages at a time to handle large reports efficiently.**

### **Phase 1: Full Report Analysis & Planning**

Your first step is to perform a silent analysis of the entire report structure to plan the batched workload.

1.  **Analyze Structure**: Parse the `definition/pages/pages.json` file to get the `pageOrder` array. Then, iterate through each page's corresponding `page.json` file to create a final, ordered list of all **visible** pages.
2.  **Confirm the Plan**: Once you have the complete list of visible pages, do not generate any documentation. Instead, state the total number of visible pages and how many batches will be required. For example: *"Analysis complete. There are 11 visible pages, which will require 3 batches to document. Ready to proceed with Batch 1."*

---

### **Phase 2: Batched Documentation Generation**

You will wait for my command to process each batch. You must keep track of all generated "Page Summaries" in memory to use in the final phase.

1.  **On Command ("Process Batch X")**:
    * I will ask you to process a specific batch (e.g., "Proceed with Batch 1").
    * You will then process the corresponding four pages from your ordered list (e.g., pages 1-4 for Batch 1, 5-8 for Batch 2, etc.), ensuring page numbering is continuous across batches.
    * For each page in the current batch, you will perform the following steps:
        * **Generate Page Summary**: Synthesize a concise, 2-3 sentence paragraph that describes the overall objective of the page based on its visuals.
        * **Detail Visuals**: For each visual on the page, provide its documentation.
    * **Output**: Generate and output the complete Markdown content **only for the pages in the current batch**, following the format specified in "Phase 4".

2.  **Visual Analysis (per visual)**:
    * **File Location**: `definition/pages/{PageName}/visuals/{VisualFolder}/visual.json`. The {PageName} is the same as the value in the pageOrder attribute of `definition/pages/pages.json` file.
    * **Filtering**: IGNORE visuals where `"visualType"` is `"image"` or a trivial `"textbox"`. Trivial `"textbox"` is the one that is used as labels in a page. Any other `"textbox"` in the page should be documented.
    * **Data Extraction**: From `visual.json`, extract:
        1.  **Visual Title**: From the `title` property.
        2.  **Visual Type**: From the `visualType` property.
        3.  **Fields Used**: From the `projections` or `dataRoles` object, extract the **Role**, the **Semantic Model Field Name**, and the **Display Name**. The display name is from the `displayName` attribute; if it's missing, fall back to the `property` attribute.
        4.  **Purpose**: Synthesize a two-sentence description of the visual's function.

---

### **Phase 3: Final Report Overview Generation and file creation**

1.  **On Command ("Generate Report Overview")**:
    * After the final batch has been processed, I will give this command.
    * You will then take all the **"Page Summary"** paragraphs you have collected from **all batches**.
    * Synthesize these summaries into a single, high-level **"Report Overview"** paragraph (3-4 sentences).
    * You will then create a markdown file named `{Report Name} Documentation.md`, where `{Report Name}` is the name of the folder that ends with `.Report`.
    * The file will have two header sections: `Report Overview` and `Report Pages`.
    * The generated `Report Overview` paragraph will be placed under the `Report Overview` section.
    * All the generated documentation from the previous batches will be placed under the `Report Pages` section.

---

### **Phase 4: Output Format (for each Batch)**

For each batch, the output must strictly follow this Markdown structure.

```markdown
## 1. Page: [First Visible Page's Display Name]

**Page Summary:** [Insert the "Page Summary" for this page here.]

### [Visual Title]
- **Visual Type:** [Visual Type]
- **Purpose:** [The synthesized purpose sentence for this visual.]
- **Fields Used:**
  - **[Role]:** '[Display Name]' (Field: '[Semantic Model Field Name]')
  - **[Role]:** '[Display Name]' (Field: '[Semantic Model Field Name]')

---

### [Next Visual on this Page]
- **Visual Type:** [Visual Type]
- **Purpose:** [The synthesized purpose sentence for this visual.]
- **Fields Used:**
  - **[Role]:** '[Display Name]' (Field: '[Semantic Model Field Name]')

---

## 2. Page: [Second Visible Page's Display Name]

**Page Summary:** [Insert the "Page Summary" for this page here.]

### [Visual Title]
- **Visual Type:** [Visual Type]
- **Purpose:** [The synthesized purpose sentence for this visual.]
- **Fields Used:**
  - **[Role]:** '[Display Name]' (Field: '[Semantic Model Field Name]')
  - **[Role]:** '[Display Name]' (Field: '[Semantic Model Field Name]')

---

### [Next Visual on this Page]
- **Visual Type:** [Visual Type]
- **Purpose:** [The synthesized purpose sentence for this visual.]
- **Fields Used:**
  - **[Role]:** '[Display Name]' (Field: '[Semantic Model Field Name]')

---
... (continue for all visuals on the page, then for all subsequent pages in the current batch)

vmore
Regular Visitor

Hi:

I'm sharing my experience with this problem, which it took me a couple days to solve, in hopes that it can be helpful to anyone.

I was writing report summaries with the functionality that allows you to add dynamic values (like, ad hoc DAX and AI-generated measures) to text boxes when, one day, it suddenly stopped detecting my measures and I couldn't add them anymore.


I couldn't understand why this was happening. They were clearly available in the model, but not showing up inside the text box visual, eventhough they worked perfectly in other visuals, like Cards.

I tried all the tricks I could think off or find online: restarting Power BI, duplicating the .pbix file with a different name, clearing PBI's cache, using an earlier version of the file, asking a colleague to see if it was a problem with my PBI version, recreating some measures… but none of it worked.

 

💡 Eventually, I found the key: the issue was related to the Q&A visual and its natural language engine, which is also used under the hood for the Add-a-dynamic-value (+ Value) functionality within text boxes.

 

Solution:

  1. Go to Modeling > Q&A Setup > Synonims.
  2. Disable as many tables as possible in that view.
  3. Close the dialog box and wait for the changes to apply.

After doing this, PBI immediately started recognizing my measures inside the text box (and also in the Q&A visual, which I was not using in my report, but I tried as a result of this issue).

 

🧠 Why does this seem to happen?

The Q&A visual shares the same natural language engine that powers dynamic values in text boxes (basically, Copilot). If there's an issue with how the semantic index handles your tables or measures, it may prevent new measures from being recognized properly. In my experience, this tends to happen in models with too many tables and/or measeures (in my case, I had 700+ measures when I detected the issue).

 

I couldn’t find this solution anywhere in the forums or online, so hopefully this saves someone else a lot of time — it took me nearly two days to figure it out.

Cheers.

vojtechsima
Super User
Super User

tl;dr Power Query M language doesn’t have a while loop as you know it, but it does have a function called List.Generate() that can help you achieve the same thing. This article explains what a while loop actually is and how to mimic that behavior in M.

Read more...

slindsay
Community Admin
Community Admin

Check out the judges favorite entries from the PBI10 dataviz contest.

Read more...

slindsay
Community Admin
Community Admin
slindsay
Community Admin
Community Admin

Get your digital swag here celebrating 10 years of Power BI!

Read more...

adityavighne
Continued Contributor
Continued Contributor

In today's data-driven world, speed and efficiency are paramount. Your Power BI reports might be visually stunning and packed with insights, but if they take an eternity to load or interact with, their impact diminishes significantly. This is where the Power BI Performance Analyzer becomes your best friend.

As a data professional in Pune, Maharashtra, India, I've often seen teams struggle with sluggish Power BI reports, leading to frustration and reduced productivity. The Performance Analyzer offers a powerful yet accessible way to pinpoint performance bottlenecks and optimize your reports for a smoother user experience.

Read more...

Helpful resources

Join Blog
Interested in blogging for the community? Let us know.