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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Ayuda de la API de Power Query con la generación de todos los tokens de la página siguiente.

Hola chicos,
Espero que estéis disfrutando del fin de semana. Necesito mucha ayuda con la API de Power Query y la generación de todos esos tokens de la página siguiente. He creado una función llamada "fx_Caledly_Event_Pagination_WithPageID" y otra consulta de poder llamada "nl_Event_Pagination_List" para enumerar todos esos tokens, pero solo obtengo un token. No soy desarrollador y apenas sé nada de APIs. He estado confiando en los recursos en línea y en YouTube para llegar hasta aquí. ¿Alguien puede echarme una mano y ayudarme a obtener una lista completa de esas fichas de la página siguiente? Desafortunadamente, no puedo compartir las credenciales de la API, pero le daré información y capturas de pantalla. Con suerte, entenderás la idea.
Respuesta de la API lo que le pegué en Postman
Zack92_0-1714876303330.png

Función (fx_Caledly_Event_Pagination_WithPageID)

(PageToken as text)=>
let
    Source = Json.Document(Web.Contents("https://api.calendly.com/scheduled_events/?organization=https://api.calendly.com/organizations/D457896GHEBHGDDL&sort=start_time:desc&next_page_token=" &PageToken, [Headers=[Authorization="************", #"Content-Type"="application/json"]])),
    pagination = Source[pagination],
    #"Converted to Table" = Record.ToTable(pagination),
    #"Filtered Rows" = Table.SelectRows(#"Converted to Table", each ([Name] = "next_page_token")),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Name"})
in
    #"Removed Columns"

Captura de pantalla

Zack92_2-1714876699180.png


A continuación, trato de generar todos los tokens de la página siguiente, pero solo obtengo 1,

let
    Source = List.Generate(
    ()=> [Result = try fx_Caledly_Event_Pagination_WithPageID("") otherwise null, PageNum=1],
    each [Result] <> null,
    each [Result = try fx_Caledly_Event_Pagination_WithPageID(List.Single([Result])) otherwise null, PageNum=[PageNum]+1 ],
    each [Result]
),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandTableColumn(#"Converted to Table", "Column1", {"Value"}, {"Column1.Value"})
in
    #"Expanded Column1"

Captura de pantalla
Zack92_1-1714876628088.png

He estado luchando con esto todo el día y parece que no puedo entenderlo. Realmente me vendría bien un poco de ayuda para generar una lista completa de todos esos tokens de la página siguiente. Realmente agradecería cualquier ayuda que pueda ofrecer.

¡Muchas gracias!

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hola @Zack92

 List.Generate(
    ()=> [Result = try fx_Caledly_Event_Pagination_WithPageID("") otherwise null, PageNum=1],
    each [Result] <> null,
    each [Result = try fx_Caledly_Event_Pagination_WithPageID(List.Single([Result])) otherwise null, PageNum=[PageNum]+1 ],
    each [Result]

Mencionaste que solo obtienes una página. Esto se debe a que la primera iteración no es igual a null, por lo que se detiene justo ahí.

()=> [Resultado = try fx_Caledly_Event_Pagination_WithPageID("") de lo contrario nulo, PageNum=1],
cada [Resultado] <> nulo

Es posible que desee probar lo contrario. Querrá que se ejecute hasta que el número de página sea nulo. Si esto no funciona, simplemente crearía una lista de números/tablas de números para iterar. Ejemplo {1..10}. Esto crea una lista de números del 1 al 10.

@danextian
Hazlo mejor
Gracias por echar un vistazo a mi problema. Lo siento, pero tengo problemas para entender tu explicación. Podría deberse a que no tengo mucho conocimiento sobre el desarrollo de API. ¿Podría explicar la diferencia entre su código de "generación de listas" y "generación de listas"? ¿Puede decirme cómo solucionar ese problema para que no se detenga?

Hola @Zack92

Mi sugerencia es crear una lista de números que contenga la página por la que desea iterar. Por supuesto, la lista no va a ser exacta: puede contener más o menos números de página de los requeridos, ya que no sabemos cuántas páginas hay exactamente. El código sería más o menos así:

let
  //list of numbers from one through 15  
  Source = {1 .. 15} ,
  #"Converted to Table" = Table.FromList(
    Source,
    Splitter.SplitByNothing(),
    {"Numbers"},
    null,
    ExtraValues.Error
  ),
  #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table", {{"Numbers", type text}}),
  #"Added Custom" = Table.AddColumn(
    #"Changed Type",
    "Custom",
    each
      let
        x = [Numbers]
      in
        Json.Document(
          Web.Contents(
            "https://api.calendly.com/",
            [
              RelativePath = "scheduled_events/?organization=https://api.calendly.com/organizations/D457896GHEBHGDDL&sort=start_time:desc&next_page_token="
                & x,
              Headers = [Authorization = "************", #"Content-Type" = "application/json"]
            ]
          )
        )
  )
in
  #"Added Custom"

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.