Sobre este codelab
1. Visão geral
O BigQuery é o data warehouse de análise de baixo custo, totalmente gerenciado e em escala de petabytes criado pelo Google para a análise de dados. O BigQuery é NoOps. Não há infraestrutura para gerenciar e você não precisa de um administrador de banco de dados. Assim, você pode se concentrar na análise de dados para encontrar insights significativos, usar um SQL conhecido e aproveitar nosso modelo de pagamento por uso.
Neste codelab, você vai usar as bibliotecas de cliente do Google Cloud para .NET para consultar conjuntos de dados públicos do BigQuery com C#.
O que você vai aprender
- Como usar o Cloud Shell
- Como ativar a API BigQuery
- Como autenticar solicitações de API
- Como instalar a biblioteca de cliente do Google Cloud para C#
- Como consultar as obras de Shakespeare
- Como consultar o conjunto de dados do GitHub
- Como ajustar o armazenamento em cache e as estatísticas de exibição
O que é necessário
Pesquisa
Como você vai usar este tutorial?
Como você classificaria sua experiência com C#?
Como você classificaria sua experiência com o uso dos serviços do Google Cloud Platform?
2. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.
- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como
PROJECT_ID
. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto. - Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Inicie o Cloud Shell
Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.
Ativar o Cloud Shell
- No Console do Cloud, clique em Ativar o Cloud Shell
.
Se você estiver iniciando o Cloud Shell pela primeira vez, verá uma tela intermediária com a descrição dele. Se aparecer uma tela intermediária, clique em Continuar.
Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.
Essa máquina virtual tem todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Grande parte do trabalho neste codelab, se não todo, pode ser feito em um navegador.
Depois de se conectar ao Cloud Shell, você verá sua autenticação e o projeto estará configurado com o ID do seu projeto.
- Execute o seguinte comando no Cloud Shell para confirmar se a conta está autenticada:
gcloud auth list
Resposta ao comando
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Execute o seguinte comando no Cloud Shell para confirmar que o comando gcloud sabe sobre seu projeto:
gcloud config list project
Resposta ao comando
[core] project = <PROJECT_ID>
Se o projeto não estiver configurado, configure-o usando este comando:
gcloud config set project <PROJECT_ID>
Resposta ao comando
Updated property [core/project].
3. Ative a API BigQuery
A API BigQuery precisa estar ativada por padrão em todos os projetos do Google Cloud. É possível verificar se isso é verdade com o seguinte comando no Cloud Shell: Você está listado no BigQuery:
gcloud services list
Você verá o BigQuery listado:
NAME TITLE
bigquery-json.googleapis.com BigQuery API
...
Caso a API BigQuery não esteja ativada, use o seguinte comando no Cloud Shell para ativá-la:
gcloud services enable bigquery-json.googleapis.com
4. Instalar a biblioteca de cliente do BigQuery para C#
Primeiro, crie um aplicativo simples de console em C# que você usará para executar amostras da API BigQuery.
dotnet new console -n BigQueryDemo
Você verá o aplicativo criado e as dependências resolvidas:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Em seguida, navegue até a pasta BigQueryDemo
:
cd BigQueryDemo
Adicione o pacote NuGet Google.Cloud.BigQuery.V2
ao projeto:
dotnet add package Google.Cloud.BigQuery.V2
info : Adding PackageReference for package 'Google.Cloud.BigQuery.V2' into project '/home/atameldev/BigQueryDemo/BigQueryDemo.csproj'.
log : Restoring packages for /home/atameldev/BigQueryDemo/BigQueryDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.BigQuery.V2' version '1.2.0' added to file '/home/atameldev/BigQueryDemo/BigQueryDemo.csproj'.
Agora, você está pronto para usar a API BigQuery.
5. Consultar as obras de Shakespeare
Um conjunto de dados público é qualquer conjunto de dados armazenado no BigQuery e disponibilizado para o público em geral. Há muitos outros conjuntos de dados públicos disponíveis para consulta, alguns deles também hospedados pelo Google, mas muitos outros hospedados por terceiros. Leia mais na página Conjuntos de dados públicos.
Além dos conjuntos de dados públicos, o BigQuery fornece um número limitado de tabelas de amostra que você pode consultar. Essas tabelas estão contidas em bigquery-public-data:samples dataset
. Uma dessas tabelas é chamada de shakespeare.
. Ela contém um índice de palavras das obras de Shakespeare, com o número de vezes que cada palavra aparece em cada acervo.
Nesta etapa, você vai consultar a tabela Shakespeare.
Primeiro, abra o editor de código no canto superior direito do Cloud Shell:
Navegue até o arquivo Program.cs
dentro da pasta BigQueryDemo
e substitua o código pelo seguinte. Substitua projectId
pelo ID do projeto real:
using System;
using Google.Cloud.BigQuery.V2;
namespace BigQueryDemo
{
class Program
{
static void Main(string[] args)
{
var client = BigQueryClient.Create("projectId");
var table = client.GetTable("bigquery-public-data", "samples", "shakespeare");
var sql = $"SELECT corpus AS title, COUNT(word) AS unique_words FROM {table} GROUP BY title ORDER BY unique_words DESC LIMIT 10";
var results = client.ExecuteQuery(sql, parameters: null);
foreach (var row in results)
{
Console.WriteLine($"{row["title"]}: {row["unique_words"]}");
}
}
}
}
Reserve alguns minutos para estudar o código e ver como a tabela está sendo consultada.
No Cloud Shell, execute o app:
dotnet run
Você verá uma lista de palavras e suas ocorrências:
hamlet: 5318
kinghenryv: 5104
cymbeline: 4875
troilusandcressida: 4795
kinglear: 4784
kingrichardiii: 4713
2kinghenryvi: 4683
...
6. Consultar o conjunto de dados do GitHub
Para se familiarizar com o BigQuery, agora você emitirá uma consulta no conjunto de dados público do GitHub (link em inglês). Você encontrará as mensagens de confirmação mais comuns no GitHub. Você também vai usar o console da Web do BigQuery para visualizar e executar consultas ad-hoc.
Para conferir a aparência dos dados, abra o conjunto de dados do GitHub na IU da Web do BigQuery:
Para ter uma prévia da aparência dos dados, use o botão "Visualizar":
Navegue até o arquivo Program.cs
dentro da pasta BigQueryDemo
e substitua o código pelo seguinte. Substitua projectId
pelo ID do projeto real:
using System;
using Google.Cloud.BigQuery.V2;
namespace BigQueryDemo
{
class Program
{
static void Main(string[] args)
{
var client = BigQueryClient.Create("projectId");
var table = client.GetTable("bigquery-public-data", "github_repos", "commits");
var sql = $"SELECT subject AS subject, COUNT(*) AS num_duplicates FROM {table} GROUP BY subject ORDER BY num_duplicates DESC LIMIT 10";
var results = client.ExecuteQuery(sql, parameters: null);
foreach (var row in results)
{
Console.WriteLine($"{row["subject"]}: {row["num_duplicates"]}");
}
}
}
}
Reserve alguns minutos para estudar o código e ver como a tabela está sendo consultada em busca das mensagens de confirmação mais comuns.
No Cloud Shell, execute o app:
dotnet run
Você verá uma lista de mensagens de confirmação e as ocorrências delas:
Update README.md: 2509242
: 1971725
Initial commit: 1942149
Mirroring from Micro.blog.: 838586
update: 575188
Update data.json: 548651
Update data.js: 548339
Add files via upload: 379941
*** empty log message ***: 358528
Can't you see I'm updating the time?: 286863
7. Armazenamento em cache e estatísticas
Após a consulta inicial, o BigQuery armazena os resultados em cache. Como resultado, as consultas subsequentes levam muito menos tempo. É possível desativar o armazenamento em cache com opções de consulta. O BigQuery também monitora algumas estatísticas sobre as consultas, como horário de criação, horário de término e total de bytes processados.
Nesta etapa, você desativará o armazenamento em cache e também exibirá algumas estatísticas sobre as consultas.
Navegue até o arquivo Program.cs
dentro da pasta BigQueryDemo
e substitua o código pelo seguinte. Substitua projectId
pelo ID do projeto real:
using System;
using Google.Cloud.BigQuery.V2;
namespace BigQueryDemo
{
class Program
{
static void Main(string[] args)
{
var client = BigQueryClient.Create("projectId");
var table = client.GetTable("bigquery-public-data", "github_repos", "commits");
var sql = $"SELECT subject AS subject, COUNT(*) AS num_duplicates FROM {table} GROUP BY subject ORDER BY num_duplicates DESC LIMIT 10";
var queryOptions = new QueryOptions {
UseQueryCache = false
};
var results = client.ExecuteQuery(sql, parameters: null, queryOptions: queryOptions);
foreach (var row in results)
{
Console.WriteLine($"{row["subject"]}: {row["num_duplicates"]}");
}
var job = client.GetJob(results.JobReference);
var stats = job.Statistics;
Console.WriteLine("----------");
Console.WriteLine($"Creation time: {stats.CreationTime}");
Console.WriteLine($"End time: {stats.EndTime}");
Console.WriteLine($"Total bytes processed: {stats.TotalBytesProcessed}");
}
}
}
Algumas observações sobre o código. Primeiro, o armazenamento em cache é desativado pela introdução de opções de consulta e pela definição de UseQueryCache
como falso. Segundo, você acessou as estatísticas sobre a consulta do objeto do trabalho.
No Cloud Shell, execute o app:
dotnet run
Como antes, você verá uma lista de mensagens de confirmação e as ocorrências delas. Além disso, você deve ver algumas estatísticas sobre a consulta no final
Update README.md: 2509242
: 1971725
Initial commit: 1942149
Mirroring from Micro.blog.: 838586
update: 575188
Update data.json: 548651
Update data.js: 548339
Add files via upload: 379941
*** empty log message ***: 358528
Can't you see I'm updating the time?: 286863
----------
Creation time: 1533052057398
End time: 1533052066961
Total bytes processed: 9944197093
8. Como carregar dados no BigQuery
Se quiser consultar seus próprios dados, primeiro carregue os dados no BigQuery. O BigQuery oferece suporte ao carregamento de dados de várias fontes, como o Google Cloud Storage, outros serviços do Google, uma fonte legível. Você pode até mesmo transmitir seus dados usando as inserções por streaming. Saiba mais na página Como carregar dados no BigQuery.
Nesta etapa, você vai carregar um arquivo JSON armazenado no Google Cloud Storage em uma tabela do BigQuery. O arquivo JSON está localizado em gs://cloud-samples-data/bigquery/us-states/us-states.json
Se quiser saber mais sobre o conteúdo do arquivo JSON, use a ferramenta de linha de comando gsutil
para fazer o download no Cloud Shell:
gsutil cp gs://cloud-samples-data/bigquery/us-states/us-states.json .
Copying gs://cloud-samples-data/bigquery/us-states/us-states.json...
/ [1 files][ 2.0 KiB/ 2.0 KiB]
Operation completed over 1 objects/2.0 KiB.
Ele contém a lista de estados dos EUA, e cada estado é um documento JSON em uma linha separada:
less us-states.json
{"name": "Alabama", "post_abbr": "AL"}
{"name": "Alaska", "post_abbr": "AK"}
...
Para carregar esse arquivo JSON no BigQuery, navegue até o arquivo Program.cs
dentro da pasta BigQueryDemo
e substitua o código pelo seguinte. Substitua projectId
pelo ID do projeto real:
using System;
using Google.Cloud.BigQuery.V2;
namespace BigQueryDemo
{
class Program
{
static void Main(string[] args)
{
var gcsUri = "gs://cloud-samples-data/bigquery/us-states/us-states.json";
var client = BigQueryClient.Create("projectId");
var dataset = client.GetOrCreateDataset("us_states_dataset");
var schema = new TableSchemaBuilder
{
{ "name", BigQueryDbType.String },
{ "post_abbr", BigQueryDbType.String }
}.Build();
var jobOptions = new CreateLoadJobOptions
{
SourceFormat = FileFormat.NewlineDelimitedJson
};
var table = dataset.GetTableReference("us_states_table");
var loadJob = client.CreateLoadJob(gcsUri, table, schema, jobOptions);
loadJob.PollUntilCompleted();
loadJob.ThrowOnAnyError();
Console.WriteLine("Json file loaded to BigQuery");
}
}
}
Reserve alguns minutos para estudar como o código carrega o arquivo JSON e cria uma tabela com um esquema em um conjunto de dados.
No Cloud Shell, execute o app:
dotnet run
Um conjunto de dados e uma tabela são criados no BigQuery
Json file loaded to BigQuery
Para verificar se o conjunto de dados foi realmente criado, você pode acessar o console do BigQuery. Você verá um novo conjunto de dados e uma tabela criados. Se você alternar para a guia de visualização da tabela, vai ver os dados reais:
9. Parabéns!
Você aprendeu a usar o BigQuery usando C#.
Limpar
Para evitar a cobrança na sua conta do Google Cloud Platform pelo uso de recursos neste guia de início rápido, siga estas etapas:
- Acesse o console do Cloud Platform.
- Selecione o projeto que você quer encerrar e clique em "Excluir". Na parte superior: isso programa a exclusão do projeto.
Saiba mais
- Google BigQuery: https://cloud.google.com/bigquery/docs/
- C#/.NET no Google Cloud Platform: https://cloud.google.com/dotnet/
- Cliente Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
Licença
Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.