You need to enable JavaScript to run this app. 能否在Power BI中直连调用ServiceNow REST API实现数据拉取?
优惠活动
大模型
产品
解决方案
定价
更多

能否在Power BI中直连调用ServiceNow REST API实现数据拉取?

Power BI 直连ServiceNow API实操指南(适配现有OAuth密码授权逻辑)

可行性结论:该方案完全可落地,不需要额外改造你现有的ServiceNow OAuth应用配置,只需要把你已验证通过的PowerShell逻辑完整复刻到Power Query的M代码中,即可实现从Power BI端直接拉取数据、定时同步,全程不需要依赖本地网关。

代码运行时会自动匹配TLS12及以上的加密协议,和你PowerShell里强制开启TLS12的逻辑效果完全一致。

实操步骤

  • 打开Power BI Desktop,依次点击「获取数据」→「空查询」,进入Power Query编辑器
  • 点击顶部「高级编辑器」,将原有默认生成的代码全部清空,替换为如下和你PS逻辑逐行对齐的代码,把代码里的占位参数替换成你自己的实际值即可:
let
    // 基础参数配置(完全对齐你PS代码里的变量值)
    envUrl = "https://companyqa.service-now.com/",
    clientId = "client_id",
    clientSecret = "client_secret",
    userName = "username",
    passWord = "password",
    targetIncidentQuery = "number=NUM111111",

    // 第一步:复刻PS逻辑的OAuth令牌获取流程
    tokenEndpoint = envUrl & "oauth_token.do",
    tokenRawResponse = Web.Contents(tokenEndpoint, [
        Method = Post,
        Content = Text.ToBinary(Uri.BuildQueryString([
            grant_type = "password",
            client_id = clientId,
            client_secret = clientSecret,
            username = userName,
            password = passWord
        ])),
        Headers = [#"Content-Type" = "application/x-www-form-urlencoded"]
    ]),
    validAccessToken = Json.Document(tokenRawResponse)[access_token],

    // 第二步:复刻PS逻辑的Incident数据拉取流程
    incidentEndpoint = envUrl & "api/now/v2/table/incident",
    incidentRawResponse = Web.Contents(incidentEndpoint, [
        Method = Get,
        Query = [
            sysparm_query = targetIncidentQuery
        ],
        Headers = [
            Authorization = "Bearer " & validAccessToken,
            #"Content-Type" = "application/json"
        ]
    ]),
    responseResultList = Json.Document(incidentRawResponse)[result],
    // 自动把返回的JSON数组转成Power BI可直接可视化的表格结构
    resultTable = Table.FromList(responseResultList, Splitter.SplitByNothing()),
    finalTable = Table.ExpandRecordColumn(resultTable, "Column1", Record.FieldNames(responseResultList{0}))
in
    finalTable

实操注意事项

  • 凭据弹窗配置:第一次运行查询时,Power BI会弹出数据源认证窗口,必须选择「匿名」认证模式,不要选择基本认证或OAuth认证,否则Power BI会在我们自带的令牌请求之外额外加一层认证校验,直接阻断请求
  • 敏感信息优化:不要把账号密码、client_secret硬写在代码里,可以在Power Query中新建独立参数项存储所有敏感值,后续发布到Power BI Service后,直接在数据源设置页更新参数值即可完成刷新配置,不用反复修改代码
  • 刷新链路验证:本地调试跑通数据后,直接把数据集发布到Power BI Service即可开启定时刷新,因为整个请求都是Power BI云节点直接访问公网可通的ServiceNow实例,不需要配置本地网关,和你本地用PowerShell请求的链路逻辑完全一致
  • 权限一致性校验:Power BI里触发的报错会和你在PowerShell里跑命令的报错完全对齐,如果出现403权限错误,只需要在ServiceNow侧确认OAuth应用绑定的账号已经开通incident表的查询权限即可

内容的提问来源于stack exchange,提问作者pandasnew123455

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 08:45:04