跳到主要内容
跳到主要内容

SQL 控制台

SQL 控制台是在 ClickHouse Cloud 中探索和查询数据库的最快、最简单的方式。 您可以使用 SQL 控制台来

  • 连接到您的 ClickHouse Cloud 服务
  • 查看、筛选和排序表数据
  • 只需点击几下即可执行查询并将结果数据可视化
  • 与团队成员共享查询并更有效地协作。

探索表

查看表列表和架构信息

可以在左侧边栏区域找到 ClickHouse 实例中包含的表的概述。 使用左侧栏顶部的数据库选择器来查看特定数据库中的表

table list and schema

列表中的表也可以展开以查看列和类型

view columns

探索表数据

单击列表中的表以在新选项卡中打开它。 在表视图中,可以轻松查看、选择和复制数据。 请注意,复制粘贴到 Microsoft Excel 和 Google Sheets 等电子表格应用程序时,结构和格式会保留。 您可以使用页脚中的导航在表数据页面之间翻页(分页增量为 30 行)。

abc

检查单元格数据

单元格检查器工具可用于查看单个单元格中包含的大量数据。 要打开它,请右键单击单元格并选择“检查单元格”。 可以通过单击检查器内容右上角的复制图标来复制单元格检查器的内容。

inspecting cell content

筛选和排序表

排序表

要在 SQL 控制台中对表进行排序,请打开一个表并选择工具栏中的“排序”按钮。 此按钮将打开一个菜单,允许您配置排序。 您可以选择要排序的列并配置排序的顺序(升序或降序)。 选择“应用”或按 Enter 键对表进行排序

sort descending on a column

SQL 控制台还允许您向表添加多个排序。 再次单击“排序”按钮以添加另一个排序。 注意:排序按照它们在排序窗格中出现的顺序应用(从上到下)。 要删除排序,只需单击排序旁边的“x”按钮。

筛选表

要在 SQL 控制台中筛选表,请打开一个表并选择“筛选”按钮。 就像排序一样,此按钮将打开一个菜单,允许您配置筛选器。 您可以选择要筛选的列并选择必要的条件。 SQL 控制台智能地显示与列中包含的数据类型相对应的筛选选项。

filter on the radio column equal to GSM

当您对筛选器感到满意时,可以选择“应用”来筛选数据。 您还可以添加其他筛选器,如下所示。

Add a filter on range greater than 2000

与排序功能类似,单击筛选器旁边的“x”按钮即可删除它。

一起筛选和排序

SQL 控制台允许您同时筛选和排序表。 为此,请使用上述步骤添加所有需要的筛选器和排序,然后单击“应用”按钮。

Filtering and sorting together

从筛选器和排序创建查询

SQL 控制台只需单击一下即可将您的排序和筛选器直接转换为查询。 只需从工具栏中选择“创建查询”按钮,其中包含您选择的排序和筛选参数。 单击“创建查询”后,将打开一个新的查询选项卡,其中预先填充了与表视图中包含的数据相对应的 SQL 命令。

Create a query from sorts and filters

注意

使用“创建查询”功能时,筛选器和排序不是强制性的。

您可以通过阅读(链接)查询文档来了解有关在 SQL 控制台中查询的更多信息。

创建和运行查询

创建查询

在 SQL 控制台中创建新查询有两种方法。

  • 单击选项卡栏中的“+”按钮

  • 从左侧边栏查询列表中选择“新建查询”按钮

    Creating a query

运行查询

要运行查询,请在 SQL 编辑器中键入 SQL 命令,然后单击“运行”按钮或使用快捷键 cmd / ctrl + enter。 要按顺序编写和运行多个命令,请确保在每个命令后添加分号。

查询执行选项 默认情况下,单击运行按钮将运行 SQL 编辑器中包含的所有命令。 SQL 控制台支持另外两个查询执行选项

  • 运行选定的命令
  • 运行光标处的命令

要运行选定的命令,请突出显示所需的命令或命令序列,然后单击“运行”按钮(或使用 cmd / ctrl + enter 快捷键)。 当存在选择时,您还可以从 SQL 编辑器上下文菜单(通过在编辑器内的任何位置单击鼠标右键打开)中选择“运行选定项”。

run selected query

