Мне нужно запрашивать данные с помощью Google BigQuery API. Но я изо всех сил пытаюсь найти образцы .NET, а документация не была включена в двоичный файл (Google.Apis.Bigquery.dll). Может ли кто-нибудь предоставить мне образец использования .NET?
Google BigQuery с документацией / примерами .NET
Ответы (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
Скоро мы получим больше образцов, но, надеюсь, пока это поможет.
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);
}
}
}
Google.Apis.Authentication
. Это рабочая версия кода, который вы вставили выше? Если с библиотекой Java меньше хлопот, дайте нам знать, и мы перейдем к ней.
- person disasterkid; 21.09.2015