Forum Discussion
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
Oh sí, eso fue estúpido de mi parte. Elimine el "encabezado". -part de las cadenas:
Dejar
Source = Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(AdministrativeStateUniteLegale%3AA)&cursor...", [Headers=[Authorization="xxxxxx"]])),
#"Convertido a tabla" = Table.FromRecords({Source}),
#"encabezado expandido" = Table.ExpandRecordColumn(#"Convertido en tabla", "encabezado", {"estado", "mensaje", "total", "inicio", "número", "cursor", "cursor Cursor siguiente"}),datos = dejar
Paginación = ((List.Generate(() => Source,
cada List.Last( _[curseurSuivant] )<>null,
each Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(etatAdministratifUniteLegale%3AA)&curseur..." & List.Last( _ [curseurSuivant]), [Headers=[Authorization="xxxxxxx"]]))
)))en
Paginación
#"Convertido en tablas" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore)
en
#"Convertido en tablas"Hola
He encontrado una solución a este problema.
Creo que el código no es necesariamente limpio, pero funciona.
si eso puede ayudar a la gente aquí está el código:let pagination = ((List.Generate(() => [Source = Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(StateAdministrativeUniteLegale%3AA)&cursor=*&number=999", [Headers=[Authorization="Bearer 93a322ee-09a3-371b-989e-2cd21a531b4d"]])),
#"Convertido a tabla" = Table.FromRecords({Source}),
#"header expanded" = Table.ExpandRecordColumn(#"Convertido a tabla", "header", {"status", "message", "total", "start", "number", "cursor", "cursorNext"}),cursorNext=#"header expanded"[cursorNext]],
cada List.Last( _[curseurSuivant] )<>null,
cada uno [Source = Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(StateAdministrativeUniteLegale%3AA)&cursor="&List.Last(_[cursorNext])&"&number=999", [Headers=[Authorization="Bearer 93a322ee-09a3-371b-989e-2cd21a531b4d"]])),
#"Convertido a tabla" = Table.FromRecords({Source}),
#"header expanded" = Table.ExpandRecordColumn(#"Convertido a tabla", "header", {"status", "message", "total", "start", "number", "cursor", "cursorNext"}),cursorNext=#"encabezado expandido"[cursorNext]]))
)en
Paginación
Gracias a los que me ayudaron
6 Replies
- Syndicate_Admin
Administrator
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.
- Syndicate_Admin
Administrator
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
Administrator
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?
- Syndicate_Admin
Administrator
Oh sí, eso fue estúpido de mi parte. Elimine el "encabezado". -part de las cadenas:
Dejar
Source = Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(AdministrativeStateUniteLegale%3AA)&cursor...", [Headers=[Authorization="xxxxxx"]])),
#"Convertido a tabla" = Table.FromRecords({Source}),
#"encabezado expandido" = Table.ExpandRecordColumn(#"Convertido en tabla", "encabezado", {"estado", "mensaje", "total", "inicio", "número", "cursor", "cursor Cursor siguiente"}),datos = dejar
Paginación = ((List.Generate(() => Source,
cada List.Last( _[curseurSuivant] )<>null,
each Json.Document(Web.Contents("https://api.insee.fr/entreprises/sirene/V3/siren?q=periode(etatAdministratifUniteLegale%3AA)&curseur..." & List.Last( _ [curseurSuivant]), [Headers=[Authorization="xxxxxxx"]]))
)))en
Paginación
#"Convertido en tablas" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore)
en
#"Convertido en tablas"