Google api 如何使用c应用程序选择大数据集并从bigquery加载数据表

Google api 如何使用c应用程序选择大数据集并从bigquery加载数据表,google-api,google-bigquery,google-api-dotnet-client,Google Api,Google Bigquery,Google Api Dotnet Client,我已经使用服务身份验证创建了C.NET应用程序 我试图从GoogleBigQuery运行select语句公共示例表,并将结果加载到datatable中,但无法实现,它会抛出错误 导致错误的查询是:从[publicdata:samples.github\u timeline]中选择* 这是C代码 String serviceAccountEmail = "SERVICE ACCOUNT EMAIL ADDRESS"; var certificate = n

我已经使用服务身份验证创建了C.NET应用程序

我试图从GoogleBigQuery运行select语句公共示例表,并将结果加载到datatable中,但无法实现,它会抛出错误

导致错误的查询是:从[publicdata:samples.github\u timeline]中选择*

这是C代码

        String serviceAccountEmail = "SERVICE ACCOUNT EMAIL ADDRESS";

            var certificate = new X509Certificate2(@"KEY FILE NAME", "KEY SECRET", X509KeyStorageFlags.Exportable);

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

            BigqueryService Service = new BigqueryService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "PROJECT NAME"
            });

            string query = "SELECT * FROM [publicdata:samples.github_timeline]";

            JobsResource j = Service.Jobs;

            QueryRequest qr = new QueryRequest();

            string ProjectID = "PROJECT ID";

            qr.Query = query;
            qr.MaxResults = Int32.MaxValue;
            qr.TimeoutMs = Int32.MaxValue;

            DataTable DT = new DataTable();
            int i = 0;

            QueryResponse response = j.Query(qr, ProjectID).Execute();
如何选择大型数据集并以最佳方式将结果加载到Datatable中?担心BigQuery会抛出这些类型的错误,那么我们将如何100%信任我们的程序工作

通常,查询具有最大响应大小。如果你打算开一家 如果查询可能返回较大的结果,则可以设置allowLargeResults 在作业配置中设置为true

返回较大结果的查询执行时间会更长,即使 结果集很小,并且受到其他限制:

必须指定目标表。您不能指定顶层 订货依据、最高或限制条款。这样做否定了使用 allowLargeResults,因为无法再计算查询输出 同时。只有在以下情况下,窗口函数才能返回大型查询结果 与PARTITION BY子句结合使用

问题是Google.net客户端库是否支持将allowLargeResults添加到请求中。检查选项值

如果您的幸运儿是:

qr.allowLargeResults=true


不,我在Google.net客户端库中找不到QueryRequest的allowLargeResults。将其作为问题添加到客户端库在其他客户端库(如Java或PHP)中是否提供此功能?
        String serviceAccountEmail = "SERVICE ACCOUNT EMAIL ADDRESS";

            var certificate = new X509Certificate2(@"KEY FILE NAME", "KEY SECRET", X509KeyStorageFlags.Exportable);

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

            BigqueryService Service = new BigqueryService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "PROJECT NAME"
            });

            string query = "SELECT * FROM [publicdata:samples.github_timeline]";

            JobsResource j = Service.Jobs;

            QueryRequest qr = new QueryRequest();

            string ProjectID = "PROJECT ID";

            qr.Query = query;
            qr.MaxResults = Int32.MaxValue;
            qr.TimeoutMs = Int32.MaxValue;

            DataTable DT = new DataTable();
            int i = 0;

            QueryResponse response = j.Query(qr, ProjectID).Execute();