Google bigquery BigQuery子查询

Google 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

我是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 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"