如何用LookerSDK 4.0在Python中下载带筛选器的仪表板Tile?
问题:更新Looker仪表板筛选器后下载Tile未应用筛选条件
我需要通过Python程序化下载Looker仪表板中的特定元素(图表和表格),使用LookerSDK 4.0实现。参考官方示例后,尝试先更新仪表板筛选器,再下载对应Tile,但下载的内容未应用筛选条件。
我的操作步骤及代码:
- 初始化SDK并更新仪表板筛选器
sdk = looker_sdk.init40("../../looker.ini") dashboard = sdk.dashboard(id) filters = dashboard.dashboard_filters for filter in filters: if filter["name"] == "user_id": filter["default_value"] = "abc" break dashboard.dashboard_filters = filters dashboard = sdk.update_dashboard(id, dashboard)
- 根据标题查找目标Tile
title = title.lower() found = None for tile in dash.dashboard_elements: if tile.title.lower() == title: found = tile break
- 通过Tile的
query_id创建渲染任务并下载
task = sdk.create_query_render_task( query_id=tile.query_id, result_format=format, width=600, height=600 ) # 轮询任务完成逻辑... fileName = "test.png" with open(fileName, "wb") as f: f.write(result)
原因分析
你修改的是仪表板的默认筛选值,这仅改变仪表板打开时的初始状态,不会直接修改Tile关联的原始查询。通过query_id创建渲染任务时,调用的是未携带仪表板筛选参数的原始查询,因此筛选条件不会生效。
解决方案
有两种可行的解决方式:
方式1:使用create_dashboard_element_render_task(推荐)
直接针对仪表板元素创建渲染任务,自动应用仪表板筛选上下文,无需修改仪表板默认值,更灵活:
# 找到目标Tile后,创建仪表板元素渲染任务 task = sdk.create_dashboard_element_render_task( dashboard_id=dashboard.id, dashboard_element_id=tile.id, result_format=format, width=600, height=600, # 直接传入临时筛选参数,不影响仪表板默认设置 filters={"user_id": "abc"} ) # 轮询任务状态直到完成 import time while True: task_status = sdk.render_task(task.id) if task_status.status == "success": break elif task_status.status == "failure": raise Exception(f"渲染任务失败: {task_status}") time.sleep(1) # 获取并保存结果 result = sdk.render_task_results(task.id) with open("test.png", "wb") as f: f.write(result)
方式2:修改Tile关联的查询参数
若需基于原始查询调整筛选条件,可先获取查询详情并修改参数,再创建渲染任务(注意:修改原始查询会影响所有使用该查询的场景,建议先复制查询再修改):
# 获取Tile对应的查询 query = sdk.query(tile.query_id) # 修改查询的筛选条件 query.filters["user_id"] = "abc" # 可选:复制查询避免修改原始查询 # copied_query = sdk.create_query(query) # 使用修改后的查询创建渲染任务 task = sdk.create_query_render_task( query_id=query.id, # 若复制查询则用copied_query.id result_format=format, width=600, height=600 ) # 后续轮询和保存步骤同上...
内容的提问来源于stack exchange,提问作者sakshi
相关产品推荐
相关产品推荐

