Skip to content

Commit 5e76619

Browse files
authored
Merge branch 'main' into salman-mkc-code-examples
2 parents 315b503 + 57fda1c commit 5e76619

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/**
2+
* Copyright 2025 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
18+
# [START bigquery_authorized_view_tutorial]
19+
# Creates an authorized view.
20+
21+
# Create a dataset to contain the view.
22+
resource "google_bigquery_dataset" "view_dataset" {
23+
dataset_id = "view_dataset"
24+
description = "Dataset that contains the view"
25+
location = "us-west1"
26+
}
27+
28+
# Create the view to authorize.
29+
resource "google_bigquery_table" "movie_view" {
30+
project = google_bigquery_dataset.view_dataset.project
31+
dataset_id = google_bigquery_dataset.view_dataset.dataset_id
32+
table_id = "movie_view"
33+
description = "View to authorize"
34+
35+
view {
36+
query = "SELECT item_id, avg(rating) FROM `movie_project.movie_dataset.movie_ratings` GROUP BY item_id ORDER BY item_id;"
37+
use_legacy_sql = false
38+
}
39+
}
40+
41+
42+
# Authorize the view to access the dataset
43+
# that the query data originates from.
44+
resource "google_bigquery_dataset_access" "view_authorization" {
45+
project = "movie_project"
46+
dataset_id = "movie_dataset"
47+
48+
view {
49+
project_id = google_bigquery_table.movie_view.project
50+
dataset_id = google_bigquery_table.movie_view.dataset_id
51+
table_id = google_bigquery_table.movie_view.table_id
52+
}
53+
}
54+
55+
# Specify the IAM policy for principals that can access
56+
# the authorized view. These users should already
57+
# have the roles/bigqueryUser role at the project level.
58+
data "google_iam_policy" "principals_policy" {
59+
binding {
60+
role = "roles/bigquery.dataViewer"
61+
members = [
62+
63+
]
64+
}
65+
}
66+
67+
# Set the IAM policy on the authorized view.
68+
resource "google_bigquery_table_iam_policy" "authorized_view_policy" {
69+
project = google_bigquery_table.movie_view.project
70+
dataset_id = google_bigquery_table.movie_view.dataset_id
71+
table_id = google_bigquery_table.movie_view.table_id
72+
policy_data = data.google_iam_policy.principals_policy.policy_data
73+
}
74+
# [END bigquery_authorized_view_tutorial]
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Copyright 2025 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
apiVersion: blueprints.cloud.google.com/v1alpha1
16+
kind: BlueprintTest
17+
metadata:
18+
name: bigquery_authorized_view_tutorial
19+
spec:
20+
skip: true

0 commit comments

Comments
 (0)