我在 Python 虚拟环境中的 Debian 服务器上运行 Apache Superset 1.4.0。
根据官方文档https://superset.apache.org/docs/installation/sql-templatating,如果我将
ENABLE_TEMPLATE_PROCESSING
中的True
设置为superset_config.py
,我应该能够通过URL查询Apache Superset 的参数,并在我的 SQL 查询中使用它们,这样我就可以进行动态 SQL 查询。
但我还是做不到。我创建包含所需内容的配置文件:
$ cat /home/administrator/venv-superset/bin/superset_config.py
FEATURE_FLAGS = {
"ENABLE_TEMPLATE_PROCESSING": True,
}
并重新启动 Apache Superset 服务。检查日志,它似乎选择了我如上所述创建的配置文件:
$ journalctl | grep superset | grep configuration
Jan 27 14:52:18 dashboard-server python[12204]: Loaded your LOCAL configuration at [/home/administrator/venv-superset/bin/superset_config.py]
Jan 27 15:15:45 dashboard-server python[12215]: Loaded your LOCAL configuration at [/home/administrator/venv-superset/bin/superset_config.py]
Jan 27 15:15:57 dashboard-server python[12406]: Loaded your LOCAL configuration at [/home/administrator/venv-superset/bin/superset_config.py]
然后我首先检查了一个超级简单的查询,看看 Superset 工作正常:
SELECT 'USA' as query_parameter
LIMIT 100
OFFSET 0;
现在我将查询更改为以下内容,保存它,然后复制此dynamic查询的链接:
SELECT '{{ url_param('country') }}' as query_parameter
LIMIT 100
OFFSET 0;
然后我在最后添加
&country=USA
,但不幸的是它没有运行我想要的动态查询,下面的截图中的URL被Apache Superset更改,但我输入的是http: ... sqllab/?savedQueryId=4&country=USA
:
我没有得到任何结果。它只说“运行查询以在此处显示结果”。但我期望得到相同的结果,我的意思是我期望 Apache Superset 从名为
country
的 URL 参数中检索值 USA 并在 SQL 查询中使用它。
我错过了什么?
更新:模板功能似乎适用于
{{ current_username() }}
宏,但仍然不适用于 {{ url_param('country') }}
宏:
我认为 URL 参数在 SQL 实验室中不起作用。您所要做的就是运行原始查询
SELECT 'USA' as query_parameter
LIMIT 100
OFFSET 0;
保存并浏览查询。进入图表部分后,您可以编辑数据集以包含带有 URL 参数的 Jinja 模板。
SELECT '{{ url_param('country') }}' as query_parameter
LIMIT 100
OFFSET 0;
保存它,然后您可以通过仍在资源管理器选项卡上编辑 URL 来测试它是否有效。