Druid 从控制台(Druid console)中删除过滤器和运行查询

  1. 在 datasource 的树中,单击 __time 然后选择 Remove Filter

  2. 单击 Run 来运行这个查询。你应该在返回的对话框中看到 2 列的数据,这个包括有 page name 和 count:

    需要注意的是,通过控制台进行查询的返回结果集被限制为默认 100 条记录,这是在 Smart query limit 特性中进行配置的。

这个能够帮助用户避免在运行查询的时候返回大量的数据,有可能会让其系统过载。

  1. 让我们对上面的查询语句进行一些编辑来看看在查询构建器中能够提供那些特性,请在查询构建起器中进行下面的一些修改:
  2. 第一列的 "page" 后面开始输入一个新列的名字 "countryName"。请注意自动完成菜单将会针对你输入的字符提示 列名,函数,关键字以及其他的内容 选择 “countryName” 和添加新的列到 GROUP BY 语句中,可以通过名字或者位置 2 来完成操作。
  3. 为了让我们的 SQL 更加具有可读性,将 Count 列的名字替换为 Edits,这是因为这一列是使用 COUNT() 函数来进行计算的,实际上的目的是返回编辑的次数。 在 ORDER BY 语句中使用同样的名字来进行排序。COUNT() 函数是 Druid 提供的多个可用函数的一个。你可以将你的鼠标移动到函数的名字上面,在随后弹出的自动完成对话框中将会对函数的功能进行一个简要的描述 同时,你可以可以通过 Druid 的文档来了解更多的内容,例如, COUNT() 函数的文档位于 Aggregation functions 页面中。当完成上面的所有操作后,你的 SQL 脚本应该看起来和下面的是一样的了:
SELECT
  "page",
  "countryName",
  COUNT(*) AS "Edits"
FROM "wikipedia"
GROUP BY 1, 2
ORDER BY "Edits" DESC

当你对上面的 SQL 脚本再次运行以后,你会注意到我们会返回一个新的列(dimension)为 countryName,但是这一列的大部分行的值都是空的。 让我们通过修改 SQL 来只显示 countryName 不为空的行。
2. 单击 countryName 这一列,在左侧的面部中选择第一个过滤器(first filtering)的选项。这个过滤器的内容可能并不是我们想要的,我们会在后面对其进行编辑 WHERE 语句将会显示在你的查询中。

  1. 修改 WHERE 语句来将 countryName 不为空的列去除掉。
WHERE "countryName" IS NOT NULL

然后再次运行修改后的 SQL 脚本,你应该可以只看到编辑次数最多的国家:

  1. 在 Druid 使用 SQL 进行查询的后面,所有的 Druid SQL 查询都可以被转换为基于 JSON 格式的 Druid native query 来在 Druid 的数据节点中进行查询。 你可以通过单击查询运行按钮的后面... 然后选择 Explain SQL Query 来进行查看。

尽管你可以在大部分的情况下使用 Druid SQL,但是如果你能够了解 Druid 原生查询的意义,那么对你在问题解决和有关性能问题的调试上面会更加有效,请参考 Native queries 页面来获得更多信息。

另外一种通过纯文本 JSON 格式查看 SQL 脚本的办法就是在查询脚本前面添加 EXPLAIN PLAN FOR, 如下所示:

EXPLAIN PLAN FOR
SELECT
"page",
"countryName",
COUNT(*) AS "Edits"
FROM "wikipedia"
WHERE "countryName" IS NOT NULL
GROUP BY 1, 2
ORDER BY "Edits" DESC

这种方式针对在控制台工具上运行查询脚本的时候非常有用。

  1. 最后,单击 ... 然后选择 Edit context 来查看你可以添加的其他参数来控制查询的执行。 在这个字段中,可以通过输入基于 JSON 格式的 key-value 对,请参考 Context flags 页面描述的更多内容。

上面就是我们如何通过使用 Druid 控制的查询构建特性来构建的一个简单的数据查询。 在本页面的后续部分提供了更多的一些你可以尝试使用的查询实例。

同时请查看 进行查询的其他方法 部分中的内容来了解如何 在命令行工具或者 HTTP 上运行 Druid SQL 查询。