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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

powerbi carga JIRA worklog a través de RESTAPI tan lento

Hola, chicos

Básicamente, sondeo que conocí es lo mismo que https://community.powerbi.com/t5/Desktop/Get-data-from-Jira-Rest-API/td-p/516130,pero no se puede resolver por su solución O tal vez no entiendo completamente?

Mi código:

let
    Source = Json.Document(Web.Contents( #"my company JIRA",
        [
            RelativePath="/rest/api/2/search",
            Query=[
                maxResults="1000", 
                jql=#"JQL EPICS",
                fields="key",
                startAt="0"
            ]
        ])),
    total1 = Number.Round(Source[total]/1000 + 0.5-1, 0, RoundingMode.Up),
    List = List.Transform({0..total1}, each _ * 1000),
    #"Converted to Table" = Table.FromList(List, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type text}}),
    #"Invoked Custom Function" = Table.AddColumn(#"Changed Type", "Data", each GetJIRADCPage(#"JQL EPICS", "key", [Column1])),
    #"Expanded Data" = Table.ExpandTableColumn(#"Invoked Custom Function", "Data", {"Column1.key"}, {"Column1.key"}),
    #"Removed Duplicates" = Table.Distinct(#"Expanded Data", {"Column1.key"}),
    parent = Table.RenameColumns(#"Removed Duplicates",{{"Column1.key", "ParentKey"}}),
    nbr = List.Count(parent[ParentKey])-1,
    total = Number.Round(nbr/#"EPICS COUNT PER PAGE" + 0.5 - 1, 0,  RoundingMode.Up), //Using #"EPICS COUNT PER PAGE"(currently 30) in case url too long 
    List99 = List.Transform({0..total}, each _ * #"EPICS COUNT PER PAGE"),
    #"Converted to Table99" = Table.FromList(List99, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Changed Type99" = Table.TransformColumnTypes(#"Converted to Table99",{{"Column1", type number}}),
    #"Invoked Custom Function2" = Table.AddColumn(#"Changed Type99", "Data", each GetJIRADCChildren(Text.Combine(List.Range(parent[ParentKey], [Column1], #"EPICS COUNT PER PAGE"), ","), #"FIELDS TASK")),
    #"Removed Columns2" = Table.RemoveColumns(#"Invoked Custom Function2",{"Column1"}),
    #"Expanded Data99" = Table.ExpandTableColumn(#"Removed Columns2", "Data", {"Column1"}, {"Column1"}),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Expanded Data99", "Column1", {"key", "fields"}, {"key", "fields"}),
    #"Renamed Columns2" = Table.RenameColumns(#"Expanded Column1",{{"key", "Issue key"}}),
    #"Removed Duplicates99" = Table.Distinct(#"Renamed Columns2", {"Issue key"}),
    #"Expanded fields" = Table.ExpandRecordColumn(#"Removed Duplicates99", "fields", {"summary", "customfield_12790", "status"}, {"summary", "customfield_12790", "status"}),
    #"Expanded status" = Table.ExpandRecordColumn(#"Expanded fields", "status", {"name"}, {"status"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded status",{{"customfield_12790", "ParentKey"}}),
    #"Added Index" = Table.AddIndexColumn(#"Renamed Columns", "Index", 0, 1),
    //#"Invoked Custom Function1" = Table.AddColumn(#"Added Index", "worklog", each GetWorklog([Issue key]))
    #"Add worklog url" = Table.AddColumn(#"Added Index", "worklog url", each #"my company JIRA"&"/rest/api/latest/issue/"&[Issue key]&"/worklog"),
    #"Invoked Custom Function1" = Table.AddColumn(#"Add worklog url", "worklog", each Json.Document(Web.Contents([worklog url])))
in
    #"Invoked Custom Function1"

cuello de botella es "Función personalizada invocada1".

Previsualización de consulta de energía (máximo 1000 filas) rápido (aproximadamente 3-5 segundos), pero cargar afte clic aplicar cambio es muy lento, casi (1-10) por (1-10) filas por segundo.

¡Ayuda de aplausos!

5 REPLIES 5
v-kelly-msft
Community Support
Community Support

Hola @hongjyan ,

En su consulta, esta

#"Add worklog url" = Table.AddColumn(#"Added Index", "worklog url", each #"my company JIRA"&"/rest/api/latest/issue/"&[Issue key]&"/worklog"),
    #"Invoked Custom Function1" = Table.AddColumn(#"Add worklog url", "worklog", each Json.Document(Web.Contents([worklog url])))

ha vuelto a consultar la API en cada fila, lo que significa que si tiene 1000 filas en una página, las 1000 filas con se vuelven a consultar después de ejecutar todas las consultas anteriores, lo que aumentará el número de llamadas de la API, por lo que primero puede quitar la última consulta para comprobar si se ha ampliado la carga. Si es el problema, ¿quitará la consulta como la mejor solución para usted?

Saludos
Kelly
¿Respondí a tu pregunta? ¡Marca mi puesto como solución!
Anonymous
Not applicable

hola, @v-kelly-msft

Tuve la misma sensación acerca del cuello de botella de rendimiento que mencionas anteriormente, que es la llamada API por fila, y se testifica por los datos de hecho se cargarán rápidamente si se elimina la línea "Invoked Custom Function1".

Lo que tengo curiosidad es que hay la misma llamada a la API por fila en https://community.powerbi.com/t5/Desktop/Get-data-from-Jira-Rest-API/td-p/516130, pero parece fijo cambiando de "cada Json.Document(Web.Contents(-"AddIndex"-[índice]-[Custom]))"" a "cada Json.Document(Web.Contents([Custom]))". Eso me da la esperanza de que tal vez el mal rendimiento es causado por alguna regla mencionada en este enlace, que es "evitar la tabla de carga en la consulta de energía"?

Si el rendimiento deficiente se debe a una llamada API por cada porcentaje de 100 filas, no sé cómo obtener el trabajo de JIRA rápidamente. hay 3 enfoques potenciales para obtener datos de datos de trabajo que puedo encontrar por ahora:

  1. obtener todo el trabajo desde la fecha a través de https://jiradc.int.net.mycompany.com/rest/api/latest/worklog/updated?since=sometimestamp
  2. obtener el trabajo uno por uno a través de "GET /rest/api/2/issue/-issueIdOrKey-/worklog/-id-
  3. obtener el registro de trabajo para múltiples problemas a través de, por ejemplo. https://jiradc.int.net.mycompany.com/rest/api/latest/search?jql-issue%20in%20(ISSUE1, ISSUE2)&fields...

PERO todo lo anterior no están satisfechos para mí desde

para 1: No quiero cazar mis datos interesados entre toda la empresa, es demasiado grande.

para 2: hay 4000 problemas por ahora, un problema un api cal toma demasiado tiempo. (el problema actual que mencionamos aquí)

para 3: se pensó excelente, pero lamentablemente, el recuento máximo de retorno de la fecha de trabajo por número es de 20, pero por supuesto hay un montón de problemas cuyo recuento de worklogs excced.

¡Estoy torturado por esto por 3 días!

Hola @hongjyan ,

Vaya al editor de consultas, en la parte inferior del perfil de columna, elija "conjunto de datos completo", como se muestra a continuación:

Annotation 2020-05-18 175951.png

A continuación, quite " ""Invoked Custom Function1" á Table.AddColumn('Add worklog url', "worklog", cada Json.Document(Web.Contents([worklog url])))" y vaya a la columna "'Add worklog url',comprobar el número de filas y filas distintas para ver si están cerca de: (usando la funcionalidad groupby)

Annotation 2020-05-18 180315.png


Saludos
Kelly
¿Respondí a tu pregunta? ¡Marca mi puesto como solución!
Anonymous
Not applicable

@v-kelly-msft,

"Función personalizada invocada1" y ""Añadir URL de worklog" tienen el mismo número de filas

(fila distinta), alrededor de 4000 filas. Pero para ser honesto, no sé el punto para comprobar el recuento de filas después de que ambos nos damos cuenta de que 4000 filas conducen 4000 llamadas API tal vez causen costo de tiempo. lo que tengo curiosidad es cómo el mal rendimiento se fue en https://community.powerbi.com/t5/Desktop/Get-data-from-Jira-Rest-API/td-p/516130, me estoy perdiendo algo?

Hola @hongjyan ,

Entonces es mejor usar otro tipo de API que puede procesar múltiples consultas...

Saludos
Kelly
¿Respondí a tu pregunta? ¡Marca mi puesto como solución!

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors