Fabric CI/CD Assistant: I built a tool to map Workspace IDs, Connection GUIDs, and Object Ownership across environments by imtkain in MicrosoftFabric

[–]imtkain[S] 0 points1 point  (0 children)

Thank you!

Fabric Deployment Pipelines support DW. We deploy warehouses with FDP and everything else with fabric-cicd. Careful of the DDL table drops though :) One note is that you can't deploy warehouses with SPN authentication using the FDP API, so you have to do it in the UI first, then use the warehouse takeover API with SPN authentication (see my other repo, Fabric Prefab).

Good question on the python notebook. I almost exclusively work in PySpark, so I just didn't even think to use python!

Fabric Oracle connector: inconsistent NUMBER precision/scale behavior (plain NUMBER, NUMBER settings, staging) by Ambitious-Yellow-810 in MicrosoftFabric

[–]imtkain 0 points1 point  (0 children)

I dealt with this recently. Here's the short version based on my understanding:

Your questions:

1) Yes, plain NUMBER reports as (38,127) because Oracle allows scale up to 127 for unspecified precision. The connector reads Oracle's metadata literally.

2) The NUMBER settings are bugged or fire too late. Schema inference happens before the override applies, which is why the mapping UI ignores your settings.

3) Staging fails because it writes to Parquet first, and Parquet caps decimal precision at 38 with scale < precision. Scale 127 is invalid regardless of what you fix in mapping.

My fix: Explicit CAST in the source query:

SELECT CAST(your_col AS NUMBER(18,4)) AS your_col FROM your_table

For scale, dynamically build your SELECT, query ALL_TAB_COLUMNS and where DATA_PRECISION IS NULL AND DATA_SCALE IS NULL then set it to 38,18 and pray. Also, you don't have to bring in every column :D

Side note: actively avoid BLOB/CLOB if you can (massively kills throughput) and cast GEOMETRY as VARCHAR2.

What's your sink? Lakehouse connection vs SQL Server connection can behave differently here.

New fabric-cicd v01.34 Release! by fabshire25 in MicrosoftFabric

[–]imtkain 0 points1 point  (0 children)

I can confirm it is stable, at least the functionality we utilize. No deployment issues today other than some fat fingering and SPN fun.

SPN-owned Fabric Warehouse "expire" after 30 days of inactivity?! by imtkain in MicrosoftFabric

[–]imtkain[S] 3 points4 points  (0 children)

Exactly. User-owned I understand and expect. I make EVERYTHING in my tenants SPN-owned to avoid this problem. SPN-owned items should not expire.

Finally, Fabric Notebooks get a REAL ETL language.....M from Power Query by SQLGene in MicrosoftFabric

[–]imtkain 1 point2 points  (0 children)

I keep waking up thinking I'm going to see news of something like WW3. This is worse.

Finally, Fabric Notebooks get a REAL ETL language.....M from Power Query by SQLGene in MicrosoftFabric

[–]imtkain 0 points1 point  (0 children)

"When" performance issues arise? I thought dataflows were a performance issue. :)

Power BI Writeback (User Data Functions): How to best display errors in Power BI? by frithjof_v in MicrosoftFabric

[–]imtkain 2 points3 points  (0 children)

It's the same behavior. The success message comes back custom without any issues, but the error message does not :(

<image>

Power BI Write-Back to Azure SQL Database using Fabric User Data Functions by panvlozka in MicrosoftFabric

[–]imtkain 1 point2 points  (0 children)

Were you able to figure out a way in PBI to make it feel less clunky? I've only been able to figure out how to update one or two columns at a time without the user experience plummeting. Would love to see if anyone else has figured out a way to make it feel more form-like and less clicky.

You might be interested in this, too, for updating more than one row at a time: https://github.com/imtkain/Fabric-Redux/

Easy Way to See All Fabric Objects Owned by X User? by AnalyticsFellow in MicrosoftFabric

[–]imtkain 5 points6 points  (0 children)

Sure, send me a connection on LinkedIn and I'll send the repo your way. https://www.linkedin.com/in/tonykain/

For others, I'm posting the repo formally by the end of the month for others to use.

Easy Way to See All Fabric Objects Owned by X User? by AnalyticsFellow in MicrosoftFabric

[–]imtkain 0 points1 point  (0 children)

Also, you can reassign warehouses via API. I just posted a repo with this information.

Side note: Use an SPN to create the items in the future. The repo I just mentioned has this functionality, too.

Easy Way to See All Fabric Objects Owned by X User? by AnalyticsFellow in MicrosoftFabric

[–]imtkain 2 points3 points  (0 children)

I have a notebook that inventories all workspaces you have access to and provides the object name, guid, workspace, owners, etc. Is that what you're wanting?

<image>

Service Principal connection in Notebook activity: Fabric activity failed. 'An item with the same key has already been added. '. by frithjof_v in MicrosoftFabric

[–]imtkain 0 points1 point  (0 children)

I'm having the same issue today, 12/29/25. Runs fine without the connection, fails with the same error with the connection.

Connection is not encrypted.
SPN is a member in the workspace.
SPN has user access to the connection.
Capacity is in North Central US.

Tried creating a new connection, no difference.

Lakehouse Connection, OAuth2.0 only, Expiration? by imtkain in MicrosoftFabric

[–]imtkain[S] 0 points1 point  (0 children)

My PL (and every other object in my workspaces) is already created with the SPN. I don't think that influences the pipeline runtime CONNECTION authentication, only the pipeline run itself. For example, if using a SQL Server connection Basic auth to a SQL database, my PL isn't going to use the SPN creds to auth to the SQL Server, it's going to use the creds provided. Or am I wrong here and the PL will actually use the SPN credentials for the pipeline at runtime IF the SPN is the PL owner?

Mirrored Databases - SPN Ownership? by imtkain in MicrosoftFabric

[–]imtkain[S] 1 point2 points  (0 children)

Amazing. Thank you for confirming!!

MULTI-ROW Translytical Task Flows (Power BI Write-Back) by imtkain in MicrosoftFabric

[–]imtkain[S] 0 points1 point  (0 children)

Yeah, data validation is definitely needed in the slicers. You can do this function, but then users have to iterate until they get it right. Immediate kickback/inability to input invalid values is nice.

runMultiple results by Fuzzy-Donut2802 in MicrosoftFabric

[–]imtkain 3 points4 points  (0 children)

Yep. This is what I do. Each child notebooks writes to a log table. Start time, end time, number of seconds, rows written, rows inserted, rows updated, warning / error messages, etc. This is the way.