data warehouse
637 TopicsOneLake Security support for Fabric Warehouse - planned roadmap or intentional limitation?
I'm evaluating Direct Lake on OneLake for enterprise semantic models that span multiple Fabric items and workspaces. From the current documentation, OneLake Security appears to support: Lakehouses Mirrored Databases Mirrored Catalogs However, Fabric Warehouses are not listed as supported OneLake Security items. This raises a challenge for organizations that have adopted a warehouse-centric architecture. Another challenge is security for Direct Lake semantic models. My goal is to keep semantic models in Direct Lake mode while granting semantic model developers restricted access only to specific tables within specific Warehouse. Today, this appears difficult without granting broader permissions (such as ReadAll access), and OneLake Security is not currently listed as supporting Warehouse items. Ideally, I would like a Warehouse-based security model, Direct Lake on OneLake semantic models to function without exposing the entire Warehouse. For example: Wh_Fico Wh_Sales Wh_Scm Wh_Master Today, Warehouses support SQL-based security features such as: Object Level Security (OLS) Column Level Security (CLS) Row Level Security (RLS) GRANT / DENY permissions However, Direct Lake on OneLake is positioned as the preferred option for semantic models spanning multiple Fabric items, while SQL-based security is documented as a reason to remain on Direct Lake on SQL. My questions are: Is the absence of Warehouse support in OneLake Security an intentional product design decision? Is there any roadmap to enable OneLake Security roles directly on Fabric Warehouses? If Warehouse support is not planned, what is the recommended long-term architecture for warehouse-centric customers who want: Direct Lake on OneLake Cross-workspace semantic models Centralized table/column/row security Should customers expect to introduce a Lakehouse layer purely for OneLake Security, or will OneLake Security eventually become available directly on Warehouse items? Any guidance from the product team would be appreciated.151Views0likes5CommentsBest approach(es) to refresh Dev Warehouse from Prod Warehouse (Read-Write Copy) in Microsoft Fabric
We are currently evaluating the best practices for refreshing a Development Data Warehouse using data from a Production Data Warehouse within the same Fabric tenant. We have evaluated a few approaches based on the use case: Read-Only Access (Zero-Copy): If Dev only needs read access to Prod data, using OneLake Shortcuts is the clear choice. It provides instantaneous access with zero data duplication, no storage overhead, and minimal setup effort. Read-Write Access (Full Schema & Data Copy): If Dev requires a Read-Write copy (allowing developers to run DML operations like UPDATE, INSERT, or DELETE without impacting Production), our current options seem to be: Fabric Data Pipelines (Copy Activity): Scheduled or trigger-based pipelines to pull data from Prod to Dev. Cross-Database Querying / CTAS: Running T-SQL (CREATE TABLE AS SELECT ...) across workspaces. The Challenge: Both Read-Write options (Pipelines and CTAS) can become cumbersome to set up and maintain, especially as datasets grow. Additionally, duplicating large volumes of data incurs extra storage and CU (Capacity Unit) processing costs. Was wondering if there are better, more efficient options available in Microsoft Fabric to maintain or periodically refresh a Read-Write copy of a Warehouse in a Dev workspace? Is Table Cloning / Zero-Copy Clone supported or planned for cross-workspace scenarios? How are others managing periodic Dev environment refreshes from Prod without creating heavy data copy pipelines?238Views3likes9CommentsWarehouse Scaling
Hi everyone, As data volumes continue to grow, I'd like to understand how organizations scale Microsoft Fabric Data Warehouse solutions. Which techniques have had the biggest impact on: Query performance Cost optimization Data modeling Concurrent workloads Long-term maintenance Any lessons learned from production deployments would be greatly appreciated.273Views2likes3CommentsInsert/delete/Update data using Fabric Warehouse to Lakehouse
Hi Team, I need some guidance regarding insert, update, and delete operations from a Microsoft Fabric Warehouse on tables stored in a Fabric Lakehouse. I am using an external tool through which I can successfully connect to the Fabric Warehouse and query the Lakehouse tables exposed through the Warehouse. However, when I attempt to perform an INSERT operation, I receive the following error: Data Manipulation Language (DML) statements are not supported for this table type in this version of SQL Server. Could you please help me understand whether DML operations (INSERT/UPDATE/DELETE) are supported on Lakehouse tables through the Warehouse SQL endpoint? If not, what would be the recommended approach to write data to the Lakehouse while leveraging the Warehouse? Thanks in advance for your support.Solved132Views1like2CommentsRequest for Help: Warehouse Update Step Fails Between 3:30 AM and 7:00 AM
Hi All, We recently changed our Fabric capacity start time from 7:00 AM to 3:00 AM, and I updated the SQL Server to Fabric Lakehouse data ingestion pipeline to start at 3:30 AM. At the end of the pipeline for each table ingestion, there is a step that updates the Latest Update Date and Time in to the warehouse. However, this step consistently fails until 7:00 AM. After 7:00 AM, the same process runs successfully without any issues. I've attached an image that illustrates the behavior more clearly. Could anyone help identify what might be causing this? Is there any time-based restriction, service dependency, or configuration that needs to be enabled before 7:00 AM? Any insights would be greatly appreciated. Thanks!Solved244Views2likes4CommentsSQLDescribeParam appears unreliable for string parameters in warehouse queries
Apologies if this is a known issue that I just didn't find or somehow specific to our infrastructure, but I figured it was worth surfacing, since it's affecting multiple tables in multiple warehouses in multiple workspaces. Workaround included. Summary: Fabric Data Warehouse silently returns no matching rows for parameterized (RPC-bound) string comparisons Service: Fabric Data Warehouse (Warehouse SQL analytics endpoint) Severity: High — this is a silent correctness bug, not an error. Queries execute successfully and return a result set, but it's wrong, with no exception or warning raised. Summary: Any query executed against our Warehouse via a client that uses standard ODBC parameterized execution (bind parameters via SQLPrepare/SQLExecute/RPC, as opposed to inline literal SQL text) silently fails to match rows on string comparisons, while the identical query with numeric bind parameters works correctly, and the identical query submitted as literal SQL text (or as sp_executesql with an explicitly declared parameter type) also works correctly every time. Minimal repro: -- Run this first — confirms the value exists and is visible in this session: SELECT TOP 5 * FROM dbo.SomeTable; -- note a real value from a varchar column, e.g. groupId = 'ABC-123' -- Then, via a client using standard ODBC parameter binding (not literal text): SELECT * FROM dbo.SomeTable WHERE groupId = ? -- bound param: 'ABC-123' -- Returns 0 rows, despite the value being visibly present above. Contrast: SELECT * FROM dbo.SomeTable WHERE groupId = 'ABC-123' (literal text) → returns the correct row. EXEC sp_executesql N'SELECT * FROM dbo.SomeTable WHERE groupId = p1', N'@p1 nvarchar(max)', p1=N'ABC-123' (explicit type declaration) → returns the correct row. SELECT * FROM dbo.SomeTable WHERE sortOrder = ? (bound integer param) → returns the correct row(s). SELECT * FROM dbo.SomeTable WHERE groupId = ? (bound string param, no explicit type) → returns 0 rows. What we ruled out on our end (client-side): app query-building logic, RLS/session-context handling, connection pooling/reuse, ODBC Driver 18 version (tested 18.4.1.1-1 through 18.6.2.1-1, all identical behavior), pyodbc string encoding (UTF-8 setencoding/setdecoding), ANSI vs. Unicode driver mode, client-side query/statement caching, and column collation. Working theory: the ODBC driver, when it doesn't have an explicit type/length for a string bind parameter, calls SQLDescribeParam (backed server-side by sp_describe_undeclared_parameters) to ask Fabric how to bind it. We suspect Fabric's implementation of that describe path returns incorrect/unusable metadata for string parameters specifically, causing the subsequent bind to silently fail to match — while numeric parameters, which the driver can typically infer client-side without a describe round-trip, are unaffected. Current workaround: we now explicitly call cursor.setinputsizes() to declare every string parameter as NVARCHAR(MAX) before execution, which avoids the SQLDescribeParam round-trip entirely and resolves the issue. We'd like confirmation this is a known/expected limitation, or a fix if it's a regression — this went from working to broken with no changes on our side (same app code, same query shapes), so we suspect a recent change to the Warehouse compute engine's parameter-description handling. Client stack: Python, SQLAlchemy 2.0, aioodbc 0.5.0 → pyodbc, Microsoft ODBC Driver 18 for SQL Server (reproduced on multiple driver point releases).Solved80Views0likes1CommentEstimation of impac Pricing / Capacity Usage change
Two weeks ago, I received a mail from Microsoft about the way how Fabric Data Warehouse is updating how it accrues Capacity Units from August on. Basically capacity usage will be impacted by the time the data warehouse is used. - Everytime a virtual node will be used, it will be "billed" by a minimum of one minute (currently this minimum does not exist). - The CU multiplier is reduced from 2 CU per vCore to 0.53 CU per vCore. So the latter saves CU for longer ETL-pipeline runs. However, we connected our application to the datawarehouse and have a lot of SELECT and EXEC queries that costs way less than a second each to complete and are spread over the course of the day. We spend the last year optimizing those queries and most of the queries cost <5 CUs. Let's say within one minute I have 3 queries running. 3 queries * 5 CU =15 CU. According to the change, CU usage will increase massively (1 node x 60s x 2.12 CU = 127.2 CU). I understand we save time for the ETL-Jobs, but it is kinda hard to make an estimation of CU. I would like to estimate the impact for us and our clients. Microsofts solution mentioned in the e-mail is to monitor and compare usage before and after the change, but that would only be possible after the pricing change takes effect. Support couldn't help me. Did anybody find a satisifying solution? I tried to analyze data on the capacity metrics app, but that didn't really help me.Solved352Views1like7CommentsDeployment Pipeline does not rebind Direct Lake semantic model to target Warehouse
Deployment Pipeline does not rebind Direct Lake semantic model to target Warehouse Environment Microsoft Fabric Deployment Pipelines Semantic Model storage mode: Direct Lake Data source type: Warehouse Scenario DEV Workspace Sandbox Sandbox ├─ Warehouse └─ Semantic Model TEST Workspace Sandbox Test Sandbox Test Steps to reproduce Create a new Deployment Pipeline. Assign the DEV workspace (Sandbox). Assign the TEST workspace (Sandbox Test). Deploy both the Warehouse and the Semantic Model from DEV to TEST. Verify the deployment status. Result Both artifacts show: Warehouse -> Same as source Semantic Model -> Same as source The semantic model is successfully deployed to the TEST workspace. However, when opening the semantic model and inspecting a table, the metadata shows: Storage mode: Direct Lake Data source type: Warehouse Workspace: Sandbox instead of: Workspace: Sandbox Test Additionally, the Lineage View shows that the Semantic Model located in the TEST workspace is still connected to the Warehouse located in the DEV workspace. Expected behavior After deployment, the Direct Lake semantic model in TEST should automatically bind to the Warehouse deployed in the TEST workspace: Sandbox Test ├─ Warehouse └─ Semantic Model Additional validation performed Created a completely new Deployment Pipeline. Created a completely new TEST workspace. Confirmed Warehouse deployment succeeded. Confirmed Warehouse status = "Same as source". Confirmed Semantic Model status = "Same as source". Refreshed the Semantic Model after deployment. Verified the Lineage View. Verified the table metadata inside the Semantic Model. The issue persists. Additional information The Semantic Model was created directly in Microsoft Fabric from the Warehouse using Direct Lake mode. It was not published from Power BI Desktop. Question Is automatic rebinding of Direct Lake Semantic Models to the target Warehouse currently supported by Deployment Pipelines, or is manual rebinding required after deployment? If manual rebinding is required, what is the recommended approach for DEV → TEST → PROD deployments?Solved1.5KViews1like8CommentsPower BI Import Mode Fails with Cross-Warehouse Views Despite SELECT Permissions
Hi everyone, I'm looking for guidance on configuring permissions in Microsoft Fabric Warehouse. We have a warehouse called SupplyChain, where we've created views that reference tables stored in another warehouse, WH_Gold, within the same workspace. Our requirement is: The user should have access only to the SupplyChain warehouse. The user should be able to query the views in SupplyChain. The user should not have direct access to the underlying tables or the WH_Gold warehouse. The user is consuming the data through Power BI in Import mode. Currently, we've: Created a database role in SupplyChain. Granted the role SELECT permissions on the required objects. Added the user to this role. Since the user was unable to access the data through Power BI, we also created the same database role and granted the same SELECT permissions in WH_Gold. With this configuration, the user is able to query data directly from WH_Gold, but the Power BI report still throws the same permission error. When the user refreshes or accesses the Power BI report, they receive an error stating that they don't have permission to access WH_Gold. Is there a supported way to configure permissions so that users can query views in one warehouse without requiring access to the source warehouse? Are we missing any permission, or is this a limitation of cross-warehouse views in Microsoft Fabric? Any guidance or best practices would be greatly appreciated.Solved389Views2likes8CommentsDesigning a Star Schema Data Warehouse for a School in MS Fabric
I have a question regarding the design of a star schema for a school in MS Fabric. Unlike typical business scenarios such as internet and retail sales, the assessment data requires many measurable columns. I've already created the following dimension tables: DimStudent, DimTime, DimSubject, DimClass, DimStaff. However, I am uncertain about the best approach to building fact tables. Source data set: Grade A=5, B=4, C=3, D=2, F=1 for analysis Approach 1: Single fact table DateKey, StudentKey, SubjectKey, ClassKey, CalculatedMark, CalculatedGrade, ModeratedMark, ModeratedGrade, Assessment1 to Assessment15, Profile1 to Profile15 This would result in a fact table with 38 or more columns. Approach 2: Multiple Fact Tables FactMark: DateKey, StudentKey, SubjectKey, ClassKey, CalculatedMark, CalculatedGrade, ModeratedMark, ModeratedGrade FactAssessment: DateKey, StudentKey, SubjectKey, ClassKey, Assessment1 to Assessment15 FactProfile: DateKey, StudentKey, SubjectKey, ClassKey, Profile1 to Profile15 Approach 3: Multiple Fact Tables with Associated Dimension Tables FactMark: DateKey, StudentKey, SubjectKey, ClassKey, CalculatedMark, CalculatedGrade, ModeratedMark, ModeratedGrade FactAssessment: DateKey, StudentKey, SubjectKey, ClassKey, AssessmentTypeKey, AssessmentValue FactProfile: DateKey, StudentKey, SubjectKey, ClassKey, ProfileTypeKey, ProfileValue DimAssessmentType: TypeKey, TypeDescription DimProfileType: TypeKey, ProfileDescription Approach 4: Single Fact Table with Associated Dimension Table FactSchoolAcademicResult: DateKey, StudentKey, SubjectKey, ClassKey, ResultType, ResultValue DimAcademicResultType: TypeKey, TypeDescription (This includes all result types such as marks, assessments, and profiles.) Which approach would be the best among these four, or do you have a better suggestion for my design?Solved30KViews1like12Comments