Pular para o conteúdo principal
Este conjunto de dados foi criado pela New York Public Library. Ele contém dados históricos sobre os cardápios de hotéis, restaurantes e cafés, com os pratos e seus respectivos preços. Fonte: http://menus.nypl.org/data Os dados são de domínio público. Os dados vêm do acervo da biblioteca e podem estar incompletos, além de serem difíceis de usar em análises estatísticas. Ainda assim, também dão água na boca. São apenas 1,3 milhão de registros sobre pratos em cardápios — um volume de dados muito pequeno para o ClickHouse, mas ainda assim um bom exemplo.

Baixe o conjunto de dados

Execute o comando:
Substitua o link pelo link atualizado de http://menus.nypl.org/data, se necessário. O download tem cerca de 35 MB.

Descompacte o dataset

O tamanho não comprimido é de cerca de 150 MB. Os dados são normalizados e consistem em quatro tabelas:
  • Menu — Informações sobre os menus: o nome do restaurante, a data em que o menu foi visto etc.
  • Dish — Informações sobre os pratos: o nome do prato junto com algumas características.
  • MenuPage — Informações sobre as páginas dos menus, pois cada página pertence a algum menu.
  • MenuItem — Um item do menu. Um prato com seu preço em uma determinada página do menu: com referências ao prato e à página do menu.

Crie as tabelas

Usamos o tipo de dado Decimal para armazenar preços.

Importar os dados

Para enviar os dados ao ClickHouse, execute:
Usamos o formato CSVWithNames, pois os dados estão em CSV com cabeçalho. Desativamos format_csv_allow_single_quotes, pois apenas aspas duplas são usadas nos campos de dados, e aspas simples podem aparecer dentro dos valores sem confundir o parser de CSV. Desativamos input_format_null_as_default, pois nossos dados não contêm NULL. Caso contrário, o ClickHouse tentará analisar sequências \N e poderá confundi-las com \ nos dados. A configuração date_time_input_format best_effort permite analisar campos DateTime em uma grande variedade de formatos. Por exemplo, ISO-8601 sem segundos, como ‘2000-01-01 01:02’, será reconhecido. Sem essa configuração, apenas o formato fixo de DateTime é aceito.

Desnormalize os dados

Os dados são apresentados em várias tabelas em forma normalizada. Isso significa que você precisa fazer JOIN se quiser consultar, por exemplo, nomes de pratos a partir de itens do menu. Para tarefas analíticas típicas, é muito mais eficiente trabalhar com dados já combinados por JOIN para evitar fazer JOIN toda vez. Isso é chamado de dados “desnormalizados”. Criaremos uma tabela menu_item_denorm que conterá todos os dados combinados com JOIN:

Verifique os dados

Query
Response

Execute algumas consultas

Preços médios históricos dos pratos

Query
Response
Considere isso com ressalvas.

Preços de hambúrgueres

Query
Response

Vodca

Query
Response
Para encontrar vodka, temos que escrever ILIKE '%vodka%' — e isso certamente chama atenção.

Caviar

Vamos exibir os preços do caviar. Também vamos exibir o nome de algum prato com caviar.
Query
Response
Pelo menos eles têm caviar com vodca. Muito bom.

Playground online

Os dados são carregados no ClickHouse playground, exemplo.
Última modificação em 2 de julho de 2026