授予 Simba ODBC 驱动程序或 bigrquery 访问 Google Drive 文件的权限
Posted
技术标签:
【中文标题】授予 Simba ODBC 驱动程序或 bigrquery 访问 Google Drive 文件的权限【英文标题】:Give Simba ODBC driver or bigrquery access to Google Drive files 【发布时间】:2018-03-07 01:54:36 【问题描述】:我正在尝试将基于 Google 电子表格的 BQ 表加载到统计数据包 Stata 中。我尝试了两种方法来实现这一点。
首先,我使用了 Mac 版 Simba ODBC 驱动程序(版本 2.1.6),但出现以下错误:
The ODBC driver reported the following diagnostics
[Simba][BigQuery] (20) Query execution failed: Access Denied: BigQuery BigQuery: No OAuth token with Google Drive scope was found.
SQLSTATE=HY000
在我的 odbc.ini 文件中,我设置了 RequestGoogleDriveScope=1,并且正在使用 OAuth 机制的用户身份验证。我可以在 BQ Web UI 中查询这个表,我可以通过 ODBC 加载其他非 GS 表。
其次,我想也许我可以在 R 中执行此操作,绕过 Simba/ODBC:
library(bigrquery)
data <- query_exec("SELECT * FROM my_table;", project = "XXXX", useLegacySql = FALSE)
Error: Access Denied: BigQuery BigQuery: No OAuth token with Google Drive scope was found.
总而言之,此查询适用于 BQ Web UI,不适用于 R(使用 API)或 Stata(使用 ODBC)。共同点是 Stata 或 R 在https://myaccount.google.com/permissions 中都没有 google 驱动器权限,而 BQ 客户端工具拥有它们。这是我对问题所在的最佳猜测。任何有关如何更改 OAuth 范围的建议都将不胜感激。
交叉发布on Statalist。
【问题讨论】:
【参考方案1】:这是 bigrquery 的 OAuth2 主题。该应用程序通常需要访问工作表(Google Drive 范围),但它没有在身份验证过程中请求该范围。 bigrquery 的开发人员只是决定不这样做。
这里讨论了这个问题:https://github.com/r-dbi/bigrquery/issues/132,似乎超出了他们的范围。
一种可能的解决方法(虽然未经测试):
在不同的数据集中创建一个视图 (SELECT * FROM sheet_table
)
授予此视图访问表的权限:https://cloud.google.com/bigquery/docs/share-access-views#authorize_the_view_to_access_the_source_dataset
然后查询视图而不是原始表 - 基本上将访问问题委托给该视图。
【讨论】:
有没有办法在 ODBC 路由中解决这个问题? 基本上是一样的,因为 Google 总是使用 OAuth2 - 您需要配置驱动程序,以便它要求 Google Drive 范围。这是 OAAuth2 Google 服务的游乐场 - 也许这可以帮助您澄清概念:developers.google.com/oauthplayground 感谢您向我解释这一点,但这不是我在 odbc.ini 中使用 RequestGoogleDriveScope=1 设置所做的吗?以上是关于授予 Simba ODBC 驱动程序或 bigrquery 访问 Google Drive 文件的权限的主要内容,如果未能解决你的问题,请参考以下文章
用于 Google BigQuery 的 Simba ODBC 驱动程序看不到共享数据集
Simba Mongodb ODBC 驱动程序:返回的数据与预期的数据长度不匹配
bigquery Simba JDBC 驱动程序是不是支持批量查询?
使用 SIMba JDBC 驱动程序访问特定 Google bigquery 数据集的元数据
通过 Simba JDBC 的 Databricks Spark 连接问题
用于 Cloud Spanner 的 Simba JDBC 驱动程序与 Spark JDBC DataFrame 阅读器一起使用