Google BigQuery with .NET documentation/ samples

前端 未结 2 1424
野的像风
野的像风 2020-12-05 20:25

I require to query data using Google BigQuery API. But I am struggling to find .NET Samples, and there was no documentation included with the binary (Google.Apis.Bigquer

相关标签:
2条回答
  • 2020-12-05 21:12

    Here's a working sample, based in part off of Michael's response:

    using DotNetOpenAuth.OAuth2;
    using Google.Apis.Authentication.OAuth2;
    using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;
    
    using Google.Apis.Bigquery.v2;
    using Google.Apis.Bigquery.v2.Data;
    
    using Google.Apis.Util;
    using System;
    using System.Diagnostics;
    using System.Collections.Generic;
    
    namespace BigQueryConsole
    {
        public class BigQueryConsole
        {
            // Put your client ID and secret here (from https://developers.google.com/console)
            // Use the installed app flow here.
            // Client ID looks like "9999999.apps.googleusercontent.com"
            static string clientId = "YOURCLIENTID";  
            static string clientSecret = "YOURSECRET";
    
            // Project ID is in the URL of your project on the APIs Console
            // Project ID looks like "999999";
            static string projectId = "YOURPROJECTID";
    
            // Query in SQL-like form
            static string query = "SELECT state, count(*) from [publicdata:samples.natality] GROUP BY state ORDER BY state ASC";
    
            public static void Main(string[] args)
            {
                // Register an authenticator.
                var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description);
    
                provider.ClientIdentifier = clientId;
                provider.ClientSecret = clientSecret;
    
                // Initiate an OAuth 2.0 flow to get an access token
    
                var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);
    
                // Create the service.
                var service = new BigqueryService(auth);
                JobsResource j = service.Jobs;
                QueryRequest qr = new QueryRequest();
                qr.Query = query;
    
                QueryResponse response = j.Query(qr, projectId).Fetch();
                foreach (TableRow row in response.Rows)
                {
                    List<string> list = new List<string>();
                    foreach (TableRow.FData field in row.F)
                    {
                        list.Add(field.V);
                    }
                    Console.WriteLine(String.Join("\t", list));
                }
                Console.WriteLine("\nPress enter to exit");
                Console.ReadLine();
            }
    
            private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
            {
                // Get the auth URL:
                IAuthorizationState state = new AuthorizationState(new[] {  BigqueryService.Scopes.Bigquery.GetStringValue() });
                state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
                Uri authUri = arg.RequestUserAuthorization(state);
    
                // Request authorization from the user (by opening a browser window):
                Process.Start(authUri.ToString());
                Console.Write("  Authorization Code: ");
                string authCode = Console.ReadLine();
                Console.WriteLine();
    
                // Retrieve the access token by using the authorization code:
                return arg.ProcessUserAuthorization(authCode, state);
            }
        }
    }
    

    This uses synchronous queries. For asyncronous queries, the code would be slightly different.

    You'll need to reference both the BigQuery service dll (under 'Services' directory in the binary download), plus the other dlls in the 'Lib' directory. Binary release is here: http://code.google.com/p/google-api-dotnet-client/wiki/Downloads#Latest_Stable_Release

    The .NET code is going to be very similar to the Java library code (they're generated off of the same API description): https://developers.google.com/bigquery/docs/developers_guide#batchqueries

    We'll get more samples out there soon, but hopefully this helps in the meantime.

    0 讨论(0)
  • 2020-12-05 21:26

    We don't yet have any BigQuery C# samples, but the Google .NET library comes with various samples for other Google APIs and the code is similar. See this page for an example.

    The code will look something like this below (note: I haven't had a chance to actually test this yet, so edits welcome...). By the way, we are in the middle of making lots of documentation updates for BigQuery, and we are hoping to post some C# samples as soon as we can (but most likely next month).

    using DotNetOpenAuth.OAuth2;
    using Google.Apis.Authentication.OAuth2;
    using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;
    
    using Google.Apis.Bigquery.v2;
    using Google.Apis.Util;
    
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                // Register an authenticator.
                var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description);
    
                // Put your client id and secret here (from https://developers.google.com/console)
                // Use the installed app flow here.
                provider.ClientIdentifier = "<client id>";
                provider.ClientSecret = "<client secret>";
    
                // Initiate an OAuth 2.0 flow to get an access token
                var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);
    
                // Create the service.
                var service = new BigqueryService(auth);
    
                // Do something with the BigQuery service here
                // Such as... service.[some BigQuery method].Fetch();
            }
    
            private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
            {
                // Get the auth URL:
                IAuthorizationState state = new AuthorizationState(new[] { BigqueryService.Scopes.Bigquery.GetStringValue() });
                state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
                Uri authUri = arg.RequestUserAuthorization(state);
    
                // Request authorization from the user (by opening a browser window):
                Process.Start(authUri.ToString());
                Console.Write("  Authorization Code: ");
                string authCode = Console.ReadLine();
                Console.WriteLine();
    
                // Retrieve the access token by using the authorization code:
                return arg.ProcessUserAuthorization(authCode, state);
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题