我有一个过程保存在数据集中(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');
使用上面的你不必创建多个程序,但仍然可以实现的期望结果