Get certified for free when you join Fabric Data Days 2026 and dive into Fabric, Power BI, SQL, AI, and other essential data skills.
Join nowTry your skills in the Power BI Dataviz World Championship! Round one ends June 26. Join now
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:
Go to:
Dataset Settings → Data Source Credentials
Ensure both:
have compatible privacy levels (typically Organizational).
If your M code calls Google Translate for each row, Power BI Service may treat this as combining data from:
which often triggers the "Unable to combine data" error.
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.
For production scenarios, a better approach is often:
If you're using an On-Premises Data Gateway:
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:
If you can share the relevant M code (especially the Web.Contents call), the community can provide a more targeted solution.
Thanks!
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
)
| User | Count |
|---|---|
| 16 | |
| 15 | |
| 13 | |
| 9 | |
| 8 |
| User | Count |
|---|---|
| 39 | |
| 38 | |
| 34 | |
| 28 | |
| 27 |