BigQuery存储过程报错:US区域表rdg-datawarehouse:Amazon_Raw._metadata_order_items未找到求助
BigQuery存储过程中INSERT报错找不到表的排查建议
针对你遇到的Not found: Table rdg-datawarehouse:Amazon_Raw._metadata_order_items was not found in location US报错,可按以下步骤排查:
直接验证表的存在性与权限
在BigQuery控制台执行以下查询,确认目标表真实存在,且执行存储过程的账号拥有该表的读写权限:SELECT * FROM `rdg-datawarehouse.Amazon_Raw._metadata_order_items` LIMIT 1;若查询失败,先解决表存在性或权限问题;若查询成功,说明问题出在存储过程执行上下文。
检查存储过程的区域属性
BigQuery存储过程本身有固定的区域属性,会话位置设置不会覆盖存储过程的区域。执行以下SQL查看存储过程的位置:SELECT location FROM `rdg-datawarehouse.Amazon.INFORMATION_SCHEMA.ROUTINES` WHERE routine_name = 'update_orders';如果存储过程不在US区域,需重新创建并指定US区域:
CREATE OR REPLACE PROCEDURE `rdg-datawarehouse.Amazon.update_orders`() SET OPTIONS(location='US') AS BEGIN -- 存储过程原有逻辑 END;核对表名与数据集名的拼写和大小写
仔细确认Amazon_Raw数据集名、_metadata_order_items表名的拼写、大小写是否完全匹配实际资源。虽然BigQuery默认大小写不敏感,但反引号包裹的名称会严格匹配,避免因拼写失误导致找不到表。强制指定表的区域
在存储过程的INSERT语句中,给目标表和关联表添加区域后缀,明确指定US区域:insert into `rdg-datawarehouse.Amazon_Raw._metadata_order_items`@US (OrderId, PurchaseDate, processed_flag) select distinct src.OrderId, src.PurchaseDate, 0 as processed_bit from `rdg-datawarehouse.Amazon_Raw.Orders`@US src inner join `last_updated_orders` tmp on src.OrderId = tmp.OrderId and src.LastUpdateDate = tmp.LastUpdateDate and src.import_timestamp = tmp.last_import_timestamp left join `rdg-datawarehouse.Amazon_Raw._metadata_order_items`@US mit on tmp.OrderId = mit.OrderId where coalesce(mit.OrderId, 1) = 1;清除存储过程执行缓存
若存储过程的执行计划缓存了旧的位置信息,可尝试删除并重新创建存储过程,强制生成新的执行计划。验证数据集的区域
执行以下SQL确认Amazon_Raw数据集确实位于US区域:SELECT location FROM `rdg-datawarehouse.INFORMATION_SCHEMA.SCHEMATA` WHERE schema_name = 'Amazon_Raw';
内容的提问来源于stack exchange,提问作者radug-cpc
相关产品推荐
相关产品推荐

