前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

BigQuery数据集|表(bigtable数据库)

qiguaw 2024-10-24 12:59:06 资源文章 24 ℃ 0 评论

创建数据集

在 bq 命令行工具中使用 bq mk 命令

数据集包含在特定项目中,数据集是用来组织和控制表和视图访问权限的顶级容器。表或视图必须属于数据集,因此需要创建至少一个数据集,才能将数据加载到 BigQuery 中。

  • GoogleSQL

projectname.datasetname 格式来完全限定数据集名称

  • bq 命令行工具

projectname:datasetname 格式来完全限定数据集名称

数据集限制

  • 数据集位置只能在创建时设置。创建数据集后,就无法再更改其位置。
  • 查询中引用的所有表必须存储在位于同一位置的数据集中。
  • 复制表时,包含源表和目标表的数据集必须位于同一位置。
  • 同一个项目中的数据集名称不得重复。

所需权限

如需创建数据集,您需要拥有 bigquery.datasets.create IAM 权限。

以下每个预定义 IAM 角色都包含创建数据集所需的权限:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.user
  • roles/bigquery.admin

命名数据集

  • 不超过 1024 个字符。
  • 字母(大写字母或小写字母)、数字和下划线。
  • 不能包含空格或特殊字符,例如 -&@%

列出数据集

在 bq 命令行工具中使用 bq ls 命令

更新数据集属性

使用 bq 命令行工具的 bq update 命令。

如需更新数据集属性,您需要拥有以下 IAM 权限:

  • bigquery.datasets.update
  • bigquery.datasets.get
  • bigquery.datasets.setIamPolicy

管理数据集

  • 重命名数据集
  • 复制数据集
  • 手动移动数据集
  • 删除数据集

在 bq 命令行工具中使用 bq rm 命令。

如需删除数据集,您需要拥有以下 IAM 权限:

  • bigquery.datasets.delete(可让您删除数据集)
  • bigquery.tables.delete(可让您删除表和视图)

创建表

bq 命令行工具 bq mk 命令手动创建。

如需创建表,您需要拥有以下 IAM 权限:

  • bigquery.tables.create
  • bigquery.tables.updateData
  • bigquery.jobs.create
  DECLARE active_logical_gb_price FLOAT64 DEFAULT 0.02;
  DECLARE long_term_logical_gb_price FLOAT64 DEFAULT 0.01;
  DECLARE active_physical_gb_price FLOAT64 DEFAULT 0.04;
  DECLARE long_term_physical_gb_price FLOAT64 DEFAULT 0.02; 

  WITH
    storage_sizes AS (
      SELECT
        table_schema AS dataset_name,
        SUM(active_logical_bytes) / power(1024, 3) AS active_logical_gb,
        SUM(long_term_logical_bytes) / power(1024, 3) AS long_term_logical_gb,
        SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gb,
        SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gb,
        SUM(total_physical_bytes) / power(1024, 3) AS total_physical_gb,
        SUM(total_logical_bytes) / power(1024, 3) AS total_logical_gb
      FROM
        region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT
      WHERE total_logical_bytes > 0
      AND total_physical_bytes > 0
      GROUP BY 1
    )
  SELECT
    dataset_name,
    active_logical_gb,
    long_term_logical_gb,
    active_physical_gb,
    long_term_physical_gb,
    total_logical_gb / total_physical_gb AS compression_ratio,
    active_logical_gb * active_logical_gb_price AS active_logical_cost,
    long_term_logical_gb * long_term_logical_gb_price AS long_term_logical_cost,
    active_physical_gb * active_physical_gb_price AS active_physical_cost,
    long_term_physical_gb * long_term_physical_gb_price AS long_term_physical_cost,
    ((active_logical_gb * active_logical_gb_price) + (long_term_logical_gb * long_term_logical_gb_price))
    - ((active_physical_gb * active_physical_gb_price) + (long_term_physical_gb * long_term_physical_gb_price)) AS total_cost_difference
  FROM
    storage_sizes
  ORDER BY
    compression_ratio DESC;

获取表

bq 命令行工具的 bq show 命令。

以下预定义的 IAM 角色包含以下权限:

  • bigquery.tables.get
  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

列出数据集中的表

bq 命令行工具的 bq ls 命令。

以下预定义 IAM 角色包含以下权限:

  • bigquery.tables.list
  • bigquery.user
  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

管理表

  • 更新表属性:
    • 到期
    • 时间
    • 说明
    • 架构定义
    • 标签

以下 IAM 权限:

  • bigquery.tables.update
  • bigquery.tables.get

bq 命令行工具的 bq update 命令。

  • 重命名(复制)表
ALTER TABLE mydataset.mytable
RENAME TO mynewtable;
  • 复制表

bq 命令行工具的 bq cp 命令。

以下权限:

  • bigquery.tables.get
  • bigquery.tables.getData
  • bigquery.tables.create

mydataset.mytable 表和 mydataset.mytable2 表复制到 mydataset2.tablecopy 表

bq cp \
mydataset.mytable,mydataset.mytable2 \
mydataset2.tablecopy

mydataset.mytable 表和 mydataset.mytable2 表复制到 myotherdataset.mytable 表并覆盖具有相同名称的目标表, 目标数据集在 myotherproject 项目中, -f 快捷键用于在无提示的情况下覆盖目标表。

bq cp -f \
mydataset.mytable,mydataset.mytable2 \
myotherproject:myotherdataset.mytable

myproject:mydataset.mytable 表和 myproject:mydataset.mytable2 表,并在目标数据集中包含同名表时返回错误, -n 快捷键用于防止覆盖具有相同名称的表。

bq cp -n \
myproject:mydataset.mytable,myproject:mydataset.mytable2 \
myotherproject:myotherdataset.mytable

mydataset.mytable 表和 mydataset.mytable2 表并向具有相同名称的目标表附加数据,目标数据集在 myotherproject 项目中。-a 快捷键用于附加到目标表。

bq cp -a \
mydataset.mytable,mydataset.mytable2 \
myotherproject:myotherdataset.mytable

查看当前配额用量

SELECT
  sum(case  when job_type="QUERY" then 1 else 0 end) as QRY_CNT,
  sum(case  when job_type="LOAD" then 1 else 0 end) as LOAD_CNT,
  sum(case  when job_type="EXTRACT" then 1 else 0 end) as EXT_CNT,
  sum(case  when job_type="COPY" then 1 else 0 end) as CPY_CNT
FROM `region-eu`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE date(creation_time)= CURRENT_DATE()
  • 删除表

bq 命令行工具的 bq rm 命令。

以下 IAM 权限:

    • bigquery.datasets.create
    • bigquery.tables.delete
    • bigquery.tables.get
  • 恢复已删除的表

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表