You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 12:07:13