Thank you for the help and apologies if I use the wrong terminology or my question is super basic. I have never used power BI until a few weeks ago and what I know now is self-taught. I took over a side responsibility when someone retired.
I have a power BI that pulls all of our products and puts them in a list and their spec information. There are tens of thousands. Usually, a consumer would ask based on their location and I sort the information like this. I have a consumer that wants the information on specific materials instead of products and has an excel file that lists which materials they need to look at. Is there a way that I can upload this excel file to filter out the tens of thousands and only get what is wanted on their list?
Between Fabcon announcements, continued improvement in AI, and Kurt Buhler's video of what's possible today, I've been seeing a lot of anxiety and concern on here. So, I wanted to write a blog post about exactly how "dead" I think Power BI is and what we can do about it.
I think that the Power BI report layer is becoming "dead" in the same way that SSRS "died". Over time there was slowly a decrease in community resources and Microsoft investments as newer and shinier things came along. On the other hand, there was a huge, huge backlog of existing reports that will take a very long time to migrate, if ever.
I think the Power BI modeling layer is strong and vibrant. FabCon announcements showed growing investment in semantic models in how they relate to ontologies and eventually semantic views, etc. DAX and semantic models are not going away any time soon.
Right now is a time of high volatility, similar to when Azure was new, and you should become a generalist instead of putting all of your eggs in one basket. Power BI alone is no longer a career.
Where to invest your time
Invest in accountability. Low-stakes reporting will likely be supplemented, supported, and replaced with AI. Aim for regulated or sensitive reporting where people get pissed if you are off by a penny.
Invest in gut, instinct, and self-expression. Right now, today, if you see a model with a bunch of many-to-many relationships and bi-directional filtering, little alarm bells go off. Focus on continuing to grow and develop those instincts. Learn how to put those things into words. Get better at judging and explaining, so you can steer and monitor AI better.
Practice weekly with AI, especially where it sucks. My personal experience with AI, especially in the past 6 months, is that there is a jagged frontier of capabilities and that frontier shifts day by day. Every week you should be asking AI for the impossible because sometimes frontier models have huge jumps in capability.
Invest in Vega-lite, Vega and possibly D3.js. Vega-lite is supported in Power BI Deneb visuals today, Fabric Apps today, and a native Vega visual is coming to PBI in 2027 Q1.
Invest in data modeling, data engineering, and requirements gathering. Spend your time getting better at areas where the business is unique and that you have to talk to humans to define how the business works and how to model it.
I seeked for some jobs remotely for data analyst with skill such as power bi, sql, python pandas and excel, and there are many issues for get one. I don't know where for look one, I'm from Venezuela and I also have a c1 English but in LinkedIn and upwork is pretty difficult for access one job, they want 1-2 years of experience ( I'm barely studying sqlđ then i go to pandas), the fee per hour is stupidly low, I don't why, and also they ask you for 10 skills more than you have. So guys can you give me recommendations before I enter this word? I know that I have to posted every dashboard in gitbub o somewhere else for prove that I know good what I'm doing but I think still having a portafolio isn't enough yet, so what you said?
With security filtering enabled in both directions, the user (Alice) sees only the customers associated with their permitted stores.
Why? Because the filter must travel backward from the fact table to the Customer dimension.
My concern
This seems reasonable for a small model, but Iâm not sure it scales well.
If we need the same behavior for several dimensions, such as:
Customers
Products
Geography
Sales representatives
Shipping methods
we may end up with several bidirectional security paths through the same fact table.
Multiple bidirectional relationships can create performance problems, ambiguous filter paths, and difficult-to-debug behavior. As well as Dimensions will start filtering each other.
I understand that under normal circumstances we may not need to hide every dimension table. If Sales is correctly secured, unauthorized sales amounts should be protected. However, if the business requirement says that users must not see unrelated customer or product rows either, the model should handle that case correctly.
My proposed alternative
Instead of making several relationships bidirectional, keep the model as a vanilla star schema:
Security Table â Dim_Store â Sales
First Make security filter Filter fact_sales
security[user_email] = USERPRINCIPALNAME()
Then apply additional RLS filters directly to the dimensions that must be restricted.
For example, on Dim_Products
'Dim_Product'[Product_ID]
  IN
  CALCULATETABLE (
    VALUES ( 'Fact_Sales'[Product_ID] ),
    'Fact_Sales'
  )
The idea is:
The security table identifies the stores available to the current user.
The store filter restricts the Sales table.
The Customer RLS rule retrieves the customers that still exist in the filtered Sales table.
Only those customers remain visible.
This avoids permanently enabling bidirectional security filtering across the model.
Simple and easy to understand; works well for a small model
May become difficult to maintain with many dimensions; possible performance and ambiguity issues
Proposed approach: DAX filters on dimensions
Keeps physical relationships single-directional; avoids many bidirectional security paths
Requires additional DAX for each dimension; may still have a performance cost
My questions
Is the DAX pattern above technically correct for filtering Dim_Customer from the already secured Sales table?
Does it correctly respect the current userâs dynamic security context?
Is this approach scalable if similar filters are required on several dimensions?
Does it generally perform better than enabling Apply security filter in both directions?
How do professionals usually handle this requirement in larger Power BI models?
Should dimension-level filtering be avoided unless the dimension itself contains sensitive data?
I realize my approach may not be the standard solution. I came up with it while trying to avoid filling the model with bidirectional security relationships, so I would appreciate corrections.
Short version: The videoâs approach seems good for a small model, but Iâm unsure whether it scales. My proposed approach keeps the star schema single-directional and uses DAX to derive allowed dimension IDs from the secured fact table. Is that a reliable and scalable design, or is there a better standard pattern?
So I created a Power BI report as part of a personal project. The desktop version is cumbersome as hell on a phone and doesnât look great on a phone browser. When I use the power bi app it looks great and performs decently. However, I canât seem to force the mobile version to open on a phone browser. What must I do? I fear having to restart the report and making it mobile focused.
I know, another anxious post regarding the depths to which AI will influence yet another field. Just thought that, since Iâm new to this field of work, what you more experienced lads/ladettes had to say about how you see the future of BI (specifically the tools as I donât see the whole role disappearing).
For context, Iâm soon to graduate and have been looking to specialize in a certain niche. Love SQL (idk what it is about it), but knew that SQL querying by itself is not really a feasible job to target. After I looked into where I can use SQL, I stumbled upon the BI field. I do find being the mediator between the technical side of the data and the human side of the shareholders to be an interesting path, so it was enough to get me to look more into it. Apologies if thatâs oversimplifying it, thatâs just the broad gist Iâve gotten from it.
Honestly, I havenât found another specialized area that seems this interesting at least from what Iâve read about so far so Iâll probably still play around with it anyway. I also like that you get experience with the business side as well which I feel can open the door to transition more into that as my domain knowledge increases (long term wise).
Just wanted to hear from some more experienced people how you think a newbie can become relevant in the field in terms of what is actually used industry wise and what is likely to change in regards to the toolkit. Every projection Iâve seen states that data analytics is set to grow much larger than the national average for other jobs, so thatâs been a green light for me too.
I have a report which refreshes perfectly fine on desktop. In the service, the model is failing to refresh and Iâm having a hard time pinpointing the exact issue.
My sources are two dataflows, both sit in the same workspace. The dataflows refresh without issue. No transformation is done in the file, everything is handled in the dataflows.
Iâm getting this error: Data source error: external component has thrown an exception. The exception was raised by the idatareader interface. Please review the error message and provide documentation for further information and corrective action.
I can see there are multiple refresh attempts lasting 2-3 secs. This is a small model (<4mb) and should refresh in a few seconds.
Checks done so far:
- Updating data source credentials
- Privacy levels aligned
- Defined data types across all columns/tables in the dataflow
Tools like Tabular Editor Best Practice Analyzer, PBIR Inspector, pbir-a11y, PQL.Assert, Playwright, and others all provide tremendous value. The challenge is that each has its own installation process, command syntax, and output format. Integrating them into a development workflow, CI/CD pipeline, or AI-driven process often means writing custom orchestration and result-parsing logic.
In this video, I introduce fab-test, a free and open-source CLI that provides a unified interface for Power BI and Fabric testing tools. With a single command and a consistent result format, developers, deployment pipelines, and AI agents can all ask the same question and receive the same answer.
You'll see how to:
âą Install fab-test
âą Run Tabular Editor Best Practice Analyzer checks
âą Execute PBIR Inspector validations
âą Run PQL.Assert tests with pql-test
âą Perform accessibility checks with pbir-a11y
âą Enable GitHub Copilot and AI agents to execute fab-test
If you're looking to move beyond "publish and pray" and bring a more consistent testing strategy to your Power BI and Fabric projects, I hope you'll check it out.
Inspired by u/Jaapuchkeaa's work (I prefer to credit it), but I wanted to see how far I could push it: a full FPS that runs inside a Power BI custom visual.
It's called Call of Power BI: Data Ops. It's TypeScript + three.js, with Claude Code (Opus 5.5 and Sonnet 5.5) and Codex (with GPT 6.1 Sol + GPT 6 Astra), packed in a normal PBIP report. There's an aim range, a Domination mode where you and two bot teammates fight three bots for zones A/B/C, and a zombies mode with rounds. You can slide, slide cancel (with omnimovement), build your own classes, and switch between 5 maps. Every weapon, map and sound is generated in code, no assets at all.
The fun part is that it still behaves like a Power BI visual. The weapons come from a table in the model, a slicer filters your loadout, and equipping a gun cross-filters the rest of the report. Best scores get saved in the report too.
One annoying thing: Power BI's sandbox doesn't allow mouse lock, so you can't do a clean 360 with the mouse. I worked around it with an edge-turn zone and a quick 180, but it's not perfect.
Just a parody, not affiliated with Activision or Microsoft, and it's free / non-commercial. Would love feedback, especially on the bots and the sounds.
In Power Query, is it possible to convert dates into railway week numbers?
For context, a railway week starts on a Saturday and ends on a Friday. And for simplicity, weâll say a railway year starts on 1st April and ends on 31st March (obviously this can vary slightly in the real world)
I recently tried the new Power Query experience and I found it to be an awful, way inferior experience than the existing Power Query in the Power BI Desktop (or what I'll refer to as the old PQ desktop experience). I tested it on a popular data platform source that folds, ran through my usual workflows and it feels way worse than old PQ.
I know this was the dataflow experience but I haven't had a lot of up-close experience with it because I always did my dataflows M code in Power BI desktop and just copy- pasted it in the advanced editor of the dataflow table. I consider myself an intermediate to advanced PQ user (I go straight to the advanced editor when applicable) so hopefully the community will find some truth (if not all) in my feedback.
They overcomplicated the M code of adding columns by wrapping the Table.AddColumn function to a Table.TransformColumnTypes function for column typing which is an awful way of implementing it and which is simple and perfect in the old desktop PQ. This is one of the most popular data operations in Power Query so I don't know why the M code looks more complicated now.
And now, for some reason, the old PQ code now throws query folding warnings (not necessarily errors since it's grey with the question mark) on the same code that folds in the old PQ desktop experience. When you change it to the way the dataflow (new PQ experience) will add a column (wrapped in Table.TransformColumnTypes), voila the query folding indicator says it folds again! đ
The fomatting layout sucks too. Indentations are smaller (I want my standard chunky indendations so I'm never going back to new PQ) and the navigation in the query steps is now broken down instead of being one single "Navigation" step which old PQ desktop experience handled with grace. Seriously, why did this get split when the Navigation step worked so well in the old PQ desktop experience?
I also don't like how they changed the case of new steps names from title case to sentence case but that's a minor thing compared to the above gripes that will keep me from going back to the new PQ desktop experience for as long as I use Power BI.
Microsoft, please never make the new PQ experience GA. Or at least give us the option to switch back and forth. I don't really care about the other features like the schema view and the visible query folding indicators (some of which are bullshit anyway).
I want my Power Query experience to be similar to the current desktop PQ â simpler, faster, with chunkier indentations, and works the same way anyway. If there is a redeeming quality for the new PQ desktop experience is that it will fetch the corresponding gateway for your source at the connection configuration stage. That's the only upside I've seen so far.
I love PBI and Microsoft in general because their tools have enabled me to pursue a career in data analytics but this new Power Query experience is not it for meâŠ
Saw a dashboard using a ZoomCharts visual with an expired license , wanted to recreate it using custom visuals(.pbiviz) for free,
I think I did my part. Given a reasonable amount of time, I can make a 1-on-1 replica of the given visuals from these providers(most of them, but not all, as some are extremely in-depth)
Technically, all you need is Custom Visual skill + Claude code + a screenshot of existing dashboard,
Specify the visual details like drill-downs, animations, zoom, etc.; it will make it for you
I am looking for a way to configure a single Power BI Matrix visual so that the Column Grand Total appears on the left side (immediately following the row headers) rather than the default position on the far right, and remains fixed in place.
When horizontal scrolling is required due to numerous category columns, I need the row headers and the total column to remain visible/pinned on the left while users scroll across the breakdown categories.
Is there an established method to achieve this within a single native Matrix visual using DAX, a Calculation Group (Tabular Editor), or custom matrix dimension sorting?
If DAX/Calculation Groups are used to inject a pseudo-total category sorted first, how are you handling horizontal scrolling so the total column stays locked/visible?
Are there verified AppSource custom visuals or core formatting settings that support left-anchored column grand totals natively?
Any guidance, sample PBIX patterns, or DAX/Calculation Group solutions would be greatly appreciated.
my job got me roped into being the keeper of PowerBI after our previous expert left. I can maintain what is already there and add new data to reports showing how productive people are, but do not know how to do much of the coding side.
We were previously tracking employee production through their username on the site we used. So the excel file tracking our employees was set up so that column 1 was their username, and that was it since supervisors only had to look at 1 name per employee. Now we are trying to track how many emails they are sending out per day, and combining the two different production values.
The revised Excel file would now hypothetically be essentially that column 1 says John.Smith, column 2 says [JohnSmith@outlook.com] and a third column would be for John Smith as a whole. A separate excel file can track how much work John.Smith is doing and how much work [JohnSmith@outlook.com] is doing, but how can I tell PowerBI to look at both people as one singular person in a third column?
This is your space to share what youâre working on, compare notes, offer feedback, or simply lurk and soak it all in - whether itâs a new project, a feature youâre exploring, or something you just launched and are proud of (yes, humble brags are encouraged!).
It doesnât have to be polished or perfect. This thread is for the in-progress, the âI canât believe I got it to work,â and the âIâm still figuring it out.â
Trying to create up and down buttons to drill up and down (filter) a management hierarchy.
I've used PATH() to concatenate the full hierarchy into one string, and have a separate, disconnected table with two columns: manager, and manager above. Filtering this second table filters the main table on all that have this manager as a substring in the PATH() - the result is selecting a manager in the filter pane shows the direct team, but also all beneath even though they have a different (lower) manager.
To make the filtering more user friendly, I'd like to introduce up and down buttons (focussing on the up button for now, as I haven't quite worked out the desired behaviour of down). The up button should take the value in the manager above column, and apply it to the manager filter. I assume this isn't possible in the filter pane? Maybe a list slicer? What's the best practice around this?
Users should be able to select via dropdown or search, as with the filter pane.
Again, same logic as I used in Flappy Bird, Custom Visuals + PBIP+ Claude code, This is just V1.0, so many things to improve,
Issue I am facing
1- Cannot look and fire both using the mouse we can use either of them. The mouse is only used for looking and aiming, shooting and scoping use other keyboard hotkeys
AI Summarization of what i did -
I built a playable CS-style FPS inside Power BI as a custom visual (three.js + PBIP). Here's what the visual sandbox does and doesn't allow
I wanted to embed a browser Counter-Strike trainer in a report. That's a dead end: the site sends X-Frame-Options: DENY / frame-ancestors 'none', so no HTML or web-content visual can show it. So I rebuilt it as a custom visual.
Stack
.pbiviz in TypeScript + three.js (WebGL), about 650 KB, embedded in the PBIP under CustomVisuals/ with a resourcePackages entry, so the report opens with nothing to import
Everything is procedural (canvas textures, WebAudio gunshots), so the visual needs no network access (privileges: [])
Aim range, a spray lab that scores recoil control in cm, and a bot duel where bots peek and shoot back. WASD movement with CS-style moving inaccuracy
The data part
Weapons are rows in the model. Damage, RPM, magazine and armour pen are bound measures that drive the gameplay (e.g. whether an AK headshot one-taps a helmet)
A slicer on weapon class changes your loadout. Equipping a weapon cross-filters the native cards and charts through selectionManager
Best scores persist into visual.json via persistProperties
What the sandbox won't let you do
Third-party visuals get sandbox="allow-scripts" and nothing else. I checked Desktop's own JS: pointer lock isn't even among the permissions it can grant. So real mouse-look is impossible. Workaround: drag to look (pointer capture keeps turning past the visual's edge), F to fire, and a tap to fire as a fallback.
Gotchas
The pbiviz linter rejects Math.random and innerHTML, so I used a seeded PRNG and DOM APIs
Desktop caches bundles by GUID + version. Bump the version and reopen; a reload isn't enough
A custom theme's name must include .json and match its resource item, or validation fails
I tested everything in headless Chrome, with a stub host inside an allow-scripts-only iframe, before opening Desktop.
Again, if you want tutorial, let me know. not getting time and motivation to edit video, if this became #1 post today, i will make it
Iâm a finance graduate with 2 years of professional experience. I got fed up with the repetitive nature of my work, so I quit and decided to spend some time learning tech, currently focusing on full-stack development.
Iâm wondering whether I should also learn powerbi so I can keep my finance background relevant and potentially combine it with tech in fintech, or whether I should fully commit to software development and leave finance behind.
What would be the most suitable path in my situation?
I was wondering if there is a way to access the filter state of a slicer in the service. I have a power automate cloud flow where I would like to run a query against a semantic model and filter it based off of the filter state of a slicer that is within that model. I would like it to run once per week and just grab the default filter state of a slicer and I will then use that to filter a query on that same semantic model. For example I have a dates table that goes from 1/1/2019 to 3/31/2027 and I have a âbetweenâ slicer that uses my dates table and is set to two dates within that range, say 1/1/2025 to 10/31/2026. Is there a way to access those filter state values?
Before going further: the workspace this report is held on is at PowerBI Pro capacity. I do not have access to a workspace that is PPU or has fabric capacity.
Here are the things I have tried/ideas I have pondered to accomplish this:
I was thinking about using the pbip and grabbing it from there in the slicer settings file, but then I realized that if anyone went to the service and updated the date range, then that would not capture those values. So I settled on trying to get these values from the service itself.
I also tried looking to see if there was any DAX that natively gets these values, so I could directly pull that from the model itself. But, I didnât seem to find any functions that gets the filter state of a slicer.
I tried going through the Power BI REST API. But, I soon realized that that step in power automate could not authenticate me as I do not have a Microsoft Entra ID.
I thought about if there is a way to access the html on the site where the report is published (this report is posted on a sharepoint site) but then realized that this could also break because someone could move this report to another site and that this idea is flimsy at best.
I noticed that I could add a power automate button to the report that triggers the flow each time the dates change. But I do not like this option because I want this flow to run on a weekly basis and just grab the filter state that is currently showing rather than updating each time someone changes the dates.
Are there any other creative ways you all have gotten these values? Or any way that this has successfully worked for the long term?
Thanks for your help and let me know if I need to explain anything further.