在BigQuery上动态更改数据集



我有一个过程保存在数据集中(project.dataset_x.sp_test(,并且此过程有在过程的同一数据集中创建表的语句(project.ddataset_x.d_test(。

目标是动态地将所有数据集dataset_x更改为dataset_y

示例:

更改

Create or replace procedure `project.dataset_x.sp_test`() 
BEGIN
Create or replace table `project.dataset_x.d_test` AS
Select 
1 a id,
'aaaa' as name
FROM `project.dataset_x.d_init`
END

TO

Create or replace procedure `project.dataset_y.sp_test`() 
BEGIN
Create or replace table `project.dataset_y.d_test` AS
Select 
1 a id,
'aaaa' as name
FROM `project.dataset_y.d_init`
END

在Bigquery上创建scrip以动态更改数据集的最佳方法是什么?

尝试以下操作:

CREATE OR REPLACE PROCEDURE project.independent_dataset.sp_test (dataset STRING)
BEGIN 
EXECUTE IMMEDIATE 
format("""
CREATE OR REPLACE TABLE `project.%s.d_test` 
AS 
SELECT 1 AS id, 'aaaa' AS name FROM `elzagales.%s.d_init`"""
, dataset, dataset);
END;
CALL project.independent_dataset.sp_test('dataset_y');

使用上面的你不必创建多个程序,但仍然可以实现的期望结果

最新更新