首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Power Query M语言动态增加偏移量

Power Query M语言动态增加偏移量
EN

Stack Overflow用户
提问于 2021-04-21 15:24:22
回答 1查看 120关注 0票数 1

我在一个函数中创建了一个web内容对象,用于在power查询中查询API端点。我使用一个列表生成来动态增加该列表中的记录,但是,我似乎想不出如何将偏移量增加100。

目前,我得到了前200条记录,在那之后的每一次API调用都有100 - 200条记录。但是,我希望偏移值增加100。目前,它被设置为100。所以它应该是第一个API调用偏移量0,下一个偏移量100,下一个偏移量200,以此类推。

谁有胶水?

代码语言:javascript
复制
let
    getJournals = (page as number) =>

            let
                
                // Get Tenant ID from table

                Source = Excel.CurrentWorkbook(),
                #"Expanded Content" = Table.ExpandTableColumn(Source, "Content", {"TenantID", 
                "Client_Name", "ID"}, {"Content.TenantID", "Content.Client_Name", "Content.ID"}),
                #"Content ID" = #"Expanded Content"{2}[Content.ID],
                TenantID = #"Content ID",
                
                // Query database for access token

                tokenQuery = Sql.Database("XXX", "XXX", [Query="Select accessToken, 
                refreshToken from XXX WHERE systemName = 'XXX'"]),
                accessTokenValue = tokenQuery{0}[accessToken],
            
                          
                // initialise request data
                //authorization = "Bearer " & accessTokenValue,
                accept = "application/json",
                contentType = "application/json",
                endPoint = "https://api.xero.com/api.xro/2.0/Journals?offset="& Number.ToText(page),
                
                //Create web element

                data = Json.Document 
                        (
                        Web.Contents(
                            endPoint, 
                        [
                Headers = 
                        [
                    #"Authorization" = authorization,
                    #"Accept" = accept,
                    #"Content-Type" = contentType,
                    #"xero-tenant-id" = TenantID
                        ]
                        ]
                        )
                        )

             in
             
             data,
             increase = 100,
             allJournals = List.Generate(() => getJournals(0),
             each not List.IsEmpty([Journals]),
             each getJournals(increase)),
             #"Converted to Table" = Table.FromList(allJournals, Splitter.SplitByNothing(), null, null, 
             ExtraValues.Error)
in
#"Converted to Table"
EN

回答 1

Stack Overflow用户

发布于 2021-04-21 22:35:00

因此,Xero中的日志是按顺序编号的。

Offset |指定日记号的偏移量。

例如,将返回JournalNumber大于偏移量的日记帐。

文档https://developer.xero.com/documentation/api/journals

要成功地分页以获取每个日志(它们以100为一批返回),您需要传入最后一个数组元素的日志编号,直到API返回99个或更少的日志。

例如,我认为演示公司一开始的期刊编号是344。因此,要获取所有日志,您需要:

代码语言:javascript
复制
> GET https://api.xero.com/api.xro/2.0/Journals
=> {"Journals": [
    {
      ...
      "JournalNumber": 344
      ...98 more
      "JournalNumber": 443
    }
  ]}

> GET https://api.xero.com/api.xro/2.0/Journals?offset=443
=> {"Journals": [
    {
      ...
      "JournalNumber": 444
      ...98 more
      "JournalNumber": 543
    }
  ]}

> GET https://api.xero.com/api.xro/2.0/Journals?offset=543
=> { "Journals": [
    {
      ...
      "JournalNumber": 544
      ...52 more
      "JournalNumber": 596
    }
  ]}

最后一次调用有< 100个日志,所以您知道这是最后一个集合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67191090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档