BigQuery 分析概览
本文档介绍了 BigQuery 如何处理查询,并简要介绍了几种可用于数据分析的功能。
BigQuery 经过优化,可以对大型数据集运行分析查询,包括在数秒内处理 TB 级数据,在几分钟内处理 PB 级数据。了解其功能及其处理查询的方式可以帮助您最大程度实现数据分析投资的价值。
如需直接在 Google Cloud 控制台中浏览 BigQuery 的数据分析功能,请点击浏览。
分析工作流
BigQuery 支持多种数据分析工作流:
即席分析。BigQuery 使用 GoogleSQL(BigQuery 中的 SQL 方言)来支持临时分析。您可以在 Google Cloud 控制台中或通过与 BigQuery 集成的第三方工具运行查询。
地理空间分析。BigQuery 使用地理数据类型和 GoogleSQL 地理函数来分析和直观呈现地理空间数据。如需了解这些数据类型和函数,请参阅地理空间分析简介。
机器学习。借助 BigQuery ML,您可以使用 GoogleSQL 查询在 BigQuery 中创建和执行机器学习模型。
商业智能。BigQuery BI Engine 是一项高速内存中分析服务,可让您构建丰富的交互式信息中心和报告,而不会影响性能、可扩缩性、安全性或数据新鲜度。
查询
BigQuery 中的主要分析单元是 SQL 查询。BigQuery 有两种 SQL 方言:GoogleSQL 和旧版 SQL。GoogleSQL 是首选方言。它支持 SQL:2011,并且包含支持地理空间分析或机器学习的扩展程序。
以下部分介绍了 BigQuery 如何支持和运行数据查询。
数据源
借助 BigQuery,您可以查询以下类型的数据源:
存储在 BigQuery 中的数据。您可以将数据加载到 BigQuery 中进行分析。您还可以使用数据操纵语言 (DML) 语句或通过将查询结果写入表中来生成数据。您可以查询存储在单区域或多区域位置中的数据,但无法对多个位置运行查询,即使一个是单区域位置,另一个是包含该单区域位置的多区域位置也是如此。如需了解详情,请参阅位置、预留和作业。
外部数据。您可以查询各种外部数据源,例如其他 Google Cloud 存储服务(如 Cloud Storage)或数据库服务(如 Spanner 或 Cloud SQL)。如需了解如何设置与外部数据源的连接,请参阅外部数据源简介
多云端数据。您可以查询存储在其他公有云(如 AWS 或 Azure)中的数据。如需了解如何设置与 Amazon S3 或 Azure blob 存储空间的连接,请阅读 BigQuery Omni 简介。
公共数据集。如果您没有自己的数据,则可以分析公共数据集市场中提供的任何数据集。
查询作业
作业是 BigQuery 代表您执行的操作,包括加载数据、导出数据、查询数据或复制数据。
当您使用 Google Cloud 控制台或 bq 工具执行其中一个作业时,系统会自动创建、安排并运行作业资源。您还可以通过编程方式创建加载作业、导出作业、查询作业或复制作业。以编程方式创建作业后,BigQuery 会为您安排并运行此作业。
由于作业可能需要很长时间才能完成,它们会异步运行,其状态可以轮询。用时较短的操作(例如列出资源或获取元数据)不由作业资源管理。
查询类型
您可以使用以下查询作业类型之一来查询 BigQuery 数据:
- 交互式查询作业。默认情况下,BigQuery 会尽快运行交互式(按需)查询作业。
持续查询作业(预览版)。借助这些作业,查询会持续运行,让您能够实时分析 BigQuery 中的传入数据,然后将结果写入 BigQuery 表,或将结果导出到 Bigtable 或 Pub/Sub。您可以使用此功能执行对时间敏感的任务,例如创建数据洞见并立即采取行动、应用实时机器学习 (ML) 推理,以及构建事件驱动型数据流水线。
批量查询作业。使用这些作业时,BigQuery 会代表您将每个批量查询排队,然后在有空闲资源时启动查询,通常在几分钟之内。
您可以使用以下方法运行查询作业:
- 在 Google Cloud 控制台中编写和运行查询。
- 在 bq 命令行工具中运行
bq query
命令。 - 以编程方式调用 BigQuery REST API 中的
jobs.query
或jobs.insert
方法。 - 使用 BigQuery 客户端库。
保存的查询和共享的查询
保存的查询可以不公开(仅对您可见)、在项目级层共享(对具体主账号可见)或公开(任何人都可以查看)。如需了解详情,请参阅使用已保存的查询。
BigQuery 处理查询的方式
BigQuery 运行查询时会发生多个进程:
执行树。在运行查询时,BigQuery 会生成执行树,以将查询分为几个阶段。这些阶段包含可以并行运行的步骤。
Shuffle 层。各阶段使用快速分布式 Shuffle 层相互通信,Shuffle 层用于存储由阶段工作器生成的中间数据。Shuffle 层尽可能利用 PB 级网络和 RAM 等技术来将数据快速移动到工作器节点。
查询计划。当 BigQuery 拥有运行查询所需的所有信息时,会生成查询计划。您可以在 Google Cloud 控制台中查看此方案,并使用它来排查或优化查询性能。
查询监控和动态计划。除了执行查询计划本身工作的工作器之外,其他工作器还会监控并指导整个系统的整体工作进度。随着查询的进行,BigQuery 可能会动态调整查询计划,以适应不同阶段的结果。
查询结果。查询完成后,BigQuery 会将结果写入永久性存储空间并返回给用户。这种设计可让 BigQuery 在下次运行查询时提供缓存的结果。
查询并发和性能
由于 BigQuery 环境的共享特性,或者由于 BigQuery 在查询运行时动态调整查询计划,因此对相同数据反复运行的查询的性能可能会有差异。对于有许多查询并发运行的典型忙碌系统,BigQuery 会使用多个进程来消除查询性能差异:
BigQuery 并行运行许多查询,因此查询很少需要排队。
在忙碌的系统中,排队是导致性能不稳定的主要原因,因为无法确定查询的排队时长。某个查询的排队时长可能更多地取决于正在运行的其他查询或队列中的其他查询,而不是该查询本身的质量。
查询开始和完成时,BigQuery 会在新查询和正在运行的查询之间公平地重新分配资源。此过程可确保查询性能不取决于查询提交顺序,而是取决于在指定时间运行的查询数量。
查询优化
查询完成后,您可以在 Google Cloud 控制台中查看查询计划。还可使用 INFORMATION_SCHEMA.JOBS*
视图或 jobs.get
REST API 方法请求执行详细信息。
查询计划包括有关查询阶段和步骤的详细信息。这些详细信息可帮助您确定改善查询性能的方法。例如,如果您发现某个阶段写入的输出比其他阶段多得多,则可能意味着您需要在查询的早期阶段进行过滤。
如需详细了解查询计划和查询优化,请参阅以下资源:
查询监控
监控和日志记录对于在云端运行可靠应用至关重要。BigQuery 工作负载也不例外,尤其是在工作负载量大或工作负载是任务关键型工作负载的情况下。BigQuery 提供各种指标、日志和元数据视图,可帮助您监控 BigQuery 使用情况。
如需了解详情,请参阅以下资源:
- 如需了解 BigQuery 中的监控选项,请参阅 BigQuery 监控简介。
- 如需了解审核日志以及如何分析查询行为,请参阅 BigQuery 审核日志。
查询价格
BigQuery 为分析提供了两种价格模式:
如需了解这两种价格模式,并详细了解如何进行基于容量的价格的预留,请参阅预留简介。
配额和查询费用控制
BigQuery 会对正在运行的查询强制执行项目级层配额。如需了解查询配额,请参阅配额和限制。
BigQuery 提供了多种查询费用控制选项,包括自定义配额和结算提醒。如需了解详情,请参阅创建自定义费用控制条件。
数据分析功能
BigQuery 支持描述性分析和预测分析。如需直接查询数据以回答一些统计问题,您可以使用 Google Cloud 控制台。如需直观地探索数据(例如趋势和异常值),您可以使用与 BigQuery 集成的 Tableau 或 Looker 等工具。
BigQuery Studio
BigQuery Studio 可帮助您使用以下功能在 BigQuery 中发现、分析数据并对其运行推理:
- 强大的 SQL 编辑器,可提供代码补全、查询验证和估计处理的字节数等功能。
- 使用 Colab Enterprise 构建的嵌入式 Python 笔记本。Notebooks 提供一键式 Python 开发运行时以及对 BigQuery DataFrame 的内置支持。
- PySpark 编辑器,可让您为 Apache Spark 创建 Python 存储过程。
- 笔记本和已保存的查询等代码资源的资源管理和版本历史记录,基于 Dataform 构建。
- SQL 编辑器和笔记本中的辅助式代码开发,基于 Gemini 生成式 AI(预览版)构建。
- Dataplex 功能,用于数据发现,以及数据分析和数据质量扫描。
- 能够按用户或项目查看作业历史记录。
- 能够通过连接到 Looker 和 Google 表格等其他工具分析已保存的查询结果,以及导出已保存的查询结果以在其他应用中使用。
如需使用 BigQuery Studio,请按照启用 BigQuery Studio 进行资产管理中的说明操作。此过程会启用以下 API:
- Compute Engine API:在项目中执行 Python 函数时需要。
- Dataform API:存储代码资产(例如笔记本文件)时需要。
- Vertex AI API:在 BigQuery 中执行 Colab Enterprise Python 笔记本时需要。
BigQuery ML
借助 BigQuery ML,您可以在 BigQuery 中使用 SQL 来执行机器学习 (ML) 和预测分析。如需了解详情,请参阅 BigQuery ML 简介。
分析工具集成
除了在 BigQuery 中运行查询之外,您还可以使用与 BigQuery 集成的各种分析工具和商业智能工具来分析数据,例如:
Looker。Looker 是一个提供商业智能、数据应用和嵌入式分析的企业级平台。Looker 平台可与许多数据存储区(包括 BigQuery)搭配使用。如需了解如何将 Looker 连接到 BigQuery,请参阅使用 Looker。
Looker Studio。运行查询后,您可以直接从 Google Cloud 控制台中的 BigQuery 启动 Looker 数据洞察。然后,您可以在 Looker 数据洞察中创建可视化效果并探索查询返回的数据。如需了解 Looker 数据洞察,请参阅 Looker 数据洞察概览。
关联工作表。您还可以直接从控制台中的 BigQuery 启动关联工作表。关联工作表会根据您的请求或按照定义的时间表,代表您运行 BigQuery 查询。相应查询结果会保存在您的电子表格中,以用于分析和共享。如需了解关联工作表,请参阅使用关联工作表。
第三方工具集成
多种第三方分析工具可与 BigQuery 配合使用。例如,您可以将 Tableau 连接到 BigQuery 数据,并使用其直观呈现工具分析和共享您的分析。如需详细了解使用第三方工具时的注意事项,请参阅第三方工具集成。
ODBC 和 JDBC 驱动程序可供使用,并可用于将应用与 BigQuery 集成。这些驱动程序旨在帮助用户将 BigQuery 的强大功能与现有的工具和基础架构搭配使用。如需了解最新版本和已知问题,请参阅适用于 BigQuery 的 ODBC 和 JDBC 驱动程序。
诸如 pandas-gbq
之类的 Pandas 库可让您与 Jupyter 笔记本中的 BigQuery 数据进行交互。如需了解此库及其与使用 BigQuery Python 客户端库的比较,请参阅与 pandas-gbq
的比较。
您还可以将 BigQuery 与其他笔记本和分析工具一起使用。如需了解详情,请参阅程序化分析工具。
如需查看 BigQuery 分析和更广泛的技术合作伙伴的完整列表,请参阅 BigQuery 产品页面上的合作伙伴列表。
后续步骤
- 如需简要了解支持的 SQL 语句,请参阅 BigQuery 中的 SQL 简介。
- 如需了解在 BigQuery 中查询数据时使用的 GoogleSQL 语法,请参阅 GoogleSQL 中的查询语法。
- 如需了解如何读取查询说明计划,请参阅使用查询计划说明。
- 要了解如何安排定期查询,请参阅安排查询。