Google bigquery BigQuery子查询
我是BQ的新手。我的目标是创建一个向下钻取特定值的查询 以下查询显示iam角色,例如ServiceAccountUser或serviceAccountTokenCreatorGoogle bigquery BigQuery子查询,google-bigquery,Google Bigquery,我是BQ的新手。我的目标是创建一个向下钻取特定值的查询 以下查询显示iam角色,例如ServiceAccountUser或serviceAccountTokenCreator SELECT name, iam.role AS roles, (ARRAY_TO_STRING(iam.members, "")) AS members FROM dataset_blah_7553a5b37_Project, UNNEST (iam_policy.bindings) AS i
SELECT name, iam.role AS roles, (ARRAY_TO_STRING(iam.members, "")) AS members
FROM dataset_blah_7553a5b37_Project,
UNNEST (iam_policy.bindings) AS iam
GROUP by name, roles, members
HAVING role = 'roles/iam.serviceAccountUser' OR role = 'roles/iam.serviceAccountTokenCreator'
例如,它显示以下内容:
Row name roles members
1 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser serviceAccount:xyz321@blah.com
2 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser user: ericcartman@blah.com
3 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountTokenCreator group: gcp-blah-group001@blah.com
4 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser user: stanmarshn@blah.com
5 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser serviceAccount:abc1234@blah.com
6 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser serviceAccount:opr3234@blah.com
7 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser serviceAccount:stu2224@blah.com
但是,我需要进一步深入,只过滤“组:”和“用户”,例如
我怎样才能做到呢?子查询?是的,我们可以在bigquery中使用子查询进行筛选。[1] 你可以试试类似的东西
SELECT table1.name, table1.roles, table1.members
FROM(SELECT name, iam.role AS roles, (ARRAY_TO_STRING(iam.members, "")) AS members
FROM dataset_blah_7553a5b37_Project,
UNNEST (iam_policy.bindings) AS iam
GROUP by name, roles, members
HAVING role = 'roles/iam.serviceAccountUser' OR role =
'roles/iam.serviceAccountTokenCreator') AS table1
WHERE table1.members= "group: gcp-blah-001@blah.com" AND table1.members="user: ericcartman@blah.com"
[1] 非常感谢达曼的回复。试过了。然而,获得零命中率。我想我需要玩它。再次感谢!!!
SELECT table1.name, table1.roles, table1.members
FROM(SELECT name, iam.role AS roles, (ARRAY_TO_STRING(iam.members, "")) AS members
FROM dataset_blah_7553a5b37_Project,
UNNEST (iam_policy.bindings) AS iam
GROUP by name, roles, members
HAVING role = 'roles/iam.serviceAccountUser' OR role =
'roles/iam.serviceAccountTokenCreator') AS table1
WHERE table1.members= "group: gcp-blah-001@blah.com" AND table1.members="user: ericcartman@blah.com"