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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Syndicate_Admin
Administrator
Administrator

Cómo convertir estas url de codificación a texto normal desde API By M language

Mi fuente:

dejar
Fuente = Json.Document(Web.Contents("http://192.168.99.46:8097/api/Mrr")),
#"Convertido en tabla" = Table.FromList(
Fuente
Splitter.SplitByNothing(),
nulo
nulo
ExtraValues.Error
),
#"Columna expandida1" = Tabla.ExpandirRecordColumn(
#"Convertido en tabla",
"Columna1",
{
"mrr_num",
"artículo",
"create_date",
"qty_mrr",
"raisedByID",
"raisedByName",
"fracaso",
"descripción del problema",
"causa",
"causeOfDefact",
"ref_type",
"ref_num",
"ref_line",
"ref_release",
"entidad",
"dispositionSerialNumber",
"dispositionFeature",
"dispositionFaultCode",
"dispositionCauseCode",
"dispositionQuantity",
"disposición",
"disposiciónNota",
"lot_num",
"uf_ApprovalStatus",
"recordDate",
"costo unitario",
"Wiptotal",
"productName",
"sufijo",
"estado",
"closeDate",
"dispositionDate"
},
{
"mrr_num",
"artículo",
"create_date",
"qty_mrr",
"raisedByID",
"raisedByName",
"fracaso",
"descripción del problema",
"causa",
"causeOfDefact",
"ref_type",
"ref_num",
"ref_line",
"ref_release",
"entidad",
"dispositionSerialNumber",
"dispositionFeature",
"dispositionFaultCode",
"dispositionCauseCode",
"dispositionQuantity",
"disposición",
"disposiciónNota",
"lot_num",
"uf_ApprovalStatus",
"recordDate",
"costo unitario",
"Wiptotal",
"productName",
"sufijo",
"estado",
"closeDate",
"dispositionDate"
}
),
#"Tipo cambiado" = Table.TransformColumnTypes(
#"Columna expandida1",
{
{"mrr_num", escribe texto},
{"elemento", escriba texto},
{"create_date", escriba datetime},
{"qty_mrr", Int64.Type},
{"raisedByID", Int64.Type},
{"raisedByName", escribe texto},
{"fallo", escribe texto},
{"descripción del problema", escriba texto},
{"causa", escriba texto},
{"causeOfDefact", escriba texto},
{"ref_type", escribe texto},
{"ref_num", escriba texto},
{"ref_line", Int64.Type},
{"ref_release", Int64.Type},
{"entidad", Int64.Type},
{"dispositionSerialNumber", Int64.Type},
{"dispositionFeature", escribe texto},
{"dispositionFaultCode", escribe texto},
{"dispositionCauseCode", escriba texto},
{"dispositionQuantity", Int64.Type},
{"disposición", texto de tipo},
{"dispositionNote", escriba cualquiera},
{"lot_num", escriba texto},
{"uf_ApprovalStatus", escriba texto},
{"recordDate", escribe datetime},
{"unitcost", número de tipo},
{"wiptotal", escriba el número},
{"productName", escriba texto},
{"sufijo", Int64.Type},
{"estado", escriba texto},
{"closeDate", escribe datetime},
{"dispositionDate", escribe datetime}
}
),

#"Añadida columna traducida" = Table.AddColumn(
#"Tipo cambiado",
"cause_of_defect(esp)",
cada
si [causeOfDefact] <> "" entonces
dejar
encodedDescription = Text.Replace(Uri.EscapeDataString([causeOfDefact]), "%20"," "),
apiEndpoint = "https://translate.googleapis.com/",
relativepath = "translate_a/single",
jsonResponse = try
Json.Document(
Text.FromBinary(
Web.Contents(
apiEndpoint,
[
RelativePath = relativepath,
Consulta = [
cliente = "gtx",
sl = "th",
tl = "en",
dt = "t",
q = encodedDescription
]
]
)
)
)
de otra manera
nulo
translatedText =
if jsonResponse
<> null y List.NonNullCount(jsonResponse)
> 0 y List.NonNullCount(List.First(jsonResponse))
> 0
entonces
try Text.From(List.First(List.First(jsonResponse)){0}) de lo contrario null
más
nulo
en
if translatedText <> null, entonces translatedText else ""
más
""

),
#"Columnas renombradas" = Table.RenameColumns(
#"Añadida columna traducida",
{{"create_date", "Date_Create"}}
)
en
#"Columnas renombradas"



De mi código, la parte roja es la parte que usé para traducir, que está usando la API de Google Translate de Mi información de tailandés a inglés, que ahora sale como un código URL solo en tailandés. Si parte de mi información está en inglés no enviará el código URL, sino que estará en inglés como de costumbre. ¿Cómo puedo resolver este problema?

Tiger2514555_0-1707969100368.png



3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hola, @Tiger2514555

De acuerdo con su descripción, tiene un problema con la codificación y descodificación de direcciones URL en Power Query, las direcciones URL codificadas no se decodifican correctamente en texto normal después de la traducción, especialmente para texto tailandés.

Para resolver este problema, puede usar las funciones de codificación de Power Query y la función que descodifica el texto codificado de la dirección URL. Aquí hay un breve plan de acción para resolver su problema:

1. Codifica el texto de la URL: Has hecho esta parte correctamente antes de enviar el campo a la API de Google Translate.

2. Decodificar el texto traducido: después de recibir el texto traducido de la API, debe decodificarlo de nuevo a texto normal. Para ello, puede usar la función de Power Query (Uri.UnescapeDataString).

A continuación se muestra el código existente modificado para incluir el paso de decodificación.

#"Added translated column" = Table.AddColumn(#"Changed Type", "cause_of_defect(eng)", each if [causeOfDefact] <> "" then
    let
        encodedDescription = Text.Replace(Uri.EscapeDataString([causeOfDefact]), "%20", " "),
        apiEndpoint = "https://translate.googleapis.com/",
        relativepath = "translate_a/single",
        jsonResponse = try Json.Document(Text.FromBinary(Web.Contents(apiEndpoint, [RelativePath = relativepath, Query = [client = "gtx", sl = "th", tl = "en", dt = "t", q = encodedDescription]]))) otherwise null,
        translatedText = if jsonResponse <> null and List.NonNullCount(jsonResponse) > 0 and List.NonNullCount(List.First(jsonResponse)) > 0 then
            Uri.UnescapeDataString(Text.From(List.First(List.First(jsonResponse)){0})) else null
    else
        null
    in
        if translatedText <> null then translatedText else ""
)

En el fragmento de código modificado anterior, la adición clave es el uso de para decodificar lo traducido. (texto. Uri.UnescapeDataString)

Uri.UnescapeDataString (Nota: Aunque no hay documentación directa para , el concepto se entiende ampliamente y el nombre de la función sigue la convención utilizada en muchos lenguajes de programación para decodificar cadenas codificadas en URL).

Vínculo relacionado(Uri.EscapeDataString): Uri.EscapeDataString - PowerQuery M | Microsoft Learn

Saludos
Yang
Equipo de apoyo a la comunidad

Si hay alguna publicación que ayude, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Si no entiendo sus necesidades o aún tiene problemas al respecto, no dude en hacérnoslo saber. ¡Muchas gracias!

Cómo obtener respuestas rápidas a sus preguntas : cómo proporcionar datos de ejemplo en el foro de Power BI

No existe un "Uri.UnescapeDataString" para PowerQuery M, esta solución no es válida para Power BI / Power Query, ¿existe alguna opción alternativa?

Syndicate_Admin
Administrator
Administrator

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Top Solution Authors
Top Kudoed Authors