0

我有一个保存在数据集(project.dataset_x.sp_test)中的过程,并且该过程具有在过程的同一数据集中创建表的语句(project.dataset_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

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 上创建脚本以动态更改数据集的最佳方法是哪种?

4

1 回答 1

2

尝试以下操作:

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');

使用上述您不必创建多个程序但仍然可以达到所需的结果

于 2022-01-13T01:56:53.483 回答