M函数中的条件四/时-Power BI中的分页API

问题描述 投票:0回答:1

我创建了此api,分页如下。它可以正常工作,但是在OFFSET属性中,我需要指定记录的下一个序号的编号,例如第二页的编号251,第二页的下一条记录,等等。 。

  • 我每页的记录限制为250

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

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

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

     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"

我需要更改此行,以在项目“ ufnCallAPI(_)”中包含de FOUR / WHILE,:

页面= List.Transform(pageRange,每个ufnCallAPI(_)),

例如,上面的项目:

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

总计总数= totalItems

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

非常感谢!

我创建了此api,分页如下。它可以正常工作,但是在OFFSET属性中,我需要指定记录的下一个序列号,例如第二个...

powerbi powerquery m language-model
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.