在控制台中构建查询

您可以使用 Bigtable Studio 查询构建器查询和查看 Bigtable 数据。查询构建器是 Google Cloud 控制台中的一个交互式表单,可让您构建查询、对表运行查询,然后在控制台中查看结果。

借助 Bigtable Studio 查询构建器,您可以使用下拉选择器指定查询子句的组合,而无需编写应用或使用 CLI。当您运行查询时,控制台会调用 Bigtable Data API,后者会返回与您的查询匹配的数据。

本文档介绍了如何使用查询构建器,并提供了有关优化查询的提示。在阅读本页内容之前,您应先熟悉 Bigtable 概览

在查询构建器中运行的查询与发送到表的任何其他查询一样,都受相同的价格和配额限制。

何时使用查询构建器

当您需要执行以下操作时,能够在 Google Cloud 控制台中查询 Bigtable 数据会很有帮助:

  • 快速直观地查看表的架构。
  • 验证是否已成功写入特定数据。
  • 在迁移期间验证数据完整性。
  • 调试可能存在的数据问题。
  • 在代码中使用特定组合子句之前,请先预览其返回的结果。对于 Bigtable 新用户以及不想使用 cbt CLI 的经验丰富的用户,这尤其有用。

准备工作

如需获得使用查询构建器所需的权限,请让您的管理员为您授予项目的 Bigtable Reader (roles/bigtable.reader) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含使用查询构建器所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

使用查询构建器需要以下权限:

  • bigtable.tables.get
  • bigtable.instances.get
  • bigtable.appProfiles.list
  • bigtable.tables.list
  • bigtable.tables.readRows

您也可以使用自定义角色或其他预定义角色来获取这些权限。

如果您没有要查询的表,可以创建一个小型测试表,然后对其运行查询。

打开查询构建器

当您打开查询构建器时,系统会针对实例中按字母顺序排列的第一张表运行并显示默认查询。系统会使用默认应用配置文件运行默认查询,并最多返回 100 行。

  1. 在 Google Cloud 控制台中打开 Bigtable 实例列表。

    打开实例列表

  2. 点击包含要查询的表的实例的名称。

  3. 在导航窗格中,点击 Bigtable Studio。系统会以查询构建器模式打开 Bigtable Studio 页面。Explorer 窗格会提供实例中的表列表,Query results 窗格会显示默认查询的结果。

  4. 可选:收起浏览器窗格,以使查询构建器窗格更大。

数据显示格式

查询构建器结果会显示在表格中。第一个标题和列是行键。其余标题各自代表 Bigtable 表中的一列,表示为以英文冒号分隔的列族和列限定符。例如,标题 cell_plan: data_plan_01gb 表示该列中的值来自 cell_plan 列族中的 data_plan_01gb 列。

下拉菜单

仅返回列的最新值。时间戳默认处于隐藏状态,但您可以点击切换开关将其显示出来。

选择一个表

使用下拉菜单选择要查询的表的 ID。

可选:指定应用配置文件

您可以使用专门为与查询构建器搭配使用而创建的应用配置文件。例如,如果您想使用与主要应用使用的集群不同的集群来隔离查询流量,这会很有帮助。

如需使用其他应用配置文件运行下一个查询,请按以下步骤操作。

  1. 点击添加到查询
  2. 点击更改应用配置文件(默认)。系统随即会显示一个新的下拉菜单。
  3. 使用应用配置文件下拉菜单,从实例的应用配置文件列表中进行选择。

如需详细了解为不同工作负载使用不同的应用配置文件的优势,请参阅应用配置文件简介。如需了解如何创建应用配置文件,请参阅创建和配置应用配置文件

如果您的表位于使用复制功能的实例中,请将应用配置文件配置为从距离您最近的集群读取数据。

向查询添加子句,然后运行该查询

  1. 选择表和应用配置文件后,将子句添加到查询中。 如需详细了解可用的子句,请参阅下一部分。
  2. 添加完所有子句后,点击运行
  3. 查看结果。

查询子句

您可以使用查询构建器向查询添加子句。当您运行查询时,查询构建器会创建并向表发送读取请求。如需详细了解读取请求,请参阅读取

行键、行键范围和行键前缀子句决定了从存储空间中提取的行。行键正则表达式、列和时间范围子句会向生成的读取请求添加过滤条件。在查询构建器中使用的过滤条件与在客户端库中使用过滤条件的方式相同。如需详细了解 Bigtable 过滤器以及使用过滤器对性能的影响,请参阅过滤器使用过滤器

