标签: google-bigquery

是否可以使用json密钥而不是p12密钥来获取服务帐户凭据?

我在C#中使用"Google.Apis.Bigquery.v2客户端库".

我使用"服务帐户"授权Google BigQuery(请参阅http://www.afterlogic.com/mailbee-net/docs/OAuth2GoogleServiceAccounts.html).要创建X509证书,请使用Google Developers Console中的p12密钥.但是,现在json键是默认值.我可以用它代替p12键吗?

我有以下代码:

    string serviceAccountEmail = "xxxx@developer.gserviceaccount.com";

X509Certificate2 certificate;
using (Stream stream = new FileStream(@"C:\key.p12", FileMode.Open, FileAccess.Read, FileShare.Read))
{
    using (MemoryStream ms = new MemoryStream())
    {
        stream.CopyTo(ms);
        certificate = new X509Certificate2(ms.ToArray(), "notasecret", X509KeyStorageFlags.Exportable);
    }
}

// Create credentials
ServiceAccountCredential credential = new ServiceAccountCredential(
    new ServiceAccountCredential.Initializer(serviceAccountEmail)
    {
        Scopes = new[] {
        BigqueryService.Scope.Bigquery,
        BigqueryService.Scope.CloudPlatform,
    },
    }.FromCertificate(certificate));

// Create the service
BaseClientService.Initializer initializer = new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "My Application",
    GZipEnabled = true,
}; …
Run Code Online (Sandbox Code Playgroud)

c# google-bigquery google-api-dotnet-client google-sheets-api

25
推荐指数
1
解决办法
7631
查看次数

在Google BigQuery中选择除一些以外的所有列?

有没有办法选择*除了BigQuery中的[x,y,z列名称]?我看到MySQL的一些解决方案,但不确定它是否适用于BQ.

谢谢.

google-bigquery

25
推荐指数
2
解决办法
2万
查看次数

如何在Google BigQuery中创建临时表

有没有办法通过以下方式在Google BigQuery中创建临时表:

SELECT * INTO <temp table> 
FROM <table name> 
Run Code Online (Sandbox Code Playgroud)

我们可以在SQL中创建一样吗?

对于复杂查询,我需要创建临时表来存储我的数据.

google-bigquery

24
推荐指数
6
解决办法
2万
查看次数

无法从本地App Engine开发服务器访问BigQuery

这是一个与python Google AppEngine应用程序和Google的BigQuery之间的服务器到服务器授权有关的问题,但可能与其他云服务相关.

tldr; 是否可以让App Engine本地开发服务器使用远程BigQuery服务进行身份验证?更好的是有一个本地BigQuery?

我知道AppAssertionCredentials目前不能在本地开发服务器上运行,尽管这本身就非常令人沮丧.

它适用于标准的Python代码,在本地开发服务器沙箱之外的另一种方法,详细介绍在这里,因为即使PyCrypto启用了沙盒不允许一些POSIX模块如"PWD"不为本地开发服务器工作.

我有AppAssertionCredentials远程服务器,并在上工作SignedJwtAssertionCredentials方法了本机Python工作本地,因此服务帐户设置正确.

导入在try/except块中的oauth2client/crypt.py内失败 - 在将它们注释掉后,很容易看到沙箱白名单异常.

我已经摆弄了添加'pwd'到白名单,然后又出现了另一个问题,所以我匆匆走回那个兔子洞.

我已经尝试将PyCrypto直接包含在项目中并得到类似的结果.

我也试过OpenSSL,结果相似.

我找了一个当地的appengine特定的PyCrypto无济于事,我错过了吗?我应该说这是在Mac OSX上 - 也许我应该启动一个Linux机箱然后放手一搏?

google-app-engine google-bigquery google-oauth google-api-python-client

23
推荐指数
1
解决办法
5407
查看次数

如何取消删除BigQuery表?

我不小心删除了我的一个BigQuery表.是否可以取回它?API似乎不支持取消删除.

google-bigquery

23
推荐指数
3
解决办法
6874
查看次数

为BigQuery Python CLI设置GOOGLE_APPLICATION_CREDENTIALS

我正在尝试使用Python通过BigQuery API连接到Google BigQuery.

