【发布时间】:2021-07-15 08:49:27
【问题描述】:
我在函数中创建了一个 Web 内容对象,以在电源查询中查询 API 端点。我使用列表生成来动态增加该列表中的记录,但是,我似乎无法弄清楚如何将偏移量增加 100。
目前,我获得前 200 条记录,之后的每个 API 调用记录 100 - 200 条。但是,我希望偏移值增加 100。目前设置为100。所以它应该是第一个API调用偏移量0,下一个偏移量100,下一个偏移量200等等。
有人有胶水吗?
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"
【问题讨论】:
-
我不懂您的语言,您在哪里更改
increase的值,使其变为100 以外的任何值?我看到您得到偏移量为 0 的期刊,然后是偏移量increase(设置为值 100),但是您在哪里将increase更改为 200、300、400 等等?如果任何了解您使用的语言的人都明白这一点,请原谅我。 -
在您的
List Generate中,将您的初始函数设为带有计数器的记录。然后,您可以增加计数器并分别更改getJournals,最后使用List.Generate的第四个参数提取您需要的内容。请参阅Chris Webb' Blog 了解在不同上下文中使用此技术的示例。 -
@droopsnoot 是的,你是对的,我没有改变增加 atm 的值。实际上,我的问题是使该值动态化或以某种方式更改列表生成逻辑。
-
@Ron Rosenfeld。谢谢你的提示。我将探索该解决方案!
标签: excel powerbi offset m xero-api