我有一个大的查询实例,我想连接到气流。为此,我添加了以下连接变量:
{
"conn_id": "bigquery_default",
"conn_type": "gcp",
"extra": {
"extra__google_cloud_platform__key_path" : "/path-to-credentials.json",
"extra__google_cloud_platform__scope" : "https://www.googleapis.com/auth/bigquery",
"extra__google_cloud_platform__project" : "project-name-here"
}
}
当我尝试使用GCS到BQ操作符时,这会给我一个错误:
HttpError 400 when requesting https://bigquery.googleapis.com/bigquery/v2/projects/project-name-here/jobs?alt=json returned "Required parameter is missing"
.
如果我将范围从https://www.googleapis.com/auth/bigquery
更改为https://www.googleapis.com/auth/bigquery.insertdata
,我会得到以下错误:
HttpError 403 when requesting https://bigquery.googleapis.com/bigquery/v2/projects/project_name_here/datasets/DATASET_NAME_HERE/tables/TABLE_NAME_HERE?alt=json returned "Request had insufficient authentication scopes."
当我在bigquery作用域之外添加https://www.googleapis.com/auth/cloud-platform
作用域时,我不再得到"所需参数丢失"的情况。错误,但得到一个令牌错误。
我怀疑有些东西与服务帐户不一致,该帐户是根据我放入气流的大查询连接条目创建的。先前关于作用域不足的错误告诉我可能存在权限问题?但是为什么它一直说"缺少参数"呢?为什么我需要添加多个作用域?我使用GCP的经验有限,但是当我创建服务帐户时,它没有提到分配"范围"。到服务帐户
承载GCS桶的GCP实例的凭据和连接变量是正确的,因为我已经能够从外部源成功地将数据写入GCS桶。
问题在于操作符中的一个字段为空。字段delete_sql
被设置为空白;即delete_sql=''
。我以为这样就够了,但结果是不够的。所以我只输入SELECT 1