可以通过两种方式实现运行当前光标位置的命令

  • 从扩展运行选项菜单中选择“在光标处”(或使用相应的 cmd / ctrl + shift + enter 键盘快捷键

    run at cursor

    • 从 SQL 编辑器上下文菜单中选择“在光标处运行”

    run at cursor

注意

光标位置处的命令将在执行时闪烁黄色。

取消查询

在查询运行时,查询编辑器工具栏中的“运行”按钮将被“取消”按钮替换。 只需单击此按钮或按 Esc 即可取消查询。 注意:任何已返回的结果将在取消后仍然存在。

Cancel a query

保存查询

如果之前未命名,您的查询应称为“未命名查询”。 单击查询名称以更改它。 重命名查询将导致查询被保存。

Give a query a name

您还可以使用保存按钮或 cmd / ctrl + s 键盘快捷键来保存查询。

Save the query

使用 GenAI 管理查询

此功能允许用户以自然语言问题的形式编写查询,并让查询控制台根据可用表的上下文创建 SQL 查询。 GenAI 还可以帮助用户调试他们的查询。

有关 GenAI 的更多信息,请查看 在 ClickHouse Cloud 博客文章中宣布 GenAI 驱动的查询建议

表设置

让我们导入英国房价支付示例数据集,并使用它来创建一些 GenAI 查询。

  1. 打开 ClickHouse Cloud 服务。

  2. 单击 + 图标创建一个新查询。

  3. 粘贴并运行以下代码

    CREATE TABLE uk_price_paid
    (
    price UInt32,
    date Date,
    postcode1 LowCardinality(String),
    postcode2 LowCardinality(String),
    type Enum8('terraced' = 1, 'semi-detached' = 2, 'detached' = 3, 'flat' = 4, 'other' = 0),
    is_new UInt8,
    duration Enum8('freehold' = 1, 'leasehold' = 2, 'unknown' = 0),
    addr1 String,
    addr2 String,
    street LowCardinality(String),
    locality LowCardinality(String),
    town LowCardinality(String),
    district LowCardinality(String),
    county LowCardinality(String)
    )
    ENGINE = MergeTree
    ORDER BY (postcode1, postcode2, addr1, addr2);

    此查询应大约需要 1 秒才能完成。 完成后,您应该有一个名为 `uk_price_paid 的空表。

  4. 创建一个新查询并粘贴以下查询

    INSERT INTO uk_price_paid
    WITH
    splitByChar(' ', postcode) AS p
    SELECT
    toUInt32(price_string) AS price,
    parseDateTimeBestEffortUS(time) AS date,
    p[1] AS postcode1,
    p[2] AS postcode2,
    transform(a, ['T', 'S', 'D', 'F', 'O'], ['terraced', 'semi-detached', 'detached', 'flat', 'other']) AS type,
    b = 'Y' AS is_new,
    transform(c, ['F', 'L', 'U'], ['freehold', 'leasehold', 'unknown']) AS duration,
    addr1,
    addr2,
    street,
    locality,
    town,
    district,
    county
    FROM url(
    'http://prod.publicdata.landregistry.gov.uk.s3-website-eu-west-1.amazonaws.com/pp-complete.csv',
    'CSV',
    'uuid_string String,
    price_string String,
    time String,
    postcode String,
    a String,
    b String,
    c String,
    addr1 String,
    addr2 String,
    street String,
    locality String,
    town String,
    district String,
    county String,
    d String,
    e String'
    ) SETTINGS max_http_get_redirects=10;

此查询从 gov.uk 网站抓取数据集。 此文件约为 4GB,因此此查询将需要几分钟才能完成。 一旦 ClickHouse 处理完查询,您应该在 uk_price_paid 表中拥有整个数据集。

查询创建

让我们使用自然语言创建一个查询。

  1. 选择 uk_price_paid 表,然后单击 创建查询

  2. 单击 生成 SQL。 您可能会被要求接受您的查询已发送到 Chat-GPT。 您必须选择 我同意 才能继续。

  3. 现在您可以使用此提示输入自然语言查询,并让 ChatGPT 将其转换为 SQL 查询。 在此示例中,我们将输入

    显示我按年份划分的所有 uk_price_paid 交易的总价和总数。

  4. 控制台将生成我们正在查找的查询,并在新选项卡中显示它。 在我们的示例中,GenAI 创建了以下查询

    -- Show me the total price and total number of all uk_price_paid transactions by year.
    SELECT year(date), sum(price) as total_price, Count(*) as total_transactions
    FROM uk_price_paid
    GROUP BY year(date)
  5. 验证查询是否正确后,单击 运行 以执行它。

调试

现在,让我们测试 GenAI 的查询调试功能。

  1. 单击 + 图标创建一个新查询,并粘贴以下代码

    -- Show me the total price and total number of all uk_price_paid transactions by year.
    SELECT year(date), sum(pricee) as total_price, Count(*) as total_transactions
    FROM uk_price_paid
    GROUP BY year(date)
  2. 单击 运行。 查询失败,因为我们试图从 pricee 而不是 price 获取值。

  3. 单击 修复查询

  4. GenAI 将尝试修复查询。 在这种情况下,它将 pricee 更改为 price。 它还意识到 toYear 是在这种情况下使用的更好函数。

  5. 选择 应用 以将建议的更改添加到您的查询,然后单击 运行

请记住,GenAI 是一项实验性功能。 对任何数据集运行 GenAI 生成的查询时,请谨慎使用。

高级查询功能

搜索查询结果

执行查询后,您可以使用结果窗格中的搜索输入快速搜索返回的结果集。 此功能有助于预览附加 WHERE 子句的结果,或者只是检查以确保特定数据包含在结果集中。 将值输入到搜索输入后,结果窗格将更新并返回包含与输入值匹配的条目的记录。 在此示例中,我们将在 hackernews 表中查找所有 breakfast 实例,以查找包含 ClickHouse 的评论(不区分大小写)

Search Hacker News Data

注意:将返回与输入值匹配的任何字段。 例如,上面屏幕截图中的第三条记录在 by 字段中与“breakfast”不匹配,但 text 字段匹配

Match in body

调整分页设置

默认情况下,查询结果窗格将在单个页面上显示每个结果记录。 对于较大的结果集,最好对结果进行分页以方便查看。 这可以使用结果窗格右下角的分页选择器来完成: 分页选项

选择页面大小将立即将分页应用于结果集,导航选项将出现在结果窗格页脚的中间

Pagination navigation

导出查询结果数据

查询结果集可以直接从 SQL 控制台轻松导出为 CSV 格式。 为此,请打开结果窗格工具栏右侧的 ••• 菜单,然后选择“下载为 CSV”。

Download as CSV

可视化查询数据

某些数据以图表形式更容易解释。 您只需点击几下即可直接从 SQL 控制台从查询结果数据快速创建可视化效果。 例如,我们将使用一个查询来计算纽约市出租车行程的每周统计信息

select
toStartOfWeek(pickup_datetime) as week,
sum(total_amount) as fare_total,
sum(trip_distance) as distance_total,
count(*) as trip_total
from
nyc_taxi
group by
1
order by
1 asc

Tabular query results

如果没有可视化,这些结果很难解释。 让我们将它们变成图表。

创建图表

要开始构建可视化效果,请从查询结果窗格工具栏中选择“图表”选项。 将出现图表配置窗格

Switch from query to chart

我们将从创建一个简单的条形图开始,按 week 跟踪 trip_total。 为了实现这一点,我们将 week 字段拖到 x 轴,并将 trip_total 字段拖到 y 轴

Trip total by week

大多数图表类型都支持数字轴上的多个字段。 为了演示,我们将 fare_total 字段拖到 y 轴上

Bar chart

自定义图表

SQL 控制台支持十种图表类型,可以从图表配置窗格中的图表类型选择器中选择。 例如,我们可以轻松地将之前的图表类型从条形图更改为面积图

Change from Bar chart to Area

图表标题与提供数据的查询的名称相匹配。 更新查询的名称也会导致图表标题也更新

Update query name

还可以在图表配置窗格的“高级”部分中调整许多更高级的图表特征。 首先,我们将调整以下设置

  • 副标题
  • 轴标题
  • x 轴的标签方向

我们的图表将相应更新

Update subtitle etc.

在某些情况下,可能需要独立调整每个字段的轴比例。 这也可以在图表配置窗格的“高级”部分中完成,方法是为轴范围指定最小值和最大值。 例如,上面的图表看起来不错,但为了演示我们的 trip_totalfare_total 字段之间的相关性,轴范围需要进行一些调整

Adjust axis scale