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

如何用Python通过.atomsvc文件自动化下载数据并转为DataFrame?

解决方案

1. 解析.atomsvc文件提取真实数据源地址

.atomsvc本质是指向数据源的XML配置文件,先解析它拿到实际的请求链接:

import xml.etree.ElementTree as ET

tree = ET.parse("你的文件.atomsvc")
root = tree.getroot()

# 处理Atom的命名空间(必填,否则找不到节点)
ns = {
    'atom': 'http://www.w3.org/2005/Atom',
    'd': 'http://schemas.microsoft.com/ado/2007/08/dataservices'
}

# 遍历找到数据源链接(节点路径根据实际文件调整,通常在atom:entry下的atom:link节点)
for entry in root.findall('atom:entry', ns):
    data_link = entry.find('atom:link[@rel="edit"]', ns)
    if data_link:
        data_url = data_link.get('href')
        print(f"提取到数据源地址: {data_url}")

2. 处理Windows集成身份验证(核心解决ConnectionError)

Power BI能访问内部数据源(比如SQL Server/SSAS),通常依赖Windows NTLM/SSPI集成认证,普通requests请求没处理这一步才会连不上sql-2主机。用requests-negotiate-sspi模块实现认证:

  • 先安装依赖:
pip install requests requests-negotiate-sspi
  • 带认证请求数据并转成DataFrame:
import requests
from requests_negotiate_sspi import HttpNegotiateAuth
import pandas as pd

# 用上面解析到的data_url
response = requests.get(data_url, auth=HttpNegotiateAuth())
response.raise_for_status()  # 抛出请求错误,方便排查

# 若返回JSON格式
data = response.json()
df = pd.DataFrame(data['value'])  # 结构根据实际返回调整

# 若返回XML格式,直接用pandas解析
df = pd.read_xml(response.content)

3. 模拟Power BI请求头(可选)

部分服务器会验证请求来源,抓包Power BI的请求头加到requests里:

headers = {
    'User-Agent': 'PowerBI/2.0',
    'Accept': 'application/atom+xml,application/xml'
    # 其他抓包到的头信息按需添加
}

response = requests.get(data_url, auth=HttpNegotiateAuth(), headers=headers)

排查要点

  • 确认Python环境能访问sql-2主机(ping测试、内网/VPN连通性)
  • 检查当前Windows账号和Power BI用的是否一致(权限一致才能访问)
  • 若数据源是SSAS,可能需要用pyadomd模块直接连接,而非HTTP请求:
pip install pyadomd
from pyadomd import Pyadomd
import pandas as pd

connection_string = "Provider=MSOLAP;Data Source=sql-2;Catalog=你的数据集;"
with Pyadomd(connection_string) as conn:
    with conn.cursor().execute("SELECT * FROM 你的模型表") as cursor:
        df = pd.DataFrame(cursor.fetchall(), columns=[x[0] for x in cursor.description])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:40:54