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

Python版Looker SDK获取原始查询及run_look/run_query调用报错排查

问题解决与方法说明

一、修复run_look/run_query的报错问题

你的代码中except块直接抛出自定义异常,丢失了原始错误详情,这是无法定位问题的核心原因。先修改异常处理逻辑,获取真实错误信息:

修改后的代码示例(以run_look为例)

import json

try:
    response = sdk.run_look(
        look_id=look.id,
        result_format="json"
    )
    data = json.loads(response)
    print(data)
except Exception as e:
    # 打印原始错误,这是排查问题的关键
    print(f"原始错误信息: {str(e)}")
    raise Exception(f'Error running look {look.id}: {str(e)}')

常见报错原因及排查方向

  • 认证问题:检查SDK初始化时的client_id、client_secret、base_url是否正确,可调用sdk.me()验证,返回用户信息则认证正常。
  • 资源不存在:确认look.id或query_id是Looker实例中真实存在的ID,可在Looker界面查看对应look/query的URL确认ID。
  • 权限不足:当前认证用户没有运行该look/query的权限,联系管理员检查角色权限配置。
  • API版本不兼容:确保Python SDK版本与Looker实例的API版本匹配,可通过sdk.api_version查看SDK版本,Looker实例版本在管理员界面查看。

二、获取原始查询语句的方法

有两种可靠方式获取Looker生成的原始SQL:

方法1:使用run_query并指定result_format="sql"

当run_query调用成功时,指定该格式会直接返回执行的原始SQL语句:

try:
    raw_sql = sdk.run_query(
        query_id=explore_query.id,
        result_format="sql"
    )
    print("原始查询语句:", raw_sql)
except Exception as e:
    print(f"获取SQL失败: {str(e)}")

方法2:通过查询对象获取预生成SQL

如果只是需要查看查询的SQL(无需执行),可以先获取Query对象,读取其sql字段:

try:
    query = sdk.query(query_id=explore_query.id)
    print("预生成SQL:", query.sql)
except Exception as e:
    print(f"获取查询对象失败: {str(e)}")

注意:这种方式返回的是Looker解析后的SQL,可能包含未执行的参数占位符,若需要最终执行的SQL,优先使用方法1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:55:07