Codificar un campo de texto

Un usuario Pregunto ✅

Michiel

Estoy usando una API que requiere un token en codificación Base64, proveniente de una cadena de texto.

Jugando con el editor de consultas y M, he podido convertir con éxito la cadena codificada al original con la función Binary.FromText y la constante BinaryEcoding.Base64. Pero, ¿hay alguna manera de hacer lo contrario, entonces codificar la cadena original en formato Base64?

Hola @Michiel,

Pruebe la fórmula siguiente.

Binary.ToText(Text.ToBinary([Column1]), 0)

base64

Atentamente,

Valle

Hola @Michiel,

Pruebe la fórmula siguiente.

Binary.ToText(Text.ToBinary([Column1]), 0)

base64

Atentamente,

Valle

Michiel

En respuesta a v-jiascu-msft

¿Es tan simple … Gracias!

Jonas1

En respuesta a Michiel

Hola @Michiel,

Actualmente, sentado con el mismo problema que tú, tendré que hacer una codificación-decodificación para recuperar lo que finalmente será mi APi-token. ¿Te importaría mostrarme tu código sobre esto?

Michiel

En respuesta a Jonas1

Hola @ Jonas1,

El código de demostración M a continuación le dará una idea de cómo funciona:

let
    BaseToken = "<token><version>1</version><data>7B4A8AEB674D862950EC85F3ACD631777A6E63CBAC5A0A4FDE85DBFE0BF92AD6</data></token>",
    Decoded = Binary.ToText(Text.ToBinary(BaseToken, BinaryEncoding.Base64)),
    BaseEncodedToken = "PHRva2VuPjx2ZXJzaW9uPjE8L3ZlcnNpb24+PGRhdGE+N0I0QThBRUI2NzREODYyOTUwRUM4NUYzQUNENjMxNzc3QTZFNjNDQkFDNUEwQTRGREU4NURCRkUwQkY5MkFENjwvZGF0YT48L3Rva2VuPg==",
    DecodedBinary = Binary.FromText(BaseEncodedToken, BinaryEncoding.Base64),
    DecodedText = Text.FromBinary(DecodedBinary,TextEncoding.Windows)
in
    DecodedText

El paso Decodificado muestra la versión de texto Base64 de la cadena BaseToken. El paso DecodedText muestra la versión decodificada de la cadena BaseEncodedToken. Lo confuso aquí es que ambos son cadenas y básicamente estás codificando uno en el otro; pero obviamente no puedes incluir cosas como en una llamada HTML directamente.

Jonas1

En respuesta a Michiel

Gracias @Michiel. Creo que tal vez tenga que dejar de usar PBI para esto, ya que mi API también requería cosas adicionales para el proceso de autorización (hashlib y hmac si está familiarizado con Python). Porque su API solo requiere base64, ¿verdad?

Michiel

En respuesta a Jonas1

No estoy familiarizado con eso, pero debo decir que la función web.contents en M es bastante poderosa. En mi caso, terminé sin usar codificación en absoluto, pero construyendo la cadena codificada directamente (una larga historia para explicar, pero me permitió tener Power Queries separadas para enumerar los campos que quiero recuperar de una entidad específica).

¿Sabes que es posible llamar a un script de Python desde M? Sin embargo, existen algunas restricciones.

Jonas1

En respuesta a Michiel

Oh, vaya, eso es bueno.

El único hilo que pude encontrar en estas otras bibliotecas decía que requeriría algo de codificación avanzada o que tendría que suscribirme a un programa.

Así que terminé usando Python, sí. El servicio Power BI no admite ninguna de las bibliotecas necesarias, pero llamo a la API en Python, transformo los datos allí e importo la salida como archivos de texto a Power BI a través del conector de carpetas. No es la solución ideal considerando que necesito programar actualizaciones en Python ahora, pero funciona.

Si usted @Michiel o cualquier otra persona está buscando más oportunidades para conectarse a las API, por favor vote mi sugerencia aquí. Python es realmente una herramienta increíble y fácil de usar, que sería genial con una mayor integración en Power BI 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *