BigQuery 如何将 shell 命令行参数传递给 sql 文件

BigQuery how to pass shell commandline parameters to sql file

提问人:Joe 提问时间:11/10/2023 更新时间:11/18/2023 访问量:17

问:

我正在尝试将 shell 命令行参数传递到我在 BigQuery 中执行的 SQL 文件中。我一直收到此错误,不知道如何解决它:

Unexpected macro at [1:14]

这是我正在执行的 shell 脚本():install.sh

do
    case "${flag}" in
        p) project=${OPTARG};;
        d) dataset=${OPTARG};;
    esac
done
echo $project
echo $dataset


gcloud config set project $project

bq query --flagfile=./test/ddl_table.sql

文件如下:ddl_table.sql

CREATE TABLE $dataset.my_table (
    metric_sk INT64,
    metric_identifier STRING ,
    metric_name STRING ,
    metric_def STRING ,
    metric_type_id INT64 
); 

这是我用来执行 .sh 文件的命令:

./install.sh -p 'my_project' -d 'my_dataset'

这些命令反映参数已正确设置,但 SQL 文件中的引用似乎有问题。第 1 行第 14 列的字符(如错误消息所示)是该字符。因此,BigQuery似乎没有将其识别为参数。我不知道如何解决这个问题。我希望数据集名称由从命令行传入的参数确定。echo$dataset$

shell google-bigquery 参数传递

评论


答:

0赞 Mel 11/18/2023 #1

基于 Google Cloud 的运行参数化查询文档:

参数不能用作标识符、列名、表名或查询的其他部分的替代项。

据我了解,您可以在基本的 SQL 查询中使用参数,例如 SELECT 语句或条件 WHERE 语句,但不能用于创建表。