chriswragge
Hola,
Tengo una consulta que usa la fuente ‘Web’ de PowerBI para extraer datos de informes de una API (método POST).
También tengo la identificación del cliente, el secreto del cliente, el cuerpo y el token en archivos .txt separados por razones de seguridad. PowerBI actualmente los está cargando y luego realiza la consulta de esa manera.
let token = Text.FromBinary(Token,1252), clientID = Text.FromBinary(ClientID,1252), clientSecret = Text.FromBinary(ClientSecret,1252), url = "https://analytics.adobe.io/api/"&clientID&"/reports", body = Text.FromBinary(Visits,1252), Source = Json.Document(Web.Contents(url, [ Headers = [ #"Authorization"= token, #"Content-Type"="application/json", #"Accept"="application/json", #"x-proxy-global-company-id"=clientID, #"x-api-key"=clientSecret ], Content = Text.ToBinary(body) ] )),
Las cosas funcionan muy bien, excepto por una cosa: No puedo entender cómo poner los nombres de los parámetros de PowerBI dentro de mi archivo de texto ‘cuerpo’, para luego ajustar dinámicamente mi solicitud de API cuando cargo el archivo de texto.
Si saco el ‘cuerpo’ del archivo de texto y lo pongo en mi consulta principal, todo funciona bien, por ejemplo, usando ‘test_p’ como mi parámetro
body = "{ ""rsid"": ""xxxxxxxxxxxxxxxxxxxxxxx"", ""globalFilters"": [ { ""type"": ""dateRange"", ""dateRange"": ""2019-03-01T00:00:00.000/2019-04-01T00:00:00.000"" } ], ""metricContainer"": { ""metrics"": [ { ""columnId"": ""0"", ""id"": ""metrics/"&test_p&""" } ] },
… pero esto anula un poco lo que estoy tratando de hacer al mantener un montón de consultas por separado.
¿Hay alguna manera de hacer esto?
Nishantjain
En respuesta a chriswragge
Lo resolví yo mismo usando exactamente la misma lógica. También puede usar esto en una función. Me alegro de que hayas podido hacer que esto funcione
let Source = (samplebinary as binary) => let Source = samplebinary, ConvertToText= Text.FromBinary(Source,1252), ReplaceParam1 = Text.Replace(ConvertToText,"var1", param1), ReplaceParam2 = Text.Replace(ReplaceParam1 ,"var2", param2) in ReplaceParam2 in Source
Nishantjain
Le sugiero que cree una función para ajustar dinámicamente el cuerpo. En la función, pasaré el contenido binario y luego lo editaré usando los parámetros
Si no sabes cómo crear funciones, házmelo saber y te puedo ayudar.
Gracias
chriswragge
En respuesta a Nishantjain
¡¡Muchas gracias por la ayuda @Nishantjain!!
Entonces, si tuviera un archivo .txt con el texto
Hello [var1] Foo [var2]
¿Cómo se vería mi código de PowerBI para leer este archivo .txt y reemplazarlo?
- [var1] con un valor de mi PowerBI «Param1» («Mundo»)
- [var2] con un valor de my PowerBI «Param2» («Bar»)
Ah, y la sintaxis de las vars en el archivo .txt podría estar en cualquier formato para hacerlo más fácil. Por ejemplo, «Hola «&var1
Nishantjain
En respuesta a chriswragge
hola cris
Ignora mi mensaje anterior. Me acabo de dar cuenta de que estás tratando de manipular el binario. No estoy seguro si mi sugerencia funcionaría.
chriswragge
En respuesta a Nishantjain
De hecho, creo que lo tengo. Realmente es tan simple como
let token = Text.FromBinary(Token,1252), clientID = Text.FromBinary(ClientID,1252), clientSecret = Text.FromBinary(ClientSecret,1252), url = "https://analytics.adobe.io/api/"&clientID&"/reports", body = Text.Replace(Text.Replace(Text.FromBinary(Visits,1252),"[var1]",Param1),"[var2]",Param2),
Nishantjain
En respuesta a chriswragge
Lo resolví yo mismo usando exactamente la misma lógica. También puede usar esto en una función. Me alegro de que hayas podido hacer que esto funcione
let Source = (samplebinary as binary) => let Source = samplebinary, ConvertToText= Text.FromBinary(Source,1252), ReplaceParam1 = Text.Replace(ConvertToText,"var1", param1), ReplaceParam2 = Text.Replace(ReplaceParam1 ,"var2", param2) in ReplaceParam2 in Source
chriswragge
En respuesta a Nishantjain
Gracias @Nishantjain. Aceptar su publicación como la solución, ya que me puso en la dirección correcta y responde la pregunta.
Agradezco toda la ayuda!!
Nishantjain
En respuesta a chriswragge
cris
No tengo mi computadora portátil conmigo, así que no puedo escribir el código completo desde mi teléfono móvil. pero intentemos algo
Haz lo siguiente y envíame el código
1. Importar el archivo de texto en una nueva consulta
2. Realice todos los pasos en esa consulta para crear la lógica de reemplazar los valores en el archivo de texto. Por ejemplo, use la función «reemplazar valor» para reemplazar los valores en el archivo de texto
Envíame el código y lo convertiré en una función.
Gracias
nishant