Visão geral
Este tutorial segue o [tutorial do ClickHouse], mas executa todas as consultas via pg_clickhouse. Escolha como deseja configurar opg_clickhouse:
- Pelo Console se você estiver usando o ClickHouse Managed Postgres.
- Pelo PSQL se estiver instalando e configurando a extensão por conta própria.
Inicie o ClickHouse
Primeiro, crie um banco de dados no ClickHouse, caso ainda não tenha um. Uma forma rápida de começar é usar a imagem Docker:Criar uma tabela
Vamos usar o [tutorial do ClickHouse] como base para criar um banco de dados simples com o conjunto de dados de táxis da cidade de Nova York:Adicione o conjunto de dados
Depois, importe os dados:Pelo console
Se você usa o ClickHouse Managed Postgres, pode configurar opg_clickhouse e conectar-se a um serviço ClickHouse pelo console do ClickHouse Cloud.
Abra seu serviço Managed Postgres, selecione Settings e localize a seção
ClickHouse integration. Clique em Enable pg_clickhouse.
No formulário de configuração, informe um nome para o servidor externo. Selecione o
serviço ClickHouse, o banco de dados e o usuário a serem usados na conexão. Informe a
senha do ClickHouse e selecione o banco de dados Postgres e o schema de destino para o qual as
tabelas do ClickHouse deverão ser importadas. Clique em Connect para criar o servidor externo
e importar o schema.
Quando a configuração for concluída, o console exibirá uma confirmação, e o servidor externo
aparecerá na lista de servidores.
Agora você pode abrir o SQL console do Postgres e consultar as tabelas importadas:
taxi no ClickHouse
e importe-o para um schema de destino chamado taxi.
A partir do PSQL
Instale o pg_clickhouse
Faça a compilação e instale o pg_clickhouse a partir do PGXN ou do GitHub. Ou inicie um container Docker usando a [imagem do pg_clickhouse], que simplesmente adiciona o pg_clickhouse à [imagem do Postgres] no Docker:Conectar pg_clickhouse
Agora conecte-se ao Postgres:Se você estiver usando o console do ClickHouse Cloud para executar SQL, conceda ao usuário administrador do console acesso ao servidor externo:
password.
Agora, adicione a tabela de táxi; basta importar todas as tabelas do banco de dados remoto no ClickHouse para um schema do Postgres:
\det+ para vê-la:
\d para mostrar todas as colunas:
COUNT(), para que ela seja executada no ClickHouse e
retorne apenas uma única linha ao Postgres. Use EXPLAIN para ver isso:
Analise os dados
Execute algumas consultas para analisar os dados. Explore os exemplos a seguir ou experimente sua própria consulta SQL.-
Calcule a média do valor da gorjeta:
-
Calcule o custo médio com base no número de passageiros:
-
Calcule o número diário de embarques por bairro:
-
Calcule a duração de cada viagem em minutos e, em seguida, agrupe os resultados por
pela duração da viagem:
-
Mostre o número de embarques em cada bairro, separado por hora do dia:
-
Defina o fuso horário de exibição para Nova York e recupere corridas com destino aos aeroportos LaGuardia ou JFK:
Crie um dicionário
Crie um dicionário associado a uma tabela no seu serviço ClickHouse. A tabela e o dicionário se baseiam em um arquivo CSV que contém uma linha para cada bairro da cidade de Nova York. Os bairros são mapeados para os nomes dos cinco boroughs da cidade de Nova York (Bronx, Brooklyn, Manhattan, Queens e Staten Island), bem como para o aeroporto de Newark (EWR). Aqui está um trecho do arquivo CSV que você está usando em formato de tabela. A colunaLocationID no arquivo é mapeada para as colunas pickup_nyct2010_gid e
dropoff_nyct2010_gid na sua tabela de viagens:
-
Ainda no Postgres, use a função
clickhouse_raw_querypara criar um [dicionário] do ClickHouse chamadotaxi_zone_dictionarye preencher o dicionário com base no arquivo CSV no S3:DefinirLIFETIMEcomo 0 desativa as atualizações automáticas para evitar tráfego desnecessário no nosso bucket do S3. Em outros casos, talvez você o configure de outra forma. Para mais detalhes, consulte Atualização de dados de dicionário usando LIFETIME.- Agora importe-o:
- Confirme se podemos consultá-la:
- Excelente. Agora use a função
dictGetpara recuperar o nome de um distrito em uma consulta. A consulta a seguir soma o número de corridas de táxi por distrito que terminam no aeroporto LaGuardia ou no JFK:
Esta consulta soma o número de corridas de táxi por borough que terminam em um dos aeroportos, LaGuardia ou JFK. Observe que há várias corridas em que o bairro de origem é desconhecido.
Faça um JOIN
Escreva algumas consultas que façam um JOIN entretaxi_zone_dictionary e sua
tabela trips.
-
Comece com um
JOINsimples que funciona de forma semelhante à consulta de aeroporto anterior:Observe que a saída da consultaJOINacima é a mesma da consultadictGetacima (exceto porque os valoresUnknownnão estão incluídos). Nos bastidores, o ClickHouse está, na verdade, chamando a funçãodictGetpara o dicionáriotaxi_zone_dictionary, mas a sintaxeJOINé mais familiar para desenvolvedores SQL. -
Esta consulta retorna as linhas das 1000 viagens com o maior valor
de gorjeta e, em seguida, faz um inner join entre cada linha e o dicionário:
Em geral, evitamos usar
SELECT * no PostgreSQL e no ClickHouse. Você
deve recuperar apenas as colunas de que realmente precisa.