Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
5 years ago
Solved

List.Generate no funciona

Hola

Simplemente reutilizo un código de consulta de energía para poder usar una API.
Pensé que estaba funcionando, pero tengo un problema al usar List.Generate.

De hecho, logro recuperar mi "cursor" y la función logra incrementarse en el segundo, pero permanece bloqueado en este.

Por ejemplo:

Cuando llamo a la API, obtengo un primer resultado con # "header développé" [header.curseurSuivant] = AAAAAA

Luego viene el primer bucle que me da como resultado # "header développé" [header.curseurSuivant] = BBBBBBB

Y para todos mis otros resultados mi # "header développé" [header.curseurSuivant] es el mismo y es igual a BBBBBB

Aquí está el código que será más significativo para usted:

dejar

Source = Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(etatAdministratifUniteLegale%3AA)&curseur=*", [Headers=[Authorization="xxxxxx"]])),
#"Converti en table" = Table.FromRecords({Source}),
#"header développé" = Table.ExpandRecordColumn(#"Converti en table", "header", {"statut", "message", "total", "debut", "nombre", "curseur", "curseurSuivant"}, {"header.statut", "header.message", "header.total", "header.debut", "header.nombre", "header.curseur", "header.curseurSuivant"}),

datos = dejar

Paginación = ((List.Generate(() => Source,
each #"header développé"[header.curseurSuivant]<>null,
each Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(etatAdministratifUniteLegale%3AA)&curseur="& List.Last(#"header développé"[header.curseurSuivant]), [Headers=[Authorization="xxxxxxx"]]))
)))

en
Paginación
#"Convertido en tablas" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore)
en
#"Convertido en tablas"

¿Es posible encontrar una solución para mí, por favor?

gracias de antemano

6 Replies

  • No especificó el valor inicial de

    #"encabezado expandido"[header.cursorNext]

    en la semilla. Es posible que también desee utilizar un nombre simple para esa variable.

  • Hola @AlexisPREVOT ,
    esto se debe a que siempre está haciendo referencia al primer paso.
    Pero List.Generate se utiliza normalmente para hacer referencia al paso anterior de la iteración actual.
    Si utiliza el azúcar de sintaxis "cada", tiene que utilizar el carácter de subrayado ("_") para hacer referencia al resultado de la iteración anterior:

    dejar

    Source = Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(etatAdministratifUniteLegale%3AA)&curseur...", [Headers=[Authorization="xxxxxx"]])),
    #"Converti en table" = Table.FromRecords({Source}),
    #"header développé" = Table.ExpandRecordColumn(#"Converti en table", "header", {"statut", "message", "total", "debut", "nombre", "curseur", "curseurSuivant"}, {"header.statut", "header.message", "header.total", "header.debut", "header.nombre", "header.curseur", "header.curseurSuivant"}),

    datos = dejar

    Paginación = ((List.Generate(() => Source,
    each List.Last( _[header.curseurSuivant] )<>null,
    each Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(etatAdministratifUniteLegale%3AA)&curseur..." & List.Last( _ [header.curseurSuivant]), [Headers=[Authorization="xxxxxxx"]]))
    )))

    en
    Paginación
    #"Convertido en tablas" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore)
    en
    #"Convertido en tablas"

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hay @ImkeF,

      Gracias por sus explicaciones y el código.
      Traté de usarlo, pero desafortunadamente recibí un mensaje de error diciéndome que el "encabezado". CurseurSuivant" del registro no se pudo encontrar.

      ¿Podría tener una idea, por favor?