Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
Hello,
I am having a data mashup error when I try to refresh my data in the Power BI workspace. This is something that just started happening randomly about a month ago. There were no changes made and then the autorefresh stopped working. I can't even do a manual refresh in the Power BI service. The full error is below
I know that this is usually a security level issue. However, I've already
1) Change settings in Power BI desktop to ignore security levels
2) In the Power BI service, I've set all data sources to the same security level (Organizational).
3) I know this can be caused by merging tables. However, Revenue Segment - Load is not the table that is being merged. The table that is being merged in Revenue Segment - Staging. I am even using Table.Buffer() to try and solve this issue. There are other tables being imported the same way and that get merged with Detailed Report earlier (User Resource and Dept - Staging) and there are no issues merging those.
Below are my queries in M
Detailed Report
let
Source = Table.Buffer(#"Detailed Report - Staging"),
#"Expanded Custom Fields" = Table.ExpandListColumn(Source, "Custom Fields"),
#"Expanded Custom Fields1" = Table.ExpandRecordColumn(#"Expanded Custom Fields", "Custom Fields", {"customFieldId", "value"}, {"Custom Fields.customFieldId", "Custom Fields.value"}),
#"Replaced Value" = Table.ReplaceValue(#"Expanded Custom Fields1",null,"test",Replacer.ReplaceValue,{"Custom Fields.customFieldId"}),
#"Pivoted Column" = Table.Pivot(#"Replaced Value", List.Distinct(#"Replaced Value"[#"Custom Fields.customFieldId"]), "Custom Fields.customFieldId", "Custom Fields.value"),
#"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"614b79ce8fc8f836af593b78", "614dce95b49ce00a90d4c54b", "test"}),
#"Renamed Columns2" = Table.RenameColumns(#"Removed Columns",{{"614b3a5a41f10a506b8d1fdf", "Clockify Custom Project Number"}, {"60aff4741a4155464943ab9b", "Clockify Custom Revenue Segment"}}),
#"Appended Query" = Table.Combine({#"Renamed Columns2", #"ORS Projects - Dummy Rows"}),
#"Sorted Rows1" = Table.Sort(#"Appended Query",{{"Date", Order.Descending}}),
#"Merged Queries" = Table.NestedJoin(#"Sorted Rows1", {"User Name"}, Table.Buffer(#"User Resource Title and Dept - staging"), {"Column1.items_page.items.name"}, "User Resource Title and Dept - staging", JoinKind.LeftOuter),
#"Expanded User Resource Title and Dept - staging" = Table.ExpandTableColumn(#"Merged Queries", "User Resource Title and Dept - staging", {"Resource Title", "Resource Dept.", "Employment Status"}, {"User Resource Title and Dept - staging.Resource Title", "User Resource Title and Dept - staging.Resource Dept.", "User Resource Title and Dept - staging.Employment Status"}),
#"Merged Queries1" = Table.NestedJoin(#"Expanded User Resource Title and Dept - staging", {"Project Name"}, Table.Buffer(#"Revenue Segment - Staging"), {"Name"}, "Revenue Segment - Staging", JoinKind.LeftOuter),
#"Expanded Revenue Segment - Staging" = Table.ExpandTableColumn(#"Merged Queries1", "Revenue Segment - Staging", {"Revenue Segment", "Billable Work?"}, {"Revenue Segment - Staging.Revenue Segment", "Revenue Segment - Staging.Billable Work?"}),
#"Filtered Rows" = Table.SelectRows(#"Expanded Revenue Segment - Staging", each true),
#"Added Custom3" = Table.AddColumn(#"Filtered Rows", "Relative Week", each let
CurrentDate = Date.From(DateTime.LocalNow()), // Convert current DateTime to Date
CurrentWeekStart = Date.StartOfWeek(CurrentDate, Day.Monday), // Start of the current week
PreviousWeekStart = Date.AddWeeks(CurrentWeekStart, -1), // Start of the previous week
PreviousWeekEnd = Date.AddDays(CurrentWeekStart, -1), // End of the previous week
DateToCheck = Date.From([Date]) // Convert the DateTime column to Date
in
if DateToCheck >= CurrentWeekStart and DateToCheck <= Date.EndOfWeek(CurrentDate, Day.Monday) then "Current Week"
else if DateToCheck >= PreviousWeekStart and DateToCheck <= PreviousWeekEnd then "Last Week"
else null),
#"Added Custom4" = Table.AddColumn(#"Added Custom3", "Relative Month", each let
CurrentDate = Date.From(DateTime.LocalNow()), // Get the current date
StartOfCurrentMonth = Date.StartOfMonth(CurrentDate), // Start of the current month
StartOfPreviousMonth = Date.AddMonths(StartOfCurrentMonth, -1), // Start of the previous month
EndOfPreviousMonth = Date.AddDays(StartOfCurrentMonth, -1), // End of the previous month
DateToCheck = Date.From([Date]) // Convert the DateTime column to Date
in
if DateToCheck >= StartOfCurrentMonth and DateToCheck <= Date.EndOfMonth(CurrentDate) then "Current Month"
else if DateToCheck >= StartOfPreviousMonth and DateToCheck <= EndOfPreviousMonth then "Last Month"
else null),
#"Added Custom" = Table.AddColumn(#"Added Custom4", "Month Hours", each let
StartDate = [Start of Month], // Replace with your actual start date column
EndDate = [End of Month], // Replace with your actual end date column
ListOfDates = List.Dates(StartDate, Duration.Days(EndDate - StartDate) + 1, #duration(1, 0, 0, 0)),
WorkDays = List.Select(ListOfDates, each Date.DayOfWeek(_, Day.Monday) < 5), // Exclude weekends
TotalWorkDays = List.Count(WorkDays), // Count the number of workdays
TotalWorkHours = TotalWorkDays * 8 // Multiply workdays by 8 to get total working hours
in
TotalWorkHours),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Engineering Allocation - FTE", each Value.Divide([Hours], [Month Hours])),
#"Rounded Off" = Table.TransformColumns(#"Added Custom1",{{"Hours", each Number.Round(_, 2), type number}}),
#"Changed Type" = Table.TransformColumnTypes(#"Rounded Off",{{"Engineering Allocation - FTE", type number}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Revenue Segment - Staging.Billable Work?", "Billable Work?"}, {"Revenue Segment - Staging.Revenue Segment", "Revenue Segment - Monday"}, {"User Resource Title and Dept - staging.Resource Title", "Resource Title"}, {"User Resource Title and Dept - staging.Resource Dept.", "Resource Department"}, {"User Resource Title and Dept - staging.Employment Status", "Employment Status"}}),
#"Merged Queries2" = Table.NestedJoin(#"Renamed Columns", {"Project Name"}, Table.Buffer(#"ORS Projects"), {"Clockify Project Name"}, "ORS Projects", JoinKind.LeftOuter),
#"Expanded ORS Projects" = Table.ExpandTableColumn(#"Merged Queries2", "ORS Projects", {"Retainer Cycle", "Monthly Retainer Start Date"}, {"ORS Projects.Retainer Cycle", "ORS Projects.Monthly Retainer Start Date"}),
#"Renamed Columns1" = Table.RenameColumns(#"Expanded ORS Projects",{{"ORS Projects.Retainer Cycle", "ORS - Retainer Cycle"}, {"ORS Projects.Monthly Retainer Start Date", "ORS - Cutoff Date"}}),
// Add custom logic for "MidMonth Date"
#"Added MidMonth Date" = Table.AddColumn(#"Renamed Columns1", "ORS - MidMonth Date", each if [#"ORS - Retainer Cycle"] = "Mid-Month" and Date.Day([Date]) >= [#"ORS - Cutoff Date"] and Date.Month([Date]) = 12 then
Date.FromText(Text.From(Date.Year([Date]) + 1) & "-01-01")
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and Date.Day([Date]) >= [#"ORS - Cutoff Date"] then
Date.FromText(Text.From(Date.Year([Date])) & "-" & Text.From(Date.Month([Date]) + 1) & "-01")
else [Date]),
// Add custom logic for "Previous or Current month" column
#"Added Custom2" = Table.AddColumn(#"Added MidMonth Date", "ORS - Previous or Current month", each if [#"ORS - Retainer Cycle"] = "Mid-Month" and Date.Day(DateTime.LocalNow()) >= [#"ORS - Cutoff Date"] and Date.Month(DateTime.LocalNow()) = (Date.Month([#"ORS - MidMonth Date"]) + 1) then ""
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and Date.Day(DateTime.LocalNow()) >= [#"ORS - Cutoff Date"] and Date.Month(DateTime.LocalNow()) = (Date.Month([#"ORS - MidMonth Date"]) - 1) then "Current Month"
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and Date.Day(DateTime.LocalNow()) < [#"ORS - Cutoff Date"] and Date.Month(DateTime.LocalNow()) = Date.Month([#"ORS - MidMonth Date"]) and Date.Year(DateTime.LocalNow()) = Date.Year([#"ORS - MidMonth Date"]) then "Current Month"
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and Date.Day(DateTime.LocalNow()) >= [#"ORS - Cutoff Date"] and Date.Month(DateTime.LocalNow()) = 12 and Date.Month([#"ORS - MidMonth Date"]) = 1 and Date.Year(DateTime.LocalNow()) = Date.Year([#"ORS - MidMonth Date"]) - 1 then "Current Month"
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and Date.Day(DateTime.LocalNow()) >= [#"ORS - Cutoff Date"] and Date.Day([#"ORS - MidMonth Date"]) < [#"ORS - Cutoff Date"] and Date.Month(DateTime.LocalNow()) = Date.Month([#"ORS - MidMonth Date"]) and Date.Year(DateTime.LocalNow()) = Date.Year([#"ORS - MidMonth Date"]) then "Previous Month"
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and Date.Day(DateTime.LocalNow()) < [#"ORS - Cutoff Date"] and Date.Month(DateTime.LocalNow()) = Date.Month([#"ORS - MidMonth Date"]) + 1 then "Previous Month"
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and Date.Day(DateTime.LocalNow()) < [#"ORS - Cutoff Date"] and Date.Month(DateTime.LocalNow()) = 1 and Date.Month([#"ORS - MidMonth Date"]) = 12 and Date.Year(DateTime.LocalNow()) = Date.Year([#"ORS - MidMonth Date"]) - 1 then "Previous Month"
else if [#"ORS - Retainer Cycle"] = "Calendar Month" and Date.Month([Date]) = Date.Month(DateTime.LocalNow()) and Date.Year([Date]) = Date.Year(DateTime.LocalNow()) then "Current Month"
else if ([#"ORS - Retainer Cycle"] = "Calendar Month" and Date.Month([Date]) = Date.Month(DateTime.LocalNow()) - 1 and Date.Year([Date]) = Date.Year(DateTime.LocalNow()))
or ([#"ORS - Retainer Cycle"] = "Calendar Month" and Date.Month([Date]) = 12 and Date.Month(DateTime.LocalNow()) = 1 and Date.Year([Date]) = Date.Year(DateTime.LocalNow()) - 1) then "Previous Month"
else ""),
// Add Month_Start column based on your logic
#"Added Month Start" = Table.AddColumn(#"Added Custom2", "ORS - Month Start", each if [#"ORS - Retainer Cycle"] = "Calendar Month" and ([#"ORS - Previous or Current month"] = "Current Month" or [#"ORS - Previous or Current month"] = "Previous Month") then
#date(Date.Year([Date]), Date.Month([Date]), 1)
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and [#"ORS - Previous or Current month"] = "Current Month" and [#"ORS - MidMonth Date"] = [Date] and Date.Month([#"ORS - MidMonth Date"]) = 1 then
#date(Date.Year([#"ORS - MidMonth Date"]) - 1, 12, [#"ORS - Cutoff Date"])
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and [#"ORS - Previous or Current month"] = "Current Month" and [Date] < [#"ORS - MidMonth Date"] then
#date(Date.Year([Date]), Date.Month([Date]), [#"ORS - Cutoff Date"])
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and [#"ORS - Previous or Current month"] = "Previous Month" and [#"ORS - MidMonth Date"] = [Date] and Date.Month([#"ORS - MidMonth Date"]) = 1 then
#date(Date.Year([#"ORS - MidMonth Date"]) - 1, 12, [#"ORS - Cutoff Date"])
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and [#"ORS - Previous or Current month"] = "Previous Month" and [#"ORS - MidMonth Date"] = [Date] then
#date(Date.Year([#"ORS - MidMonth Date"]), Date.Month([#"ORS - MidMonth Date"]) - 1, [#"ORS - Cutoff Date"])
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and [#"ORS - Previous or Current month"] = "Previous Month" and [Date] < [#"ORS - MidMonth Date"] then
#date(Date.Year([Date]), Date.Month([Date]), [#"ORS - Cutoff Date"])
else null),
#"Added Custom5" = Table.AddColumn(#"Added Month Start", "IsWorkday", each if Date.DayOfWeek([Date], Day.Monday) < 5 then 1 else 0),
#"Sorted Rows" = Table.Sort(#"Added Custom5",{{"Date", Order.Descending}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Sorted Rows",{{"Date", type date}}),
#"Added Month End" = Table.AddColumn(#"Changed Type1", "ORS - Month End", each if [#"ORS - Retainer Cycle"] = "Calendar Month" and ([#"ORS - Previous or Current month"] = "Current Month" or [#"ORS - Previous or Current month"] = "Previous Month") then
Date.EndOfMonth([Date])
else if [#"ORS - Retainer Cycle"] = "Mid-Month" and ([#"ORS - Previous or Current month"] = "Current Month" or [#"ORS - Previous or Current month"] = "Previous Month") then
#date(Date.Year([#"ORS - MidMonth Date"]), Date.Month([#"ORS - MidMonth Date"]), [#"ORS - Cutoff Date"] - 1)
else
null),
#"Changed Type2" = Table.TransformColumnTypes(#"Added Month End",{{"ORS - Month Start", type date}, {"ORS - Month End", type date}, {"Start of Month", type date}, {"End of Month", type date}}),
#"Added Custom6" = Table.AddColumn(#"Changed Type2", "ORS - Inclusion", each if [User Name] = "User1" or [User Name] = "User2" or ([User Name] = "User3" and Text.Contains([Project Name], "ENG-2023-141")) then 1 else 0),
#"Filtered Rows1" = Table.SelectRows(#"Added Custom6", each ([Project Name] <> null)),
#"Changed Type3" = Table.TransformColumnTypes(#"Filtered Rows1",{{"ORS - MidMonth Date", type date}}),
#"Removed Duplicates" = Table.Distinct(#"Changed Type3", {"Detailed Report ID"})
in
#"Removed Duplicates"
Revenue Segment - Staging
let
Source = Table.Buffer(#"Revenue Segment - Load")
in
Source
Revenue Segment - Load
let
BoardID = 5156139052,
// Page 1
#"1st_Page_Table" = Table.Buffer(GetBoard_1stPage_subitems(BoardID)),
#"1st_Page_Table_Updated" = Table.ReplaceValue(#"1st_Page_Table", null, "NoMorePages", Replacer.ReplaceValue, {"Column1.items_page.cursor"}),
#"2nd_page_cursor" = #"1st_Page_Table_Updated"{0}[Column1.items_page.cursor],
// Page 2
#"2nd_Page_Table" = if #"2nd_page_cursor" <> "NoMorePages" then Table.Buffer(GetBoard_RemainingPages_subitems(#"2nd_page_cursor")) else EmptyTable(),
#"2nd_Page_Table_Updated" = Table.ReplaceValue(#"2nd_Page_Table", null, "NoMorePages", Replacer.ReplaceValue, {"Column1.items_page.cursor"}),
#"3rd_page_cursor" = #"2nd_Page_Table_Updated"{0}[Column1.items_page.cursor],
// Page 3
#"3rd_Page_Table" = if #"3rd_page_cursor" <> "NoMorePages" then Table.Buffer(GetBoard_RemainingPages_subitems(#"3rd_page_cursor")) else EmptyTable(),
#"3rd_Page_Table_Updated" = Table.ReplaceValue(#"3rd_Page_Table", null, "NoMorePages", Replacer.ReplaceValue, {"Column1.items_page.cursor"}),
// Combine and buffer the full set
Combined_Table1 = Table.Combine({
#"1st_Page_Table_Updated",
#"2nd_Page_Table_Updated",
#"3rd_Page_Table_Updated"
}),
#"Filtered Rows" = Table.SelectRows(Combined_Table1, each ([Name] <> null)),
#"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows", {
"Column1.items_page.items.id",
"Column1.items_page.items.name",
"Column1.items_page.items.parent_item.id",
"Revenue Segment",
"Billable Work?",
"Monday Name",
"Proposal Number - QBO join"
}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns", {
{"Column1.items_page.items.name", "Name"}
})
in
#"Renamed Columns"Like I said, this randomly stopped working a month ago, unprompted by changes and I'm at a complete loss as to what else to try.
Solved! Go to Solution.
Hi @regnidem16
Thank you for contacting the Microsoft Fabric Community Forum.
The DM_GWPipeline_Gateway_MashupDataAccessError arises in Power BI Service due to strict data privacy enforcement when combining data from multiple sources, especially involving external web APIs. In this scenario, the issue is linked to the Revenue Segment - Load query, which contains steps still being dynamically evaluated during a merge in another query. This behavior conflicts with the mashup engine’s privacy model, even if intermediate buffering is applied.
To address this, ensure that the final output of the Revenue Segment - Load query is explicitly buffered before being referenced elsewhere. This can be achieved by wrapping the final step with Table.Buffer() and assigning it to a variable (e.g., BufferedFinal = Table.Buffer(#"Renamed Columns")), then returning this variable. This approach fully materializes the API data prior to any merge operations, preventing re-evaluation at refresh time.
Regards,
Karpurapu D,
Microsoft Fabric Community Support Team.
Hi @regnidem16
I would like to inquire if the issue has been resolved. If not, kindly provide additional details so we can offer further assistance.
Thank you.
Hi @regnidem16
I wanted to check if you’ve had a chance to review the information provided. If you have any further questions, please let us know. Has your issue been resolved? If not, please share more details so we can assist you further.
Thank You.
Hi @regnidem16
We have not yet received a response from you regarding your query. If the previous response was helpful, please let us know. If not, feel free to provide more details so we can assist you further.
Thank you.
Hi @regnidem16
Thank you for contacting the Microsoft Fabric Community Forum.
The DM_GWPipeline_Gateway_MashupDataAccessError arises in Power BI Service due to strict data privacy enforcement when combining data from multiple sources, especially involving external web APIs. In this scenario, the issue is linked to the Revenue Segment - Load query, which contains steps still being dynamically evaluated during a merge in another query. This behavior conflicts with the mashup engine’s privacy model, even if intermediate buffering is applied.
To address this, ensure that the final output of the Revenue Segment - Load query is explicitly buffered before being referenced elsewhere. This can be achieved by wrapping the final step with Table.Buffer() and assigning it to a variable (e.g., BufferedFinal = Table.Buffer(#"Renamed Columns")), then returning this variable. This approach fully materializes the API data prior to any merge operations, preventing re-evaluation at refresh time.
Regards,
Karpurapu D,
Microsoft Fabric Community Support Team.
Hay @regnidem16 I can feel you have gone through so far.
I am just wantering do you get the same results for privacy level as Private?
In general when Data source credentials is none, it through data meshup access error. However, since you are using external APIs you can try with privacy level Public.
Find this helpful? ✔ Give a Kudo • Mark as Solution – help others too!
Yes, we have tried setting the privacy level to public and had the same result.
@regnidem16 Sounds like you have tried most of the usual suspects. I would recommend opening a support case with Microsoft.
Are they typically responsive for things like this? Microsft, at least for this sort of thing, strike me as a modern tech company where they develop a product and then direct users to the community for any sort of tech support (see: this board).
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!