如何调整Power BI代码实现ChargeBee API全量数据分页获取?
ChargeBee API 全量数据获取的Power BI M代码调整方案
直接用递归函数处理ChargeBee的分页机制(依赖返回结果中的next_offset参数),以下是修改后的完整代码:
let // 定义递归函数,处理分页请求 GetChargeBeePages = (optional offset as nullable text) as list => let // 构建请求URL:如果有offset则追加参数,否则用基础URL BaseUrl = "https://{COMPANY.NAME}.chargebee.com/api/v2/subscriptions", RequestUrl = if offset <> null then BaseUrl & "?offset=" & offset else BaseUrl, // 发起请求(注意:如果需要认证,需在Web.Contents中添加Headers,示例见注释) // Web.Contents(RequestUrl, [Headers=[#"Authorization"="Basic " & Binary.ToText(Text.ToBinary("你的API密钥:"), BinaryEncoding.Base64)]]) Source = Json.Document(Web.Contents(RequestUrl)), // 提取当前页的数据列表和下一页偏移量 CurrentPageData = Source[list], NextOffset = Source[next_offset] in // 如果存在下一页偏移量,递归调用函数并合并数据;否则返回当前页数据 if NextOffset <> null then CurrentPageData & GetChargeBeePages(NextOffset) else CurrentPageData, // 调用递归函数,从第一页开始获取全量数据 FullDataList = GetChargeBeePages(null), // 转换为表格并展开数据 ConvertedToTable = Table.FromList(FullDataList, Splitter.SplitByNothing()), ExpandedRecord = Table.ExpandRecordColumn(ConvertedToTable, "Column1", {"subscription", "customer"}) in ExpandedRecord
关键说明:
- 递归函数逻辑:
GetChargeBeePages函数会自动检查每一页返回的next_offset,只要存在该值就继续请求下一页,直到获取所有数据后合并结果。 - URL参数处理:用
offset参数实现分页,ChargeBee API默认每页返回10条数据,该参数由API返回的next_offset自动传递。 - 认证提示:如果你的ChargeBee API需要身份验证,需在
Web.Contents中添加Headers参数(代码中已给出注释示例,替换成你的API密钥即可)。 - 数据展开:最后将合并后的全量列表转换为表格,展开
subscription和customer字段,和原代码的最终效果一致,但数据是完整的。
内容的提问来源于stack exchange,提问作者Gulle
相关产品推荐
相关产品推荐

