查询现有查询结果
查询结果数据源 (QRDS) 允许您针对其他数据源的结果运行查询。使用它可以连接来自多个数据库的数据或执行后处理。Redash 使用内存中的 SQLite 数据库来实现此目的。因此,如果 Redash 内存不足,针对大型结果集的查询可能会失败。
QRDS 不适用于使用参数的查询结果。如果您尝试这样做,您将看到 Error running query: Failed loading results from query id xxxx
。从 query_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_
后跟其 query_id
,您可以在查询编辑器的浏览器 URL 栏中看到该 ID。例如,/queries/49588
处的查询的别名为 query_49588
。
query_49588
的查询别名必须与其关联的 FROM
或 JOIN
关键字出现在同一行。缓存查询结果
当您查询 查询结果数据源 时,Redash 会先执行底层查询。这样可以保证在您安排 QRDS 查询时获得最新的结果。您可以通过对查询别名使用 cached_query_
而不是 query_
来加速 QRDS 查询。这会告诉 Redash 使用给定查询最近一次执行的缓存结果。这通过使用较旧的数据来提高性能。您也可以在同一查询中混合使用这两种语法。
SELECT
a.name,
b.count
FROM cached_query_123 AS a
JOIN query_456 AS b
ON a.id = b.id
查询结果权限
对 查询结果数据源 的访问权限受其关联的组管理,就像任何其他数据源一样。但是 Redash 也会检查用户是否有权对原始查询使用的数据源执行查询。
例如,如果查询 123
使用用户无权访问的数据源,则有权访问 QRDS 的用户无法执行 SELECT * FROM query_123
。他们将在 Redash 的查询屏幕中看到最近缓存的 QRDS 查询结果。但是他们将无法再次执行该查询。