Consultas repetitivas a la API web de PBI que causan la respuesta del código 500

Un usuario Pregunto ✅

patso

Hola,

Soy bastante nuevo en el mundo de PowerBI y Power Query. Comencé mi viaje hace cuatro meses, muchas cosas para mí son nuevas y desconocidas. Hay una cosa para la que no puedo encontrar solución (la información sobre el tema parece ser muy escasa).

Estoy tratando de utilizar el conector PBI que hice para una de las API de nuestros servicios. El conector en sí es bastante simple ya que hay muy pocos puntos finales en la API.

La API tiene autenticación basada en token con una vida útil de 10 minutos. Tengo que pasar las credenciales y recuperar el token del servicio web.

Durante la creación de este conector, pensé que sería una buena idea crear una variable de «ámbito global» que retuviera el token y asignarle una llamada de función, de modo que pudiera hacer referencia a esta variable en cada llamada de punto final en lugar de consultar el punto final del token cada vez.

Todo funciona perfectamente solo cuando consulto un punto final de PBI. Tan pronto como agrego otro, recibo la respuesta 500 de la API durante la actualización de datos en PBI.

Aquí hay un fragmento de mi código de conector:

PBI_conector_src_.png

Resulta que a pesar de que estoy tratando de mantener el valor del token en una variable (primeras líneas de código en una captura de pantalla anterior), se llama a toda la función cada vez que hago referencia a esta variable (en realidad, la función Feed hace referencia a ella cada vez que se llama pero la idea es la misma).

He realizado algunas pruebas con Fiddler capturando todo el tráfico hacia/desde la API.

Así es como se ve cuando actualizo los datos con una sola entidad en el modelo:

PBI_conector_201.PNG

Lo que es interesante en el ejemplo anterior es que hay dos llamadas al punto final de «departamentos» (y dos llamadas al punto final de «inicio de sesión»: el token que otorga uno). Para el punto final de «departamentos», he usado el mismo enfoque que para los tokens: variable «global» que llama a la función GetDepartmentsTable; en todas partes que necesito (tabla de navegación, función GetCountriesTable) los datos de «departamentos», hago referencia a la variable.

De todos modos, funciona bien tanto en el escritorio como en el servicio de PBI.

Si solo agrego otra entidad al modelo, recibo un error. En el siguiente ejemplo, he agregado la entidad «Países» que en realidad está hecha de datos existentes en la tabla «departamentos»:

PBI_conector_err500.PNG

Ahora, esta vez el punto final de «inicio de sesión» se consulta tres veces. Supongo que dos de las tres llamadas se realizan simultáneamente y es por eso que obtengo la respuesta 500 del servidor web.

(Perdón por repetirme aquí y allá, pero quiero ser claro y resumir mi problema correctamente)

Así que aquí vienen mis preguntas:

  1. ¿Alguien se ha topado con un problema similar?
  2. ¿Hay alguna forma de almacenar «realmente» la salida de la función en una variable sin llamarla cada vez que se hace referencia a la variable?
  3. ¿Hay alguna manera de obligar a PBI a actualizar los datos en una serie en lugar de en paralelo?

Cualquier sugerencia, consejo, solución alternativa es bienvenida. ¿Tal vez me estoy perdiendo algo aquí?

¿Ha intentado establecer el Tipo en Singleton en su registro DataSource.Kind?

Tipo = «Único»
Además, la función:
Diagnostics.ActivityId()
Siempre debe darle el mismo GUID cada vez que lo llame para una sola actualización.
La otra opción es usar un flujo de trabajo Oauth

Deja un comentario

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