Google big query - 怎么创建临时表/create temp table
Creating a temporary table
The following example creates a temporary table named Example
and inserts values into it.
CREATE TEMP TABLE Example
(
x INT64,
y STRING
);
INSERT INTO Example
VALUES (5, 'foo');
INSERT INTO Example
VALUES (6, 'bar');
SELECT *
FROM Example;
This script returns the following output:
+-----+---+-----+
| Row | x | y |
+-----+---|-----+
| 1 | 5 | foo |
| 2 | 6 | bar |
+-----+---|-----+
CREATE TABLE LIKE
statement
Creates a new table with all of the same metadata of another table.
Syntax
CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ]
table_name
LIKE [[project_name.]dataset_name.]source_table_name
...
[OPTIONS(table_option_list)]
Details
This statement is a variant of the CREATE TABLE
statement and has the same limitations. Other than the use of the LIKE
clause in place of a column list, the syntax is identical to the CREATE TABLE
syntax.
The CREATE TABLE LIKE
statement copies only the metadata of the source table. You can use the as query_statement
clause to include data into the new table.
The new table has no relationship to the source table after creation; thus modifications to the source table will not propagate to the new table.
By default, the new table inherits partitioning, clustering, and options metadata from the source table. You can customize metadata in the new table by using the optional clauses in the SQL statement. For example, if you want to specify a different set of options for the new table, then include the OPTIONS
clause with a list of options and values. This behavior matches that of ALTER TABLE SET OPTIONS
.
Required permissions
This statement requires the following IAM permissions:
Permission | Resource |
---|---|
bigquery.tables.create |
The dataset where you create the table. |
bigquery.tables.get |
The source table. |
In addition, the OR REPLACE
clause requires bigquery.tables.update
and bigquery.tables.updateData
permissions.
If the OPTIONS
clause includes any expiration options, then bigquery.tables.delete
permission is also required.
Examples
Example 1
The following example creates a new table named newtable
in mydataset
with the same metadata as sourcetable
:
CREATE TABLE mydataset.newtable
LIKE mydataset.sourcetable
Example 2
The following example creates a new table named newtable
in mydataset
with the same metadata as sourcetable
and the data from the SELECT
statement:
CREATE TABLE mydataset.newtable
LIKE mydataset.sourcetable
AS SELECT * FROM mydataset.myothertable
CREATE TABLE COPY
statement
Creates a table that has the same metadata and data as another table. The source table can be a table, a table clone, or a table snapshot.
Syntax
CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] table_name
COPY source_table_name
...
[OPTIONS(table_option_list)]
Details
This statement is a variant of the CREATE TABLE
statement and has the same limitations. Other than the use of the COPY
clause in place of a column list, the syntax is identical to the CREATE TABLE
syntax.
The CREATE TABLE COPY
statement copies both the metadata and data from the source table.
The new table inherits partitioning and clustering from the source table. By default, the table options metadata from the source table are also inherited, but you can override table options by using the OPTIONS
clause. The behavior is equivalent to running ALTER TABLE SET OPTIONS
after the table is copied.
The new table has no relationship to the source table after creation; modifications to the source table are not propagated to the new table.
Required permissions
This statement requires the following IAM permissions:
Permission | Resource |
---|---|
bigquery.tables.create |
The dataset where you create the table snapshot. |
bigquery.tables.get |
The source table. |
bigquery.tables.getData |
The source table. |
In addition, the OR REPLACE
clause requires bigquery.tables.update
and bigquery.tables.updateData
permissions.
If the OPTIONS
clause includes any expiration options, then bigquery.tables.delete
permission is also required.
CREATE SNAPSHOT TABLE
statement
Creates a table snapshot based on a source table. The source table can be a table, a table clone, or a table snapshot.
Syntax
CREATE SNAPSHOT TABLE [ IF NOT EXISTS ] table_snapshot_name
CLONE source_table_name
[FOR SYSTEM_TIME AS OF time_expression]
[OPTIONS(snapshot_option_list)]
Arguments
IF NOT EXISTS
: If a table snapshot or other table resource exists with the same name, theCREATE
statement has no effect.table_snapshot_name
: The name of the table snapshot that you want to create. The table snapshot name must be unique per dataset. See Table path syntax.source_table_name
: The name of the table that you want to snapshot or the table snapshot that you want to copy. See Table path syntax.If the source table is a standard table, then BigQuery creates a table snapshot of the source table. If the source table is a table snapshot, then BigQuery creates a copy of the table snapshot.
FOR SYSTEM_TIME AS OF
: Lets you select the version of the table that was current at the time specified bytimestamp_expression
. It can only be used when creating a snapshot of a table; it can't be used when making a copy of a table snapshot.snapshot_option_list
: Additional table snapshot creation options such as a label and an expiration time.
Details
CREATE SNAPSHOT TABLE
statements must comply with the following rules:
- Only one
CREATE
statement is allowed. - The source table must be one of the following:
- A table
- A table clone
- A table snapshot
- The
FOR SYSTEM_TIME AS OF
clause can only be used when creating a snapshot of a table or table clone; it can't be used when making a copy of a table snapshot.
snapshot_option_list
The option list lets you set table snapshot options such as a label and an expiration time. You can include multiple options using a comma-separated list.
Specify a table snapshot option list in the following format:
NAME=VALUE, ...
NAME
and VALUE
must be one of the following combinations:
NAME |
VALUE |
Details |
---|---|---|
expiration_timestamp |
TIMESTAMP |
Example: This property is equivalent to the |
friendly_name |
|
Example: This property is equivalent to the |
description |
|
Example: This property is equivalent to the |
labels |
|
Example: This property is equivalent to the |
VALUE
is a constant expression that contains only literals, query parameters, and scalar functions.
The constant expression cannot contain:
- A reference to a table
- Subqueries or SQL statements such as
SELECT
,CREATE
, andUPDATE
- User-defined functions, aggregate functions, or analytic functions
- The following scalar functions:
ARRAY_TO_STRING
REPLACE
REGEXP_REPLACE
RAND
FORMAT
LPAD
RPAD
REPEAT
SESSION_USER
GENERATE_ARRAY
GENERATE_DATE_ARRAY
If VALUE
evaluates to NULL
, the corresponding option NAME
in the CREATE SNAPSHOT TABLE
statement is ignored.
Required permissions
This statement requires the following IAM permissions:
Permission | Resource |
---|---|
bigquery.tables.create |
The dataset where you create the table snapshot. |
bigquery.tables.createSnapshot |
The source table. |
bigquery.tables.get |
The source table. |
bigquery.tables.getData |
The source table. |
Examples
Create a table snapshot: fail if it already exists
The following example creates a table snapshot of the table myproject.mydataset.mytable
. The table snapshot is created in the dataset mydataset
and is named mytablesnapshot
:
CREATE SNAPSHOT TABLE `myproject.mydataset.mytablesnapshot`
CLONE `myproject.mydataset.mytable`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
friendly_name="my_table_snapshot",
description="A table snapshot that expires in 2 days",
labels=[("org_unit", "development")]
)
If the table snapshot name already exists in the dataset, then the following error is returned:
Already Exists: myproject.mydataset.mytablesnapshot
The table snapshot option list specifies the following:
- Expiration time: 48 hours after the time the table snapshot is created
- Friendly name:
my_table_snapshot
- Description:
A table snapshot that expires in 2 days
- Label:
org_unit = development
Create a table snapshot: ignore if it already exists
The following example creates a table snapshot of the table myproject.mydataset.mytable
. The table snapshot is created in the dataset mydataset
and is named mytablesnapshot
:
CREATE SNAPSHOT TABLE IF NOT EXISTS `myproject.mydataset.mytablesnapshot`
CLONE `myproject.mydataset.mytable`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
friendly_name="my_table_snapshot",
description="A table snapshot that expires in 2 days"
labels=[("org_unit", "development")]
)
The table snapshot option list specifies the following:
- Expiration time: 48 hours after the time the table snapshot is created
- Friendly name:
my_table_snapshot
- Description:
A table snapshot that expires in 2 days
- Label:
org_unit = development
If the table snapshot name already exists in the dataset, then no action is taken, and no error is returned.
For information about restoring table snapshots, see CREATE TABLE CLONE
.
For information about removing table snapshots, see DROP SNAPSHOT TABLE
.
CREATE TABLE CLONE
statement
Creates a table clone based on a source table. The source table can be a table, a table clone, or a table snapshot.
Syntax
CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ]
destination_table_name
CLONE source_table_name [FOR SYSTEM_TIME AS OF time_expression]
...
[OPTIONS(table_option_list)]
Details
Other than the use of the CLONE
clause in place of a column list, the syntax is identical to the CREATE TABLE
syntax.
Arguments
OR REPLACE
: Replaces a table with the same name if it exists. Cannot appear withIF NOT EXISTS
.IF NOT EXISTS
: If the specified destination table name already exists, theCREATE
statement has no effect. Cannot appear withOR REPLACE
.
destination_table_name
is the name of the table that you want to create. The table name must be unique per dataset. The table name can contain the following:
- Up to 1,024 characters
- Letters (upper or lower case), numbers, and underscores
OPTIONS(table_option_list)
lets you specify additional table creation options such as a label and an expiration time.
source_table_name
is the name of the source table.
CREATE TABLE CLONE
statements must comply with the following rules:
- Only one
CREATE
statement is allowed. - The table that is being cloned must be a table, a table clone, or a table snapshot.
OPTIONS
CREATE TABLE CLONE
options are the same as CREATE TABLE
options.
Required permissions
This statement requires the following IAM permissions:
Permission | Resource |
---|---|
bigquery.tables.create |
The dataset where you create the table clone. |
bigquery.tables.get |
The source table. |
bigquery.tables.getData |
The source table. |
bigquery.tables.restoreSnapshot |
The source table (required only if the source table is a table snapshot). |
In addition, the OR REPLACE
clause requires bigquery.tables.update
and bigquery.tables.updateData
permissions.
If the OPTIONS
clause includes any expiration options, then bigquery.tables.delete
permission is also required.
Examples
Restore a table snapshot: fail if destination table already exists
The following example creates the table myproject.mydataset.mytable
from the table snapshot myproject.mydataset.mytablesnapshot
:
CREATE TABLE `myproject.mydataset.mytable`
CLONE `myproject.mydataset.mytablesnapshot`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 365 DAY),
friendly_name="my_table",
description="A table that expires in 1 year",
labels=[("org_unit", "development")]
)
If the table name exists in the dataset, then the following error is returned:
Already Exists: myproject.mydataset.mytable.
The table option list specifies the following:
- Expiration time: 365 days after the time that the table is created
- Friendly name:
my_table
- Description:
A table that expires in 1 year
- Label:
org_unit = development
Create a clone of a table: ignore if the destination table already exists
The following example creates the table clone myproject.mydataset.mytableclone
based on the table myproject.mydataset.mytable
:
CREATE TABLE IF NOT EXISTS `myproject.mydataset.mytableclone`
CLONE `myproject.mydataset.mytable`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 365 DAY),
friendly_name="my_table",
description="A table that expires in 1 year",
labels=[("org_unit", "development")]
)
The table option list specifies the following:
- Expiration time: 365 days after the time the table is created
- Friendly name:
my_table
- Description:
A table that expires in 1 year
- Label:
org_unit = development
If the table name exists in the dataset, then no action is taken, and no error is returned.
For information about creating a copy of a table, see CREATE TABLE COPY
.
For information about creating a snapshot of a table, see CREATE SNAPSHOT TABLE
.
CREATE VIEW
statement
Creates a new view.
Syntax
CREATE [ OR REPLACE ] VIEW [ IF NOT EXISTS ] view_name
[(view_column_name_list)]
[OPTIONS(view_option_list)]
AS query_expression
Arguments
OR REPLACE
: Replaces any view with the same name if it exists. Cannot appear withIF NOT EXISTS
.IF NOT EXISTS
: If a view or other table resource exists with the same name, theCREATE
statement has no effect. Cannot appear withOR REPLACE
.view_name
: The name of the view you're creating. See Table path syntax.view_column_name_list
: Lets you explicitly specify the column names of the view, which may be aliases to the column names in the underlying SQL query.view_option_list
: Additional view creation options such as a label and an expiration time.query_expression
: The Google Standard SQL query expression used to define the view.
Details
CREATE VIEW
statements must comply with the following rules:
- Only one
CREATE
statement is allowed.
view_column_name_list
The view's column name list is optional. The names must be unique but do not have to be the same as the column names of the underlying SQL query. For example, if your view is created with the following statement:
CREATE VIEW mydataset.age_groups(age, count) AS SELECT age, COUNT(*)
FROM mydataset.people
group by age;
Then you can query it with:
SELECT age, count from mydataset.age_groups;
The number of columns in the column name list must match the number of columns in the underlying SQL query. If the columns in the table of the underlying SQL query is added or dropped, the view becomes invalid and must be recreated. For example, if the age
column is dropped from the mydataset.people
table, then the view created in the previous example becomes invalid.
view_option_list
The option list allows you to set view options such as a label and an expiration time. You can include multiple options using a comma-separated list.
Specify a view option list in the following format:
NAME=VALUE, ...
NAME
and VALUE
must be one of the following combinations:
NAME |
VALUE |
Details |
---|---|---|
expiration_timestamp |
TIMESTAMP |
Example: This property is equivalent to the expirationTime table resource property. |
friendly_name |
|
Example: This property is equivalent to the friendlyName table resource property. |
description |
|
Example: This property is equivalent to the description table resource property. |
labels |
|
Example: This property is equivalent to the labels table resource property. |
VALUE
is a constant expression containing only literals, query parameters, and scalar functions.
The constant expression cannot contain:
- A reference to a table
- Subqueries or SQL statements such as
SELECT
,CREATE
, orUPDATE
- User-defined functions, aggregate functions, or analytic functions
- The following scalar functions:
ARRAY_TO_STRING
REPLACE
REGEXP_REPLACE
RAND
FORMAT
LPAD
RPAD
REPEAT
SESSION_USER
GENERATE_ARRAY
GENERATE_DATE_ARRAY
If VALUE
evaluates to NULL
, the corresponding option NAME
in the CREATE VIEW
statement is ignored.
Default project in view body
If the view is created in the same project used to run the CREATE VIEW
statement, the view body query_expression
can reference entities without specifying the project; the default project is the project which owns the view. Consider the sample query below.
CREATE VIEW myProject.myDataset.myView AS SELECT * FROM anotherDataset.myTable;
After running the above CREATE VIEW
query in the project myProject
, you can run the query SELECT * FROM myProject.myDataset.myView
. Regardless of the project you choose to run this SELECT
query, the referenced table anotherDataset.myTable
is always resolved against project myProject
.
If the view is not created in the same project used to run the CREATE VIEW
statement, then all references in the view body query_expression
must be qualified with project IDs. For instance, the preceding sample CREATE VIEW
query is invalid if it runs in a project different from myProject
.
Required permissions
This statement requires the following IAM permissions:
Permission | Resource |
---|---|
bigquery.tables.create |
The dataset where you create the view. |
In addition, the OR REPLACE
clause requires bigquery.tables.update
permission.
If the OPTIONS
clause includes an expiration time, then bigquery.tables.delete
permission is also required.
Examples
Creating a new view
The following example creates a view named newview
in mydataset
:
CREATE VIEW `myproject.mydataset.newview`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
friendly_name="newview",
description="a view that expires in 2 days",
labels=[("org_unit", "development")]
)
AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
If the view name exists in the dataset, the following error is returned:
Already Exists: project_id:dataset.table
The view is defined using the following Google Standard SQL query:
SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
The view option list specifies the:
- Expiration time: 48 hours from the time the view is created
- Friendly name:
newview
- Description:
A view that expires in 2 days
- Label:
org_unit = development
Creating a view only if the view doesn't exist
The following example creates a view named newview
in mydataset
only if no view named newview
exists in mydataset
. If the view name exists in the dataset, no error is returned, and no action is taken.
CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
friendly_name="newview",
description="a view that expires in 2 days",
labels=[("org_unit", "development")]
)
AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
The view is defined using the following Google Standard SQL query:
SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
The view option list specifies the:
- Expiration time: 48 hours from the time the view is created
- Friendly name:
newview
- Description:
A view that expires in 2 days
- Label:
org_unit = development
Creating or replacing a view
The following example creates a view named newview
in mydataset
, and if newview
exists in mydataset
, it is overwritten using the specified query expression.
CREATE OR REPLACE VIEW `myproject.mydataset.newview`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
friendly_name="newview",
description="a view that expires in 2 days",
labels=[("org_unit", "development")]
)
AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
The view is defined using the following Google Standard SQL query:
SELECT column_1, column_2, column_3 FROM
myproject.mydataset.mytable
The view option list specifies the:
- Expiration time: 48 hours from the time the view is created
- Friendly name:
newview
- Description:
A view that expires in 2 days
- Label:
org_unit = development
ref:Data definition language (DDL) statements in Google Standard SQL | BigQuery | Google Cloud
Google big query - 怎么创建临时表/create temp table的更多相关文章
- mysql 创建临时表
创建临时表 create TEMPORARY table SalesSummary( product_name VARCHAR(50) NOT NULL, total_sales DECIMAL( ...
- [转载]mysql创建临时表,将查询结果插入已有表中
今天遇到一个很棘手的问题,想临时存起来一部分数据,然后再读取.我记得学数据库理论课老师说可以创建临时表,不知道mysql有没有这样的功能呢?临时表在内存之中,读取速度应该比视图快一些.然后还需要将查询 ...
- Oracle 临时表空间 temp表空间切换
一.TEMP表空间 临时表空间主要用途是在数据库进行排序运算.管理索引.访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理.当oracle里需要用到sort的时候,PGA中sort_ar ...
- mysql创建临时表,将查询结果插入已有的表
A.临时表再断开于mysql的连接后系统会自动删除临时表中的数据,但是这只限于用下面语句建立的表:1)定义字段 CREATE TEMPORARY TABLE tmp_table ( nam ...
- MySQL中临时表的基本创建与使用教程(create temporary table )
当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询. ...
- In-Memory:在内存中创建临时表和表变量
在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...
- oracle创建临时表
Oracle临时表可以说是提高数据库处理性能的好方法,在没有必要存储时,只存储在Oracle临时表空间中.希望本文能对大家有所帮助. 1 .前言 目前所有使用 Oracle 作为数据库支撑平台的应用, ...
- Oracle基础--创建临时表空间/表空间/创建用户/授权
总结:创建用户一般分四步: 第一步:创建临时表空间(创建用户之前要创建"临时表空间",若不创建则默认的临时表空间为temp.) SQL> CREATE TEMPORARY T ...
- SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别
原文链接:https://www.cnblogs.com/zhaowei303/articles/4204805.html SQL数据库中数据处理时,有时候需要建立临时表,将查询后的结果集放到临时表中 ...
- sql sever 创建临时表的两种方法
创建临时表 方法一: create table #临时表名( 字段1 约束条件, 字段2 约束条件, .....) ...
随机推荐
- vue api封装 request.js
import axios from 'axios' import { Message, MessageBox } from 'element-ui' import store from '../sto ...
- 基于C++的OpenGL 06 之摄像机
1. 引言 本文基于C++语言,描述OpenGL的摄像机 前置知识可参考: 基于C++的OpenGL 05 之坐标系统 - 当时明月在曾照彩云归 - 博客园 (cnblogs.com) 笔者这里不过多 ...
- PG统计信息和系统表
一.PG统计信息概述 pg的统计信息主要分为两种: 第一类统计信息是是负载指标"统计信息"(Monitoring stats),通过stat collector进程进行实时采集更新 ...
- angular 封装http请求、解决跨域问题
第一部分:封装http请求 1.定义 ResultDataModel export interface ResultDataModel<T> { success: boolean; err ...
- IIS 负载均衡(ARR)
Application Request Route:应用程序请求路由 1.下载安装web平台安装程序 微软官网搜索 "web平台安装程序" 只能找到 "web平台安装程序 ...
- 五子棋 framebuffer版
要在家目录下 makefile 1 main : main.o fun.o input.o fb_draw.o 2 gcc -Wall -o $@ $^ 3 clean : 4 rm -rf *.o ...
- Vscode报错: error:0308010C:digital envelope routines::unsupported错误记录解决
Vscode报错: error:0308010C:digital envelope routines::unsupported错误记录解决 因为安装了新版本的node才报的错误:node版本: v18 ...
- orm中多表查询示例
record = session.query(OrderMain, OrderGoods).join(OrderMain, OrderMain.order_code == OrderGoods.ord ...
- bash编辑功能,在命令行里编辑快捷键
快捷键 描述 ctrl + A 跳到命令行的开头 ctrl + E 跳到命令行的尾巴上 ctrl + U 将光标处以命令行开头的内容清除 ctrl + K 将光标处到命令行尾巴处的内容清除 ctrl ...
- 数据类型之字符串(string)(三)
其他操作 1.len():求序列长度,返回数字 a = 'my name is wang'len(a) 返回 15 空格也占一个位置. 2.+:连接2个字符串 >>> b = 'wh ...