如何使用LookerSDK 4.0从 Jmeter 板下载应用了Python过滤器的磁贴?

e5nqia27  于 2023-06-28  发布在  Python
关注(0)|答案(2)|浏览(85)

我需要下载一些特定的元素(图表和表格)从一个looker Jmeter 板编程在python。我目前正在探索LookerSDK 4.0以实现我的用例。
我按照这些示例下载了一个应用了过滤器的 Jmeter 板,并单独下载了一个磁贴。https://github.com/looker-open-source/sdk-codegen/tree/main/examples/python
我尝试通过应用过滤器更新 Jmeter 板,

sdk = looker_sdk.init40("../../looker.ini")

# get dashboard using its id 
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

# gets updated dashboard with filters
dashboard = sdk.update_dashboard(id, dashboard)

然后使用控制面板根据磁贴名称获取磁贴,

title = title.lower()
found = None
for tile in dash.dashboard_elements:
      if tile.title.lower() == title:
        found = tile
        break

然后下载磁贴

task = sdk.create_query_render_task(
    query_id=tile.query_id, 
    result_format=format,
    width=600, 
    height=600
    )
# code to poll the render task until it completes
...
...
...

fileName = "test.png"
with open(fileName, "wb") as f:
    f.write(result)

当我尝试更新 Jmeter 板过滤器并下载磁贴时,它仍然在下载没有过滤器的磁贴图像。有谁能帮助我理解我们如何才能实现这一目标?

ddrv8njm

ddrv8njm1#

找到了解决我所面临的上述问题的方法。我们需要用特定的过滤器更新 Jmeter 板,然后获取磁贴。

# create the dashboard filter object.
updated_filter = models.WriteDashboardFilter(
    default_value="<value to be updated>",
    model="<model name>",
    name="<field name>",
    type="<field type>"
)

# update dashboard with filter
sdk.update_dashboard_filter(dashboard_filter_id, updated_filter)

然后,您可以使用更新后的 Jmeter 板对象来获取特定的磁贴。使用create_dashboard_element_render_task而不是create_query_render_task。

# create a dashboard element task to render tile to an image/document
task = sdk.create_dashboard_element_render_task(
    query_id=tile.query_id, 
    result_format=format,
    width=600, 
    height=600
    )
t8e9dugd

t8e9dugd2#

很高兴你已经找到了解决方案。我有一个非常相似的病例。我想问一下我将使用的过滤器是否由用户从UI中确定,以及我是否需要检索过滤器值/或具有更新值的图块。你知道该怎么做吗?

相关问题