我在此处关注此页:https: //cloud.google.com/bigquery/bigquery-api-quickstart

我的代码如下:

import os
import argparse

from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.client import GoogleCredentials

GOOGLE_APPLICATION_CREDENTIALS = './Peepl-cb1dac99bdc0.json'

def main(project_id):
    # Grab the application's default credentials from the environment.
    credentials = GoogleCredentials.get_application_default()
    print(credentials)
    # Construct the service object for interacting with the BigQuery API.
    bigquery_service = build('bigquery', 'v2', credentials=credentials)

    try:
        query_request = bigquery_service.jobs()
        query_data = {
            'query': (
                'SELECT TOP(corpus, 10) as title, '
                'COUNT(*) as unique_words '
                'FROM [publicdata:samples.shakespeare];')
        } …
Run Code Online (Sandbox Code Playgroud)

python google-bigquery

23
推荐指数
6
解决办法
5万
查看次数

BigQuery替代中型数据

这是为什么BigQuery在小数据集上表现不佳的问题的后续问题.

假设我有一个大约1M行的数据集.在我们正在使用的当前数据库(mysql)中,聚合查询运行速度很慢,可能需要大约10秒左右的复杂聚合.在BigQuery上,所需的初始化时间可能会使这个查询花费大约3秒,比在mysql中更好,但是如果我们需要在1s或更低版本中返回查询,那么该工作的工具是错误的.

那么我的问题是,使用BigQuery对中等大小的数据集(例如1-10M行)进行聚合查询会有什么好的选择?示例查询可能是:

SELECT studio, territory, count(*)
FROM mytable
GROUP BY studio, territory
ORDER BY count(*) DESC
Run Code Online (Sandbox Code Playgroud)

我想到的可能解决方案是ElasticSearch(https://github.com/NLPchina/elasticsearch-sql)和Redshift(postgres太慢).什么是可以通过SQL查询的好选择?

注意:我不是在寻找为什么如何使用 BQ,我正在寻找10M行以下数据集的替代方案,其中查询可以在~1s内返回.

mysql sql google-bigquery amazon-redshift

23
推荐指数
3
解决办法
1670
查看次数

如何在BigQuery中使用TABLE_QUERY()函数?

关于TABLE_QUERY函数的几个问题:

  • 示例显示table_id在查询字符串中使用,是否还有其他字段可用?
  • 调试似乎很难.当我尝试使用它时,我得到"评估辅助查询的错误".
  • TABLE_QUERY()工作怎么样?

google-bigquery

22
推荐指数
2
解决办法
1万
查看次数

BigQuery COUNT(DISTINCT值)vs COUNT(值)

我在bigquery中发现了一个小故障/错误.我们根据starschema.net:clouddb:bank.Banks_token下的银行统计数据得到了一张表

如果我运行以下查询:

SELECT count(*) as totalrow,
count(DISTINCT BankId ) as bankidcnt
FROM bank.Banks_token;
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

Row totalrow    bankidcnt    
1   9513    9903    
Run Code Online (Sandbox Code Playgroud)

我的问题是如果我有9513row我怎么能得到9903row,这比表中的rowcount多390个.

google-bigquery

20
推荐指数
2
解决办法
4万
查看次数

Bigquery将列添加到表模式

我正在尝试向BigQuery现有表添加新列.我尝试过bq命令工具和API方法.调用Tables.update()时出现以下错误.

我试过提供带有附加字段的完整模式,并且也给出了如下所示的相同错误.

使用API​​我得到以下错误:

{
    "schema": {
        "fields": [{
            "name": "added_column",
            "type": "integer",
            "mode": "nullable"
        }]
    }
}



{
    "error": {
        "errors": [{
            "domain": "global",
            "reason": "invalid",
            "message": "Provided Schema does not match Table [blah]"
        }],
        "code": 400,
        "message": "Provided Schema does not match Table [blah]"
    }
}
Run Code Online (Sandbox Code Playgroud)

使用BQ工具,我收到以下错误:

./bq update -t blah added_column:integer
Run Code Online (Sandbox Code Playgroud)

更新操作中的BigQuery错误:提供的架构与表[blah]不匹配

google-bigquery

20
推荐指数
1
解决办法
1万
查看次数