指定行键

如需从表中检索单行,请提供行键值。您可以添加多个行键子句。

  1. 点击添加到查询
  2. 在下拉列表中,选择行键
  3. 输入您要查看值的行键的确切值。

指定行键范围

如需从表格中检索一系列行,请指定起始行键和结束行键。Bigtable 会按行键的字典顺序存储数据。

  1. 点击添加到查询
  2. 在下拉列表中,选择行键范围
  3. 输入完整的起始行键。
  4. 输入完整的结束行键。

指定行键前缀

如需仅检索行键以特定字符组开头的行,请按行键前缀进行过滤。行键前缀是行键的前 N 个字符。根据惯例,前缀和行键的其余部分之间通常会有一个井号、竖线或其他符号。

  1. 点击添加到查询
  2. 在下拉列表中,选择行键前缀
  3. 输入行键前缀。您无需输入任何通配符。

按行键正则表达式过滤

如需仅获取行键值与指定正则表达式匹配的行,请使用行键正则表达式过滤条件。为了获得更好的性能,请先向查询添加行键范围或行键前缀子句,然后再添加行键正则表达式过滤条件。如需有关组合正则表达式的指导,请参阅行键正则表达式

  1. 点击添加到查询
  2. 在下拉列表中,选择行键正则表达式
  3. 输入使用 re2 语法的正则表达式

按列过滤

如需指定要包含在查询中的一列或多列,请添加 columns 子句,为要按其过滤的每列选择列族和列限定符。添加此子句时生成的读取请求包含列族正则表达式过滤条件列范围过滤条件

  1. 点击添加到查询
  2. 在下拉列表中,选择
  3. 点击“列”字段。系统会显示列族列表。
  4. 点击列族 ID。系统会显示列限定符列表。
  5. 点击列限定符。

按时间范围过滤

如需仅检索时间戳在特定范围内的单元格,请添加时间范围子句,该子句使用时间戳范围过滤条件

  1. 点击添加到查询
  2. 在下拉列表中,选择时间范围
  3. 输入开始时间戳。
  4. 输入结束时间戳。

请使用以下任一格式提供时间戳:

  • Unix 时间戳(以微秒为单位),例如 3023483279876000
  • YYYY-MM-DDThh:mm:ss:ss[z]
  • YYYY/MM/DD-hh:mm:ss.sss[z]
  • MM/DD/YYYY
  • YYYY/MM/DD

可选的 T 是一个表示时间的字面量,可选的 z 表示 UTC 时间,而不是当地时间。如需详细了解时间戳格式,请参阅 ISO 8601

指定上限

如需指定返回的行数上限,请添加 limit 子句。

  1. 点击添加到查询
  2. 在下拉列表中,选择限制
  3. 输入一个介于 1 到 1,00 之间的数字。

限制

查询构建器存在以下限制。

  • 每个单元格 1,000 个字符 - Bigtable 每个单元格返回的字符数上限为 1,000 个。如果单元格包含的字符数超过 1,000 个,系统会显示经过截断的结果,并注明未显示的字符数。
  • 最多 100 列 - Bigtable 会返回每行中与查询匹配的前 100 列。列族不会以任何特定顺序存储,但列会在其列族中按字典顺序排序。
  • 最多 1,000 行 - 查询构建器最多会返回与您的查询匹配的前 1,000 行数据。
  • Base64 - Bigtable 会尽最大努力准确显示 Base64 编码的数据,但无法保证结果。如果 Bigtable 无法显示单元格中的数据,则会改为显示单元格值的字节大小。
  • 旧数据 - 您只能检索所查询列中的最新单元格(或版本)。如需详细了解此概念,请参阅 Bigtable 存储模型常规概念

  • 序列化数据 - 存储为协议缓冲区的数据不会在查询结果中正确显示。系统对 JSON 数据的支持更好,但无法保证显示效果正确无误。

  • 人工时间戳 - 如果您的应用在将数据写入表时向单元格的 timestamp 属性分配非时间戳数字,您可以在查询中使用时间范围过滤条件来获取您使用的值的范围(而不是时间戳),前提是您将这些值指定为微秒。如需了解表数据可能使用人工时间戳的原因,请参阅时间戳

后续步骤