The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
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?
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?
@Tiger2514555 , compruebe estas funciones de URI
https://learn.microsoft.com/en-us/powerquery-m/uri-functions