Google BigQuery с документацией / примерами .NET

Мне нужно запрашивать данные с помощью Google BigQuery API. Но я изо всех сил пытаюсь найти образцы .NET, а документация не была включена в двоичный файл (Google.Apis.Bigquery.dll). Может ли кто-нибудь предоставить мне образец использования .NET?


person user1399937    schedule 16.09.2012    source источник
comment
Пожалуйста, посмотрите ответы ниже - они помогли?   -  person Ryan Boyd    schedule 18.09.2012
comment
Сообщите нам, если вам потребуется дополнительная помощь. Если приведенные ниже ответы работают, проголосуйте / примите. Спасибо!   -  person Ryan Boyd    schedule 21.10.2012
comment
Недавний см. На странице bitvectors.blogspot. de / 2014/05 /   -  person Felipe Hoffa    schedule 18.06.2014


Ответы (2)


Вот рабочий образец, частично основанный на ответе Майкла:

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);
        }
    }
}

Здесь используются синхронные запросы. Для асинхронных запросов код будет немного другим.

Вам нужно будет сослаться на служебную dll BigQuery (в каталоге «Services» в загружаемом двоичном файле), а также на другие dll в каталоге «Lib». Двоичный выпуск находится здесь: http://code.google.com/p/google-api-dotnet-client/wiki/Downloads#Latest_Stable_Release

Код .NET будет очень похож на код библиотеки Java (они созданы на основе того же описания API): https://developers.google.com/bigquery/docs/developers_guide#batchqueries

Скоро мы получим больше образцов, но, надеюсь, пока это поможет.

person Ryan Boyd    schedule 17.09.2012
comment
недавнюю версию см. на странице bitvectors.blogspot. de / 2014/05 / - person Felipe Hoffa; 18.06.2014
comment
Для библиотеки, которую вы связали, требуется Windows 8.1, и все ее пакеты NuGet должны быть разрешены. Я видел на YouTube некоторые из ваших видео о Big Query. Операторы using, использованные в приведенном выше фрагменте кода, не работают с остальной частью кода. Если библиотека Java более стабильна, дайте мне знать, и мы перейдем к ней. - person disasterkid; 21.09.2015

У нас пока нет примеров BigQuery C #, но библиотека Google .NET поставляется с различными примерами для других API Google, и код аналогичен. См. пример на этой странице.

Код будет выглядеть примерно так, как показано ниже (примечание: у меня еще не было возможности проверить это, так что изменения приветствуются ...). Кстати, мы сейчас занимаемся обновлением документации по BigQuery и надеемся опубликовать несколько примеров C #, как только сможем (но, скорее всего, в следующем месяце).

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);
        }
    }
}
person Michael Manoochehri    schedule 16.09.2012
comment
Были ли созданы эти образцы или документация? Я все еще не могу их отследить, я нашел документацию по API, что неплохо, но на самом деле не дает хорошей отправной точки! - person Ben; 24.07.2013
comment
что такое Google.Apis.Util, GoogleAuthenticationServer, NativeApplicationClient, пожалуйста, опубликуйте объяснение зависимостей. Кроме того, есть ли у вас образцы? - person Cherven; 08.10.2014
comment
Когда я загружаю последнюю версию библиотеки Google Api через NuGet nuget.org/packages/Google.Apis он не распознает Google.Apis.Authentication. Это рабочая версия кода, который вы вставили выше? Если с библиотекой Java меньше хлопот, дайте нам знать, и мы перейдем к ней. - person disasterkid; 21.09.2015
comment
Исправлено: stackoverflow.com/questions/32712366/ - person akdora; 10.12.2016