概要
承認済みデータセット(あるいは、承認済みビュー)として登録したと認識しているにもかかわらず、下記のエラーに遭遇した際の対応方法を共有します。
Access Denied: Table authorized-views:source_data.sample_01: User does not have permission to query table authorized-views:source_data.sample_01, or perhaps it does not exist.
承認済みデータセット(あるいは、承認済みビュー)を、ビューを保持しているデータセット(本記事ではanalyst_views
)に対して、テーブルを保持しているデータセット(本記事ではsource_data
)を登録するという間違いをしていたことが原因でした。対応策としては、テーブルを保持しているデータセット(本記事ではsource_data
)に対して、ビューを保持しているデータセット(本記事ではanalyst_views
)を登録する必要がありました。
私が誤っているということを、Creating a BigQuery Authorized View
という cloud skills boost のコンテンツを実施することで気づけました。2024年9月17日にリリースされたとある機能に関するバグだよと思い込んでしまい、ごめんなさい。
引用元:Creating a BigQuery Authorized View | Google Cloud Skills Boost
上記のトレーニングを実施するために $29 を払いました。他にも同じ誤りをしてしまった方を助けれたら、本望です。
エラーの再現方法
1. テーブルを保持するデータセット(source_data
)を作成
2. テーブルを作成
CREATE TABLE source_data.sample_01 (
int_col int,
string_col STRING,
date_col date
);
TRUNCATE TABLE source_data.sample_01;
INSERT INTO source_data.sample_01
(
int_col,
string_col,
date_col
)
SELECT 1, 'aaa', CAST('2024-01-01' AS date)
UNION ALL
SELECT 2, 'bbb', CAST('2024-02-02' AS date)
UNION ALL
SELECT 3, 'ccc', CAST('2024-03-03' AS date)
;
SELECT * FROM source_data.sample_01;
3. ビューを保持するデータセット(analyst_views
)を作成
4. ビューを作成
CREATE VIEW analyst_view.v__sample_01
AS
SELECT
*
FROM source_data.sample_01
;
5. 参照検証を行うユーザーアカウントに対してビューを保持するデータセット(analyst_views
)に対して BigQuery Data Viewer ロールを付与
6. 参照検証を行うユーザーにてビューを参照してエラーとなることを確認
Access Denied: Table authorized-views:source_data.sample_01: User does not have permission to query table authorized-views:source_data.sample_01, or perhaps it does not exist.
エラーへの対応方法
1. 承認済みビューとして設定する方法
1-1. テーブルを保持しているデータセット(source_data
)を開き、SHARERING
-> Authorize Datsets
を選択
1-2. Authorized dataset
ウィンドウにてビューをを保持するデータセット(analyst_views
)を選択し、ADD AUTHORIZATION
を選択
1-3. Currently authorized datasets
に項目が追加されたことを確認
1-4. 参照検証を行うユーザーにてビューを参照できることを確認
SELECT
*
FROM
authorized-views.analyst_view.v__sample_01
LIMIT
10