Reputation: 646
I am new to BQ. My objective is to create a query which will drill down to specific values.
The following query displays iam roles, such as ServiceAccountUser or 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'
It displays for example the following:
Row name roles members
1 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser serviceAccount:[email protected]
2 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser user: [email protected]
3 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountTokenCreator group: [email protected]
4 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser user: [email protected]
5 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser serviceAccount:[email protected]
6 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser serviceAccount:[email protected]
7 //cloudresourcemanager.googleapis.com/projects/1234567890 roles/iam.ServiceAccountUser serviceAccount:[email protected]
However, I need to drill down further to filter only "group:" and "user:", such as
group: [email protected]
user: [email protected]
How can I accomplish it? Subqueries?
Upvotes: 0
Views: 88
Reputation: 2126
Yes, we can do filtering using subqueries in bigquery. [1]
You can try something like
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: [email protected]" AND table1.members="user: [email protected]"
[1]https://cloud.google.com/bigquery/docs/reference/standard-sql/subqueries#table_subquery_concepts
Upvotes: 1