【问题标题】:Condition FOR/WHILE in M function - Paginate API in Power BIM 函数中的条件 FOR/WHILE - Power BI 中的 Paginate API
【发布时间】:2020-05-15 23:34:19
【问题描述】:

我创建了这个在下面分页的 API。大致可以,但是在OFFSET属性中,我需要规定而不是记录的下一个序号的编号,例如对于第二页,编号251,第二页的下一条记录,等等.

  • 我每页的记录限制是 250

  • totalItems字段返回记录总数,例如:4500

  • 我将记录总数除以每页的记录总数,以了解我的 API 有多少页:pageRange = {0..Number.RoundUp(totalItems / 250)}

  • 当转到第二页时,在下面的 API 中发生的情况是,第二页的记录正在重复,因为我应该使用数字 1(指第二页),传递数字 251,然后,再次循环时,传递数字 501,直到完成整个序列(API 中的此参数为:offset=)。

我需要更改此行以包含 pages = List.Transform(pageRange, each ufnCallAPI(_)),

的“ufnCallAPI(_)”项的 FOR/WHILE

比如上面那一项:

List.Transform(pageRange, each ufnCallAPI(_)),
List.Transform(pageRange, each ufnCallAPI(250)),
List.Transform(pageRange, each ufnCallAPI(500)),
List.Transform(pageRange, each ufnCallAPI(750)),

不超过总数totalItems

并包含一个 FOR/WHILE 来修改我的 API 以不传递下一页的编号,而是传递下一个项目开始的列表开头的编号(偏移量)。

非常感谢!

我的代码:

     let
        ufnCallAPI = (offSet) =>
            let
                query = Web.Contents("https://api.vhsys.com/v2/pedidos?offset=" & Number.ToText(offSet)  &  "&limit=250", 
                [Headers=[#"access-token"="OCKNYbAMaDgLBZBSQPCOGPWOXGSbdO", #"secret-access-token"="XXXXXXXXXXXXXX"]]),
                result = Json.Document(query)
            in
                result,
    
            tmpResult = ufnCallAPI(1),
    
            auxTotal1 = Record.ToTable(tmpResult),
            Value = auxTotal1{2}[Value],
            auxTotal2 = Value[total],
            totalItems = auxTotal2 -1,
            pageRange = {0..Number.RoundUp(totalItems / 250)},
    
            pages =List.Transform(pageRange, each ufnCallAPI(_)),
            pages2 = Table.FromList(pages, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
            pages3 = Table.ExpandRecordColumn(pages2, "Column1", {"code", "status", "paging", "data"}, {"Column1.code", "Column1.status", "Column1.paging", "Column1.data"}),
            pages4 = Table.ExpandListColumn(pages3, "Column1.data"),
            pages5 = Table.RemoveColumns(pages4,{"Column1.code", "Column1.status", "Column1.paging"}),
            data = Table.ExpandRecordColumn(pages5, "Column1.data", {"id_ped", "id_pedido", "id_cliente", "nome_cliente", "id_local_retirada", "id_local_cobranca", "vendedor_pedido", "vendedor_pedido_id", "listapreco_produtos", "valor_total_produtos", "desconto_pedido", "desconto_pedido_porc", "peso_total_nota", "peso_total_nota_liq", "frete_pedido", "valor_total_nota", "valor_baseICMS", "valor_ICMS", "valor_baseST", "valor_ST", "valor_IPI", "condicao_pagamento_id", "condicao_pagamento", "frete_por_pedido", "transportadora_pedido", "id_transportadora", "data_pedido", "prazo_entrega", "referencia_pedido", "obs_pedido", "obs_interno_pedido", "status_pedido", "contas_pedido", "comissao_pedido", "estoque_pedido", "ordemc_emitido", "data_cad_pedido", "data_mod_pedido", "id_aplicativo", "id_pedido_aplicativo", "lixeira"}, {"id_ped", "id_pedido", "id_cliente", "nome_cliente", "id_local_retirada", "id_local_cobranca", "vendedor_pedido", "vendedor_pedido_id", "listapreco_produtos", "valor_total_produtos", "desconto_pedido", "desconto_pedido_porc", "peso_total_nota", "peso_total_nota_liq", "frete_pedido", "valor_total_nota", "valor_baseICMS", "valor_ICMS", "valor_baseST", "valor_ST", "valor_IPI", "condicao_pagamento_id", "condicao_pagamento", "frete_por_pedido", "transportadora_pedido", "id_transportadora", "data_pedido", "prazo_entrega", "referencia_pedido", "obs_pedido", "obs_interno_pedido", "status_pedido", "contas_pedido", "comissao_pedido", "estoque_pedido", "ordemc_emitido", "data_cad_pedido", "data_mod_pedido", "id_aplicativo", "id_pedido_aplicativo", "lixeira"}),
        #"Tipo Alterado" = Table.TransformColumnTypes(data,{{"id_ped", type text}, {"id_pedido", Int64.Type}, {"nome_cliente", type text}, {"valor_total_produtos", type text}}),
        #"Valor Substituído" = Table.ReplaceValue(#"Tipo Alterado",".",",",Replacer.ReplaceText,{"valor_total_produtos"}),
        #"Tipo Alterado1" = Table.TransformColumnTypes(#"Valor Substituído",{{"valor_total_produtos", Currency.Type}}),
        #"Valor Substituído1" = Table.ReplaceValue(#"Tipo Alterado1",".",",",Replacer.ReplaceValue,{"desconto_pedido", "desconto_pedido_porc", "peso_total_nota", "peso_total_nota_liq", "frete_pedido", "valor_total_nota", "valor_baseICMS", "valor_ICMS", "valor_baseST", "valor_ST", "valor_IPI"}),
        #"Tipo Alterado2" = Table.TransformColumnTypes(#"Valor Substituído1",{{"desconto_pedido", Currency.Type}, {"desconto_pedido_porc", Currency.Type}, {"peso_total_nota", Currency.Type}, {"peso_total_nota_liq", Currency.Type}, {"frete_pedido", Currency.Type}, {"valor_total_nota", type text}, {"valor_baseICMS", Currency.Type}, {"valor_ICMS", Currency.Type}, {"valor_baseST", Currency.Type}, {"valor_ST", Currency.Type}, {"valor_IPI", Currency.Type}, {"prazo_entrega", type text}, {"data_pedido", type date}}),
        #"Colunas Removidas" = Table.RemoveColumns(#"Tipo Alterado2",{"id_aplicativo", "id_pedido_aplicativo", "lixeira"}),
        #"Tipo Alterado3" = Table.TransformColumnTypes(#"Colunas Removidas",{{"valor_total_nota", type text}}),
        #"Valor Substituído2" = Table.ReplaceValue(#"Tipo Alterado3",".",",",Replacer.ReplaceText,{"valor_total_nota"}),
    #"Tipo Alterado4" = Table.TransformColumnTypes(#"Valor Substituído2",{{"valor_total_nota", Currency.Type}})
    
    in
    #"Tipo Alterado4"

【问题讨论】:

    标签: powerbi powerquery m language-model


    【解决方案1】:

    如果我正确理解您的网络抓取问题,那么我建议您不需要申请 for/while 循环。

    请查看以下链接,这可能对您的问题有所帮助。 https://www.youtube.com/watch?v=n0bSddoCmss

    https://www.myonlinetraininghub.com/scrape-data-multiple-web-pages-power-query

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2021-06-13
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    相关资源
    最近更新 更多