该查询结果数据源(QRDS) 可以查询 从其他数据源的结果。使用它来连接来自多个数据库的数据。Redash 使用内存中的SQLite数据库来实现这一点。因此,如果Redash内存不足,对大型结果集的查询可能会失败。
QRDS不适用于使用参数的查询结果。如果你尝试过,应该看到过
Error running query: Failed loading results from query id xxxx
这样的报错。删除参数可以修复错误。
设置
您可以在设置菜单中启用查询结果的数据源,设置很简单:只需要为数据源提供一个名称:
这是将出现在查询编辑器左侧的下下拉列表,数据源为Query Results
.
大多数情况下只需要一个查询结果数据源
查询
QRDS 接受 SQLite语法:
SELECT
a.name,
b.count
FROM query_123 AS a
JOIN query_456 AS b
ON a.id = b.id
您的其他查询就像是QRDS中的“表”。每个都有名称:query_
加上id
(eg:query_23
),您可以从查询编辑器的url中找到。
注意:查询的表名必须和关联的FROM 或 JOIN 出现在同一行、、
缓存查询结果
当你查询Query Result Data Source 时,Redash首先执行底层查询。如果你需要挺高QRDS的查询速度,可以使用缓存的底层查询结果,这样就不需要执行层查询,只需要将query_id
改成cached_query_id
即可。
您可以在同一个查询从混合使用:
SELECT
a.name,
b.count
FROM cached_query_123 AS a
JOIN query_456 AS b
ON a.id = b.id
查询结果权限
对查询结果数据源的访问和其他的数据源一样,由与其关联的组来管理。但Redash还会检查用户是否有原始查询使用的数据源的权限。 例如:SELECT * From query_123 如果123使用了该用户无法访问的数据源,即使该用户可以访问查询结果数据源也无法执行。他们将在查询的页面中看到缓存的查询结果,只是无法再次执行query_123。