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

Try your skills in the Power BI Dataviz World Championship! Round one ends June 26. Join now

Reply
DSirisha
Regular Visitor

Power BI Service Refresh Error: Unable to combine data (Azure SQL and Google Translate API Privacy L

Hi everyone,
I am trying to add a custom column in Power Query (M code) that calls the Google Translate API to translate a text column. The main source table is hosted in Azure SQL Database.
This setup works perfectly fine and refreshes without any issues in Power BI Desktop. However, after publishing the report to the Power BI Service, the scheduled refresh fails with the following gateway mashup error:
[Unable to combine data] Section1/tablename/Added Custom2 is accessing data sources that have privacy levels which cannot be used together. Please rebuild this data combination.
What I have tried so far:
  • In Power BI Desktop, I went to File -> Options and Settings -> Current File -> Privacy and enabled "Ignore Privacy Levels and improve performance." This fixes it locally, but the error still persists in the cloud service.
Is the Google Translator API inherently incompatible with Azure SQL data sources in the Power BI Service, or is there a specific way I need to configure the privacy levels or rewrite my M code to fix this?I also tried with  Relative Path  option in Mcode.
Can anyone help on this and please give any sugestions how to resove this issue.
2 REPLIES 2
SamInogic
Super User
Super User

Hi,

 

This is a common limitation in Power BI Service when combining data from multiple sources (Azure SQL + Web API).

The key point is that "Ignore Privacy Levels and improve performance" only works in Power BI Desktop. After publishing, Power BI Service enforces privacy levels and data source isolation during refresh.

A few things to check:

  1. Verify Privacy Levels in Power BI Service

Go to:
Dataset Settings → Data Source Credentials

Ensure both:

  • Azure SQL Database
  • Google Translate API (Web source)

have compatible privacy levels (typically Organizational).

  1. API Calls Inside Row-by-Row Custom Columns

If your M code calls Google Translate for each row, Power BI Service may treat this as combining data from:

  • Azure SQL
  • Web API

which often triggers the "Unable to combine data" error.

  1. Buffer the SQL Data

Try buffering the SQL table before calling the API:

BufferedTable = Table.Buffer(Source)

This sometimes helps Power Query treat the SQL data as local before invoking the web request.

  1. Consider Moving Translation Outside Power Query

For production scenarios, a better approach is often:

  • Translate data before loading into Power BI
  • Use Azure Functions, Power Automate, Dataflow, or SQL ETL processes
  • Store the translated text in a table and import it directly
  1. Gateway Considerations

If you're using an On-Premises Data Gateway:

  • Ensure both sources are configured correctly in the gateway
  • Verify credentials are valid
  • Check gateway logs for additional mashup engine details
  1. RelativePath Does Not Solve Privacy Conflicts

Using RelativePath is recommended for dynamic web requests, but it does not bypass Power BI Service privacy-level restrictions.

Bottom Line

The issue is not that Google Translate API is incompatible with Azure SQL. The problem is that Power BI Service is enforcing privacy isolation between the SQL source and the Web API call. The most reliable solutions are:

  • Set both sources to compatible privacy levels.
  • Buffer the source data before API calls.
  • Move the translation logic outside Power BI refresh (recommended for large datasets).

If you can share the relevant M code (especially the Web.Contents call), the community can provide a more targeted solution.

 

Thanks!

 

Inogic Professional Services: Power Platform/Dynamics 365 CRM
An expert technical extension for your techno-functional business needs
Service: https://www.inogic.com/services/
Tips and Tricks: https://www.inogic.com/blog/

below M Code is using in my report
BufferedTable = Table.Buffer(#"Source"),
TranslateText = (inputText as text) as any =>
let
jsonResponse =
try Json.Document(
Text.FromBinary(
Web.Contents(
"https://translate.googleapis.com",
[
RelativePath = "translate_a/single",
Query = [
client = "gtx",
sl = "auto",
tl = "en",
dt = "t",
q = inputText
],
ManualStatusHandling = {400, 404, 500}
]
)
)
)
otherwise null,
translatedText =
if jsonResponse <> null
and List.NonNullCount(jsonResponse) > 0
and List.NonNullCount(List.First(jsonResponse)) > 0
then
try List.First(List.First(jsonResponse)){0}
otherwise null
else
null
in
translatedText,
#"Added Custom1" = Table.AddColumn(
BufferedTable,
"Translated",
each if [ResponseShortText] <> null and [ResponseShortText] <> ""
then TranslateText([ResponseShortText])
else null
)

Helpful resources

Announcements
Fabric Data Days is here Carousel

Data Days 2026

Don't miss out on Data Days, June 15 through August 7. Learn Fabric, Power BI, SQL, AI and more.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.