跳至主要内容

SQL 控制台

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

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

从控制平面打开 SQL 控制台

可以直接从您的服务概览屏幕打开 SQL 控制台。只需点击“连接”按钮并选择“打开 SQL 控制台”。

Open the SQL console from a service

SQL 控制台将在新标签页中打开,并提示您输入服务凭据

Enter credentials

输入凭据后,点击“连接”,SQL 控制台将尝试连接和进行身份验证。如果成功,您现在应该能够看到 SQL 控制台界面

Authentication success

直接加载 SQL 控制台

也可以通过导航到 https://console.clickhouse.cloud. 直接加载 SQL 控制台。登录到您的 ClickHouse Cloud 帐户后,系统将显示服务列表。选择一个服务并在服务身份验证屏幕上输入您的服务凭据

Select a service

注意

如果您的组织中只有一个服务,则 SQL 控制台将立即将您引导至服务身份验证屏幕

使用服务切换器

您可以直接从 SQL 控制台中轻松地在服务之间切换。只需打开控制台右上角的服务切换器并选择不同的服务

Switch services

浏览表格

查看表列表和架构信息

您可以在左侧边栏区域找到 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 是一项实验性功能。在针对任何数据集运行 GenAI 生成的查询时,请谨慎操作。

调试

现在,让我们测试 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子句的结果,或简单地检查以确保结果集中包含特定数据。在搜索输入中输入值后,结果窗格将更新并返回包含与输入值匹配的条目的记录。在此示例中,我们将查找 ClickHouse 存储库的github_events表中所有alexey-milovidov的实例

Search GitHub data

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

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