Saltar al contenido principal
El conjunto de datos fue creado por la New York Public Library. Contiene datos históricos sobre los menús de hoteles, restaurantes y cafés, con los platos y sus precios. Fuente: http://menus.nypl.org/data Los datos son de dominio público. Los datos proceden del archivo de la biblioteca y pueden estar incompletos y resultar difíciles de analizar estadísticamente. No obstante, también son muy apetitosos. Su tamaño es de solo 1,3 millones de registros de platos en menús: un volumen de datos muy pequeño para ClickHouse, pero que aun así es un buen ejemplo.

Descarga el conjunto de datos

Ejecuta el comando:
Sustituye el enlace por el enlace actualizado de http://menus.nypl.org/data, si es necesario. El tamaño de la descarga es de aproximadamente 35 MB.

Desempaqueta el conjunto de datos

El tamaño sin comprimir es de aproximadamente 150 MB. Los datos están normalizados y constan de cuatro tablas:
  • Menu — Información sobre los menús: el nombre del restaurante, la fecha en la que se vio el menú, etc.
  • Dish — Información sobre los platos: el nombre del plato junto con algunas de sus características.
  • MenuPage — Información sobre las páginas de los menús, ya que cada página pertenece a algún menú.
  • MenuItem — Un elemento del menú. Un plato junto con su precio en alguna página del menú: enlaces al plato y a la página del menú.

Crear las tablas

Usamos el tipo de dato Decimal para almacenar precios.

Importar los datos

Para importar datos en ClickHouse, ejecuta:
Usamos el formato CSVWithNames porque los datos se representan como un CSV con encabezado. Deshabilitamos format_csv_allow_single_quotes porque solo se usan comillas dobles para los campos de datos, y las comillas simples pueden aparecer dentro de los valores y no deberían confundir al analizador de CSV. Deshabilitamos input_format_null_as_default porque nuestros datos no contienen NULL. De lo contrario, ClickHouse intentará interpretar secuencias \N y puede confundirlas con \ en los datos. La configuración date_time_input_format best_effort permite interpretar campos DateTime en una amplia variedad de formatos. Por ejemplo, reconocerá ISO-8601 sin segundos, como ‘2000-01-01 01:02’. Sin esta configuración, solo se permite el formato fijo de DateTime.

Desnormalizar los datos

Los datos se presentan en varias tablas en forma normalizada. Esto significa que debes realizar un JOIN si quieres consultar, por ejemplo, los nombres de los platos a partir de los elementos del menú. Para las tareas analíticas típicas, es mucho más eficiente trabajar con datos combinados previamente mediante JOIN para evitar ejecutar un JOIN cada vez. A esto se le llama datos “desnormalizados”. Crearemos una tabla menu_item_denorm que contendrá todos los datos combinados mediante JOIN:

Validar los datos

Query
Response

Ejecutar algunas consultas

Precios medios históricos de los platos

Query
Response
Tómalo con pinzas.

Precios de las hamburguesas

Query
Response

Vodka

Query
Response
Para obtener vodka, tenemos que escribir ILIKE '%vodka%', y eso sin duda llama la atención.

Caviar

Veamos los precios del caviar. También veamos el nombre de algún plato con caviar.
Query
Response
Al menos tienen caviar con vodka. Muy bien.

Playground en línea

Los datos se han subido a ClickHouse Playground, ejemplo.
Última modificación el 2 de julio de 2026