From a6a4b21262cc0cb9f70c9c2c62a7ec48de96cc0b Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Thu, 10 Sep 2026 21:27:04 +0200 Subject: [PATCH 01/12] Keep sidebars on localized custom pages --- src/pages/[locale]/[...slug].astro | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/pages/[locale]/[...slug].astro b/src/pages/[locale]/[...slug].astro index e50413cac..9200e6bd9 100644 --- a/src/pages/[locale]/[...slug].astro +++ b/src/pages/[locale]/[...slug].astro @@ -101,7 +101,12 @@ const { sidebar: sidebarOn, tableOfContents: tocOn } = await getRouteFlags(entry // Locale rail: from the locale's generated navigation (labels and // // links), falling back to the English tree when a locale file is absent. const navItems = loadGeneratedNavigation(localeParam).items; -const sidebar = sidebarOn ? buildRailFromConfig(navItems, browserPath, [localeParam]) : false; +// Nimbus treats `custom` as a full-canvas route and disables its sidebar. +// Mintlify customizes only the center content for pages such as the +// quickstarts explorer, so keep the normal documentation rail there. +const sidebar = sidebarOn || entry.data.mode === "custom" + ? buildRailFromConfig(navItems, browserPath, [localeParam]) + : false; const sections = sectionsFromConfig(navItems, browserPath); const prevNext = await getPrevNext(browserPath, { sidebarTree: sidebar === false ? [] : sidebar, @@ -120,7 +125,9 @@ const tocMax = (entry.data as { toc_max_heading_level?: number }).toc_max_headin const effectiveTocConfig = tocConfig === false ? false : tocMax ? { minHeadingLevel: 2, maxHeadingLevel: Math.max(2, Math.min(6, tocMax)) } : tocConfig; const toc = tocOn && effectiveTocConfig !== false ? getTOC(headings, effectiveTocConfig) : false; -const layoutMode = entry.data.mode === "custom" ? "custom" : "doc"; +const layoutMode = entry.data.mode === "custom" || entry.data.mode === "wide" + ? entry.data.mode + : "doc"; const data = entry.data as { title?: string; sidebarTitle?: string }; const pageTitle = data.title ?? data.sidebarTitle ?? entry.id.split("/").pop() ?? entry.id; const markdownUrl = Astro.site From 52d94126185fd7530cb0139fc87cb3952b77064e Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Thu, 10 Sep 2026 21:37:53 +0200 Subject: [PATCH 02/12] Restore Spanish support center translations Reported at https://clickhouse-docs-dpkjhqq26-clickhouse.vercel.app/docs/es/resources/support-center/home --- _site/scripts/update_kb.py | 60 +- .../es/components/KBExplorer/KBExplorer.jsx | 6 +- snippets/es/components/KBExplorer/kb-data.jsx | 2503 +++++++++-------- 3 files changed, 1435 insertions(+), 1134 deletions(-) diff --git a/_site/scripts/update_kb.py b/_site/scripts/update_kb.py index 43950a816..98802edb0 100644 --- a/_site/scripts/update_kb.py +++ b/_site/scripts/update_kb.py @@ -17,10 +17,12 @@ Usage: python _site/scripts/update_kb.py + python _site/scripts/update_kb.py --locale es """ -import re +import argparse import json +import re from pathlib import Path from typing import Dict, Any, Tuple @@ -44,6 +46,27 @@ 'general-faqs': 'General & FAQs', } +# Category names are structural metadata rather than article frontmatter, so +# localized indexes need an explicit label for each knowledge-base directory. +LOCALIZED_CATEGORY_LABELS = { + 'es': { + 'performance-optimization': 'Rendimiento y optimización', + 'cloud-services': 'Cloud', + 'data-import-export': 'Importación y exportación de datos', + 'configuration-settings': 'Configuración y ajustes', + 'integrations': 'Integraciones y bibliotecas de cliente', + 'troubleshooting': 'Resolución de problemas y errores', + 'tables-schema': 'Tablas y esquema', + 'queries-sql': 'Consultas y SQL', + 'materialized-views': 'Vistas materializadas y proyecciones', + 'monitoring-debugging': 'Monitorización y depuración', + 'security': 'Seguridad y control de acceso', + 'data-management': 'Gestión de datos', + 'setup-installation': 'Configuración e instalación', + 'general-faqs': 'General y preguntas frecuentes', + }, +} + def parse_frontmatter(content: str) -> Dict[str, Any]: """Parse simple YAML frontmatter (key: value and inline [arrays]).""" match = re.match(r'^---\s*\n(.*?)\n---\s*\n', content, re.DOTALL) @@ -79,7 +102,7 @@ def is_article(frontmatter: Dict[str, Any], file_path: Path) -> bool: return bool(frontmatter.get('title')) -def extract_article(file_path: Path, kb_dir: Path) -> Dict[str, Any]: +def extract_article(file_path: Path, kb_dir: Path, locale: str) -> Dict[str, Any]: """Extract a single article's index entry from its MDX file.""" content = file_path.read_text(encoding='utf-8') frontmatter = parse_frontmatter(content) @@ -92,12 +115,15 @@ def extract_article(file_path: Path, kb_dir: Path) -> Dict[str, Any]: if isinstance(tags, str): tags = [tags] if tags else [] + category_labels = LOCALIZED_CATEGORY_LABELS.get(locale, CATEGORY_LABELS) + locale_prefix = '' if locale == 'en' else f'/{locale}' + return { 'id': article_id, 'title': frontmatter.get('title', ''), 'description': frontmatter.get('description', ''), - 'href': '/resources/support-center/knowledge-base/' + article_id, - 'category': CATEGORY_LABELS.get( + 'href': locale_prefix + '/resources/support-center/knowledge-base/' + article_id, + 'category': category_labels.get( category_slug, category_slug.replace('-', ' ').title() ), @@ -105,7 +131,7 @@ def extract_article(file_path: Path, kb_dir: Path) -> Dict[str, Any]: } -def build_index(kb_dir: Path) -> Tuple[Dict[str, Any], int]: +def build_index(kb_dir: Path, locale: str = 'en') -> Tuple[Dict[str, Any], int]: files = [] for file_path in kb_dir.glob('**/*.mdx'): # Skip files in underscore-prefixed directories (assets/partials). @@ -121,7 +147,7 @@ def build_index(kb_dir: Path) -> Tuple[Dict[str, Any], int]: if not is_article(frontmatter, file_path): skipped += 1 continue - articles.append(extract_article(file_path, kb_dir)) + articles.append(extract_article(file_path, kb_dir, locale)) articles.sort(key=lambda a: a['title'].lower()) @@ -148,16 +174,28 @@ def render_module(index: Dict[str, Any]) -> str: def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument( + '--locale', + default='en', + help="Locale to generate (default: en)", + ) + args = parser.parse_args() + project_root = Path(__file__).resolve().parents[2] - kb_dir = project_root / 'resources' / 'support-center' / 'knowledge-base' - output_path = (project_root / 'snippets' / 'components' / 'KBExplorer' - / 'kb-data.jsx') + locale = args.locale + locale_root = project_root if locale == 'en' else project_root / locale + kb_dir = locale_root / 'resources' / 'support-center' / 'knowledge-base' + snippets_root = project_root / 'snippets' + if locale != 'en': + snippets_root /= locale + output_path = snippets_root / 'components' / 'KBExplorer' / 'kb-data.jsx' if not kb_dir.exists(): print(f"Error: knowledge-base directory not found: {kb_dir}") return 1 - index, skipped = build_index(kb_dir) + index, skipped = build_index(kb_dir, locale) output_path.parent.mkdir(parents=True, exist_ok=True) output_path.write_text(render_module(index), encoding='utf-8') @@ -168,4 +206,4 @@ def main() -> int: if __name__ == '__main__': - raise SystemExit(main()) \ No newline at end of file + raise SystemExit(main()) diff --git a/snippets/es/components/KBExplorer/KBExplorer.jsx b/snippets/es/components/KBExplorer/KBExplorer.jsx index 261b931cc..441a0e149 100644 --- a/snippets/es/components/KBExplorer/KBExplorer.jsx +++ b/snippets/es/components/KBExplorer/KBExplorer.jsx @@ -177,7 +177,7 @@ export const KBExplorer = ({ index, featured = [] }) => { )} - {option} + {option === "All" ? "Todos" : option} ))} @@ -298,7 +298,7 @@ export const KBExplorer = ({ index, featured = [] }) => {
{
) -} \ No newline at end of file +} diff --git a/snippets/es/components/KBExplorer/kb-data.jsx b/snippets/es/components/KBExplorer/kb-data.jsx index 3199c21ae..1b3353bda 100644 --- a/snippets/es/components/KBExplorer/kb-data.jsx +++ b/snippets/es/components/KBExplorer/kb-data.jsx @@ -1,1128 +1,1391 @@ +// AUTO-GENERATED by _site/scripts/update_kb.py — do not edit by hand. +// Re-run the script to refresh the knowledge-base index. export const kbIndex = { - categories: [ + "categories": [ "Cloud", - "Configuration & settings", - "Data import & export", - "Data management", - "General & FAQs", - "Integrations & client libraries", - "Materialized views & projections", - "Monitoring & debugging", - "Performance & optimization", - "Queries & SQL", - "Security & access control", - "Setup & installation", - "Tables & schema", - "Troubleshooting & errors" + "Configuración e instalación", + "Configuración y ajustes", + "Consultas y SQL", + "General y preguntas frecuentes", + "Gestión de datos", + "Importación y exportación de datos", + "Integraciones y bibliotecas de cliente", + "Monitorización y depuración", + "Rendimiento y optimización", + "Resolución de problemas y errores", + "Seguridad y control de acceso", + "Tablas y esquema", + "Vistas materializadas y proyecciones" ], - tags: [ - "Best Practices", - "Community", - "Concepts", - "Core Data Concepts", - "Data Export", - "Data Formats", - "Data Ingestion", - "Data Modelling", - "Data Sources", - "Deployments and Scaling", - "Errors and Exceptions", - "Functions", - "Language Clients", - "Managing Cloud", - "Managing Data", - "Native Clients and Interfaces", - "Performance and Optimizations", + "tags": [ + "Administración de Cloud", + "Administración de servidores", + "Administración del servidor", + "Casos de uso", + "Clientes de lenguaje", + "Clientes e interfaces nativos", + "Clientes nativos e interfaces", + "Comunidad", + "Conceptos", + "Conceptos básicos de datos", + "Conceptos fundamentales de datos", + "Conceptos fundamentales de los datos", + "Configuración", + "Errores y excepciones", + "Exportación de datos", + "Formatos de datos", + "Fuentes de datos", + "Funciones", + "Gestión de Cloud", + "Gestión de datos", + "Herramientas y utilidades", + "Implementaciones y escalado", + "Ingestión de datos", + "Modelado de datos", + "Rendimiento y optimizaciones", + "Rendimiento y optimización", "Runbooks", - "Security and Authentication", - "Server Admin", + "SETTING", + "Seguridad y autenticación", "Settings", - "System Tables", - "Tools and Utilities", - "Troubleshooting", - "Use Cases" + "Solución de problemas", + "Tablas del sistema", + "buenas prácticas" ], - articles: [ - { - id: "integrations/python-clickhouse-connect-example", - title: "A Python client working example for connecting to ClickHouse Cloud service", - description: "Learn how to connect to ClickHouse Cloud Service using Python with a step-by-step example using the clickhouse-connect driver.", - href: "/es/resources/support-center/knowledge-base/integrations/python-clickhouse-connect-example", - category: "Integrations & client libraries", - tags: ["Language Clients"] - }, - { - id: "configuration-settings/about-quotas-and-query-complexity", - title: "About quotas and query complexity", - description: - "Quotas and Query Complexity are powerful ways to limit and restrict what users can do in ClickHouse. This KB article shows examples on how to apply these two different approaches.", - href: "/es/resources/support-center/knowledge-base/configuration-settings/about-quotas-and-query-complexity", - category: "Configuration & settings", - tags: ["Managing Cloud"] - }, - { - id: "data-import-export/achieving-atomic-inserts", - title: "Achieving atomic inserts and multi-table consistency in ClickHouse Cloud", - description: "How to load data atomically and keep multiple tables consistent in ClickHouse Cloud without multi-statement transactions, using staging tables and partition-level operations.", - href: "/es/resources/support-center/knowledge-base/data-import-export/achieving-atomic-inserts", - category: "Data import & export", - tags: ["Data Ingestion", "Best Practices"] - }, - { - id: "tables-schema/add-column", - title: "Adding a column to a table", - description: "In this guide, we'll learn how to add a column to an existing table.", - href: "/es/resources/support-center/knowledge-base/tables-schema/add-column", - category: "Tables & schema", - tags: ["Data Modelling"] - }, - { - id: "configuration-settings/alter-user-settings-exception", - title: "Alter user settings exception", - description: "Handing the an exception thrown when altering user settings", - href: "/es/resources/support-center/knowledge-base/configuration-settings/alter-user-settings-exception", - category: "Configuration & settings", - tags: ["Settings", "Errors and Exceptions"] - }, - { - id: "materialized-views/are-materialized-views-inserted-asynchronously", - title: "Are Materialized Views inserted synchronously?", - description: "This KB article explores whether Materialized Views are inserted synchronously", - href: "/es/resources/support-center/knowledge-base/materialized-views/are-materialized-views-inserted-asynchronously", - category: "Materialized views & projections", - tags: ["Data Modelling"] - }, - { - id: "cloud-services/aws-privatelink-setup-for-msk-clickpipes", - title: "AWS PrivateLink setup to expose MSK for ClickPipes", - description: "Setup steps to expose a private MSK via MSK multi-VPC connectivity to ClickPipes.", - href: "/es/resources/support-center/knowledge-base/cloud-services/aws-privatelink-setup-for-msk-clickpipes", - category: "Cloud", - tags: ["Security and Authentication", "Managing Cloud"] - }, - { - id: "cloud-services/aws-privatelink-setup-for-clickpipes", - title: "AWS PrivateLink setup to expose private RDS for ClickPipes", - description: "Setup steps to expose a private RDS via AWS PrivateLink to ClickPipes.", - href: "/es/resources/support-center/knowledge-base/cloud-services/aws-privatelink-setup-for-clickpipes", - category: "Cloud", - tags: ["Security and Authentication", "Managing Cloud"] - }, - { - id: "cloud-services/aws-privatelink-vpc-endpoint-service-for-msk-cluster", - title: "Servicio de endpoint VPC de AWS PrivateLink para clúster MSK", - description: "Pasos de configuración para exponer un clúster MSK a ClickPipes mediante los servicios de endpoint VPC de AWS PrivateLink.", - href: "/es/resources/support-center/knowledge-base/cloud-services/aws-privatelink-vpc-endpoint-service-for-msk-cluster", - category: "Cloud", - tags: ["Security and Authentication", "Managing Cloud"] - }, - { - id: "data-management/backing-up-a-specific-partition", - title: "Backing up a specific partition", - description: "How can I backup a specific partition in ClickHouse?", - href: "/es/resources/support-center/knowledge-base/data-management/backing-up-a-specific-partition", - category: "Data management", - tags: ["Managing Data"] - }, - { - id: "general-faqs/key-value", - title: "Can I use ClickHouse as a key-value storage?", - description: "Answers the frequently asked question of whether or not ClickHouse can be used as a key-value storage?", - href: "/es/resources/support-center/knowledge-base/general-faqs/key-value", - category: "General & FAQs", - tags: [] - }, - { - id: "general-faqs/time-series", - title: "Can I use ClickHouse as a time-series database?", - description: "Page describing how to use ClickHouse as a time-series database", - href: "/es/resources/support-center/knowledge-base/general-faqs/time-series", - category: "General & FAQs", - tags: [] - }, - { - id: "queries-sql/pivot", - title: "Can you PIVOT in ClickHouse?", - description: - "ClickHouse doesn't have a PIVOT clause, but we can get close to this functionality using aggregate function combinators. Let's see how to do this using the UK housing prices dataset.", - href: "/es/resources/support-center/knowledge-base/queries-sql/pivot", - category: "Queries & SQL", - tags: ["Data Modelling", "Core Data Concepts"] - }, - { - id: "general-faqs/vector-search", - title: "Can you use ClickHouse for vector search?", - description: "Learn how to use ClickHouse for vector search, including storing embeddings and searching with distance functions like cosine similarity.", - href: "/es/resources/support-center/knowledge-base/general-faqs/vector-search", - category: "General & FAQs", - tags: ["Use Cases", "Concepts"] - }, - { - id: "monitoring-debugging/send-logs-level", - title: "Capturing server logs of queries at the client", - description: "Learn how to capture server logs at the client level, even with different log settings, using the `send_logs_level` client setting.", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/send-logs-level", - category: "Monitoring & debugging", - tags: ["Server Admin"] - }, - { - id: "configuration-settings/change-the-prompt-in-clickhouse-client", - title: "Change the prompt in clickhouse-client", - description: "Este artículo explica cómo cambiar el prompt de :) a un prefijo seguido de :) en la ventana de terminal de su cliente de ClickHouse y de clickhouse-local", - href: "/es/resources/support-center/knowledge-base/configuration-settings/change-the-prompt-in-clickhouse-client", - category: "Configuration & settings", - tags: ["Settings", "Native Clients and Interfaces"] - }, - { - id: "security/common-rbac-queries", - title: "Consultas RBAC comunes", - description: "Consultas para ayudar a otorgar permisos específicos a los usuarios.", - href: "/es/resources/support-center/knowledge-base/security/common-rbac-queries", - category: "Seguridad y control de acceso", - tags: ["Security and Authentication", "Managing Cloud"] - }, - { - id: "queries-sql/comparing-metrics-between-queries", - title: "Comparación de métricas entre consultas en decibelios", - description: "Una consulta para comparar métricas entre dos consultas en ClickHouse.", - href: "/es/resources/support-center/knowledge-base/queries-sql/comparing-metrics-between-queries", - category: "Queries & SQL", - tags: ["Performance and Optimizations"] - }, - { - id: "troubleshooting/configure-cap-ipc-lock-and-cap-sys-nice-in-docker", - title: "Configuración de las capacidades CAP_IPC_LOCK y CAP_SYS_NICE en Docker", - description: "Aprenda a resolver las advertencias de capacidad de Docker para `CAP_IPC_LOCK` y `CAP_SYS_NICE` al ejecutar ClickHouse en un contenedor.", - href: "/es/resources/support-center/knowledge-base/troubleshooting/configure-cap-ipc-lock-and-cap-sys-nice-in-docker", - category: "Solución de problemas y errores", - tags: ["Errors and Exceptions"] - }, - { - id: "cloud-services/confluent-cloud-private-connectivity-for-clickpipes", - title: "Conectividad privada de Confluent Cloud para ClickPipes", - description: "Cómo conectar ClickPipes a un clúster de Kafka de Confluent Cloud existente mediante AWS PrivateLink o GCP Private Service Connect.", - href: "/es/resources/support-center/knowledge-base/cloud-services/confluent-cloud-private-connectivity-for-clickpipes", - category: "Cloud", - tags: ["Security and Authentication", "Managing Cloud"] - }, - { - id: "cloud-services/custom-dns-alias-for-instance", - title: "Crear un alias DNS personalizado configurando un proxy inverso", - description: "Aprenda a configurar un alias DNS personalizado para su instancia usando un proxy inverso", - href: "/es/resources/support-center/knowledge-base/cloud-services/custom-dns-alias-for-instance", - category: "Cloud", - tags: ["Server Admin", "Security and Authentication"] - }, - { - id: "troubleshooting/part-intersects-previous-part", - title: "DB::Exception: Part XXXXX intersects previous part YYYYY. It is a bug or a result of manual intervention in the ZooKeeper data.", - description: - "Este artículo explica cómo resolver el error DB::Exception relacionado con partes que se intersectan en ClickHouse, generalmente causado por una condición de carrera o intervención manual en los datos de ZooKeeper.", - href: "/es/resources/support-center/knowledge-base/troubleshooting/part-intersects-previous-part", - category: "Solución de problemas y errores", - tags: ["Errors and Exceptions", "System Tables"] - }, - { - id: "setup-installation/difference-between-official-builds-and-3rd-party", - title: "Diferencias entre las compilaciones oficiales y de terceros de ClickHouse", - description: "Comprenda las diferencias clave entre las compilaciones oficiales de ClickHouse y las de terceros, incluidas actualizaciones, compatibilidad y consideraciones de seguridad.", - href: "/es/resources/support-center/knowledge-base/setup-installation/difference-between-official-builds-and-3rd-party", - category: "Configuración e instalación", - tags: ["Concepts"] - }, - { - id: "general-faqs/cost-based", - title: "¿Tiene ClickHouse un optimizador basado en costos?", - description: "ClickHouse cuenta con ciertos mecanismos de optimización basados en costos", - href: "/es/resources/support-center/knowledge-base/general-faqs/cost-based", - category: "General & FAQs", - tags: [] - }, - { - id: "general-faqs/datalake", - title: "¿ClickHouse admite lagos de datos?", - description: "ClickHouse admite lagos de datos, incluidos Iceberg, Delta Lake, Apache Hudi, Apache Paimon, Hive", - href: "/es/resources/support-center/knowledge-base/general-faqs/datalake", - category: "General & FAQs", - tags: [] - }, - { - id: "general-faqs/distributed-join", - title: "¿ClickHouse admite JOIN distribuido?", - description: "ClickHouse admite JOIN distribuido", - href: "/es/resources/support-center/knowledge-base/general-faqs/distributed-join", - category: "General & FAQs", - tags: [] - }, - { - id: "general-faqs/federated", - title: "¿ClickHouse admite consultas federadas?", - description: "ClickHouse admite una amplia gama de consultas federadas e híbridas", - href: "/es/resources/support-center/knowledge-base/general-faqs/federated", - category: "General & FAQs", - tags: [] - }, - { - id: "general-faqs/concurrency", - title: "¿ClickHouse admite consultas frecuentes y concurrentes?", - description: "ClickHouse admite alto QPS y alta concurrencia", - href: "/es/resources/support-center/knowledge-base/general-faqs/concurrency", - category: "General & FAQs", - tags: [] - }, - { - id: "cloud-services/multi-region-replication", - title: "¿ClickHouse admite replicación multirregión?", - description: "Esta página responde si ClickHouse admite replicación multirregión", - href: "/es/resources/support-center/knowledge-base/cloud-services/multi-region-replication", - category: "Cloud", - tags: [] - }, - { - id: "general-faqs/updates", - title: "¿ClickHouse admite actualizaciones en tiempo real?", - description: "ClickHouse admite actualizaciones en tiempo real ligeras", - href: "/es/resources/support-center/knowledge-base/general-faqs/updates", - category: "General & FAQs", - tags: [] - }, - { - id: "security/row-column-policy", - title: "¿ClickHouse admite seguridad a nivel de fila y columna?", - description: "Conozca las restricciones de acceso a nivel de fila y columna en ClickHouse y ClickHouse Cloud, y cómo implementar el control de acceso basado en roles (RBAC) con políticas.", - href: "/es/resources/support-center/knowledge-base/security/row-column-policy", - category: "Seguridad y control de acceso", - tags: ["Security and Authentication"] - }, - { - id: "cloud-services/execute-system-queries-in-cloud", - title: "Ejecutar sentencias SYSTEM en todos los nodos de ClickHouse Cloud", - description: "Aprenda a usar `ON CLUSTER` y `clusterAllReplicas` para ejecutar sentencias y consultas SYSTEM en todos los nodos de un servicio de ClickHouse Cloud.", - href: "/es/resources/support-center/knowledge-base/cloud-services/execute-system-queries-in-cloud", - category: "Cloud", - tags: ["Deployments and Scaling"] - }, - { - id: "troubleshooting/count-parts-by-type", - title: "Encontrar recuentos y tamaños de partes amplias o compactas", - description: "Este artículo de la base de conocimientos le muestra cómo encontrar recuentos de partes según el tipo de parte: amplia o compacta.", - href: "/es/resources/support-center/knowledge-base/troubleshooting/count-parts-by-type", - category: "Solución de problemas y errores", - tags: ["Troubleshooting"] - }, - { - id: "troubleshooting/fix-developer-verification-error-in-macos", - title: "Corregir el error de verificación del desarrollador en macOS", - description: "Aprenda a resolver el error de verificación del desarrollador de macOS al ejecutar comandos de ClickHouse, usando la Configuración del sistema o el terminal.", - href: "/es/resources/support-center/knowledge-base/troubleshooting/fix-developer-verification-error-in-macos", - category: "Solución de problemas y errores", - tags: ["Errors and Exceptions"] - }, - { - id: "data-import-export/s3-export-data-year-month-folders", - title: "¿Cómo puedo realizar escrituras particionadas por año y mes en S3?", - description: "Aprenda a escribir datos particionados por año y mes en un bucket de S3 en ClickHouse, usando una estructura de ruta personalizada para organizar los datos.", - href: "/es/resources/support-center/knowledge-base/data-import-export/s3-export-data-year-month-folders", - category: "Data import & export", - tags: ["Data Export", "Native Clients and Interfaces"] - }, - { - id: "data-import-export/kafka-clickhouse-json", - title: "¿Cómo usar el nuevo tipo de dato JSON con Kafka?", - description: "Learn how to load JSON messages from Apache Kafka directly into a single JSON column in ClickHouse using the Kafka table engine and JSON data type.", - href: "/es/resources/support-center/knowledge-base/data-import-export/kafka-clickhouse-json", - category: "Data import & export", - tags: ["Data Formats", "Data Ingestion"] - }, - { - id: "cloud-services/change-billing-email", - title: "¿Cómo cambio mi contacto de facturación en ClickHouse Cloud?", - description: "Let's learn how to change your billing address in ClickHouse Cloud.", - href: "/es/resources/support-center/knowledge-base/cloud-services/change-billing-email", - category: "Cloud", - tags: ["Managing Cloud"] - }, - { - id: "general-faqs/how-do-i-contribute-code-to-clickhouse", - title: "How do I contribute code to ClickHouse?", - description: "ClickHouse is an open-source project developed on GitHub. As customary, contribution instructions are published in CONTRIBUTING file in the root of the source code repository.", - href: "/es/resources/support-center/knowledge-base/general-faqs/how-do-i-contribute-code-to-clickhouse", - category: "General & FAQs", - tags: ["Community"] - }, - { - id: "data-import-export/parquet-to-csv-json", - title: "¿Cómo convierto archivos de Parquet a CSV o JSON?", - description: "Learn how to use ClickHouse's `clickhouse-local` tool to easily convert Parquet files to CSV or JSON formats.", - href: "/es/resources/support-center/knowledge-base/data-import-export/parquet-to-csv-json", - category: "Data import & export", - tags: ["Data Sources", "Data Formats"] - }, - { - id: "data-import-export/mysql-to-parquet-csv-json", - title: "¿Cómo exporto datos de MySQL a Parquet, CSV o JSON usando ClickHouse?", - description: "Learn how to use the `clickhouse-local` tool to export MySQL data into formats like Parquet, CSV, or JSON quickly and efficiently.", - href: "/es/resources/support-center/knowledge-base/data-import-export/mysql-to-parquet-csv-json", - category: "Data import & export", - tags: ["Data Formats", "Data Export"] - }, - { - id: "data-import-export/postgresql-to-parquet-csv-json", - title: "How do I export PostgreSQL data to Parquet, CSV or JSON?", - description: "Learn how to export PostgreSQL data to Parquet, CSV, or JSON formats using `clickhouse-local` with various examples.", - href: "/es/resources/support-center/knowledge-base/data-import-export/postgresql-to-parquet-csv-json", - category: "Data import & export", - tags: ["Data Export", "Data Formats"] - }, - { - id: "setup-installation/install-clickhouse-windows10", - title: "¿Cómo instalo ClickHouse en Windows 10?", - description: "Learn how to install and test ClickHouse on Windows 10 using WSL 2. Includes setup, troubleshooting, and running a test environment.", - href: "/es/resources/support-center/knowledge-base/setup-installation/install-clickhouse-windows10", - category: "Configuración e instalación", - tags: ["Tools and Utilities"] - }, - { - id: "security/remove-default-user", - title: "How do I remove the default user?", - description: "Learn how to remove the default user when running ClickHouse Server.", - href: "/es/resources/support-center/knowledge-base/security/remove-default-user", - category: "Seguridad y control de acceso", - tags: ["Server Admin"] - }, - { - id: "cloud-services/ingest-failures-23-9-release", - title: "¿Cómo resuelvo los fallos de ingesta tras la versión 23.9 de ClickHouse?", - description: "Learn how to resolve ingest failures caused by stricter grant checking introduced in ClickHouse 23.9 for tables using `async_inserts`. Update grants to fix errors.", - href: "/es/resources/support-center/knowledge-base/cloud-services/ingest-failures-23-9-release", - category: "Cloud", - tags: ["Errors and Exceptions"] - }, - { - id: "performance-optimization/insert-select-settings-tuning", - title: "How do I solve TOO MANY PARTS error during an INSERT...SELECT?", - description: "Resolve the TOO_MANY_PARTS error in ClickHouse during an `INSERT...SELECT` by tuning expert-level settings for larger blocks and increasing partition thresholds.", - href: "/es/resources/support-center/knowledge-base/performance-optimization/insert-select-settings-tuning", - category: "Performance & optimization", - tags: ["Settings", "Errors and Exceptions"] - }, - { - id: "integrations/node-js-example", - title: "How do I use NodeJS with @clickhouse/client", - description: "Learn how to use @clickhouse/client in a Node.js application to interact with ClickHouse and perform queries.", - href: "/es/resources/support-center/knowledge-base/integrations/node-js-example", - category: "Integrations & client libraries", - tags: ["Language Clients"] - }, - { - id: "monitoring-debugging/view-number-of-active-mutations", - title: "How do I view the number of active or queued mutations?", - description: - "Monitor the number of active or queued mutations in ClickHouse, especially when performing `ALTER` or `UPDATE` operations. Use the `system.mutations` table for tracking mutations.", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/view-number-of-active-mutations", - category: "Monitoring & debugging", - tags: ["System Tables"] - }, - { - id: "data-management/read-consistency", - title: "How to achieve data read consistency in ClickHouse?", - description: "Learn how to ensure data consistency when reading from ClickHouse, whether you're connected to the same node or a random node.", - href: "/es/resources/support-center/knowledge-base/data-management/read-consistency", - category: "Data management", - tags: ["Performance and Optimizations"] - }, - { - id: "setup-installation/llvm-clang-up-to-date", - title: "How to build LLVM and clang on Linux", - description: "Commands to build LLVM and clang on Linux.", - href: "/es/resources/support-center/knowledge-base/setup-installation/llvm-clang-up-to-date", - category: "Configuración e instalación", - tags: ["Community", "Tools and Utilities"] - }, - { - id: "data-management/calculate-ratio-of-zero-sparse-serialization", - title: "How to calculate the ratio of empty/zero values in every column in a table", - description: "Learn how to calculate the ratio of empty or zero values in every column of a ClickHouse table to optimize sparse column serialization.", - href: "/es/resources/support-center/knowledge-base/data-management/calculate-ratio-of-zero-sparse-serialization", - category: "Data management", - tags: ["Performance and Optimizations"] - }, - { - id: "security/check-users-roles", - title: "How to Check Users Assigned to Roles and Vice Versa", - description: "Learn how to query ClickHouse's `system.role_grants` to find users assigned to roles and roles assigned to specific users.", - href: "/es/resources/support-center/knowledge-base/security/check-users-roles", - category: "Seguridad y control de acceso", - tags: ["Server Admin", "System Tables", "Managing Cloud"] - }, - { - id: "monitoring-debugging/which-processes-are-currently-running", - title: "How to check what code is currently running on a server?", - description: - "ClickHouse provides introspection tools like `system.stack_trace` for inspecting what code is currently running on each server thread, helping with debugging and performance monitoring.", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/which-processes-are-currently-running", - category: "Monitoring & debugging", - tags: ["Server Admin"] - }, - { - id: "cloud-services/how-to-check-my-clickhouse-cloud-sevice-state", - title: "Cómo verificar el estado de tu servicio de ClickHouse Cloud", - description: "Learn how to use the ClickHouse Cloud API to check if your service is stopped, idle, or running without waking it up.", - href: "/es/resources/support-center/knowledge-base/cloud-services/how-to-check-my-clickhouse-cloud-sevice-state", - category: "Cloud", - tags: ["Managing Cloud"] - }, - { - id: "monitoring-debugging/collect-and-draw-traces", - title: "Cómo recopilar y representar una traza de consulta", - description: - "Esta guía muestra cómo recopilar y visualizar trazas de consultas en ClickHouse autogestionado mediante métodos integrados o usando Grafana. Resulta especialmente útil cuando se trabaja con consultas complejas y se necesita comprender la mecánica de ejecución interna más allá de lo que ofrece EXPLAIN.", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/collect-and-draw-traces", - category: "Monitoring & debugging", - tags: ["Tools and Utilities"] - }, - { - id: "configuration-settings/configure-a-user-setting", - title: "Cómo configurar ajustes para un usuario en ClickHouse", - description: "Aprenda a definir ajustes en ClickHouse para consultas individuales, sesiones de cliente o usuarios específicos mediante los comandos `SET` y `ALTER USER`.", - href: "/es/resources/support-center/knowledge-base/configuration-settings/configure-a-user-setting", - category: "Configuration & settings", - tags: ["Settings"] - }, - { - id: "materialized-views/projection-example", - title: "¿Cómo confirmar si una Proyección es utilizada por la consulta?", - description: "Aprenda a verificar si una proyección se utiliza en consultas de ClickHouse probando con datos de muestra y usando EXPLAIN para confirmar el uso de la proyección.", - href: "/es/resources/support-center/knowledge-base/materialized-views/projection-example", - category: "Materialized views & projections", - tags: ["Data Modelling"] - }, - { - id: "cloud-services/how-to-connect-to-ch-cloud-using-ssh-keys", - title: "Cómo conectarse a ClickHouse usando claves SSH", - description: "Cómo conectarse a ClickHouse y ClickHouse Cloud usando claves SSH", - href: "/es/resources/support-center/knowledge-base/cloud-services/how-to-connect-to-ch-cloud-using-ssh-keys", - category: "Cloud", - tags: ["Managing Cloud", "Security and Authentication"] - }, - { - id: "data-management/dictionary-using-strings", - title: "Cómo crear un diccionario de ClickHouse con claves y valores de tipo cadena", - description: "Aprenda a crear un diccionario de ClickHouse usando claves y valores de tipo cadena de una tabla MergeTree como fuente, con ejemplos de configuración y uso.", - href: "/es/resources/support-center/knowledge-base/data-management/dictionary-using-strings", - category: "Data management", - tags: ["Data Modelling"] - }, - { - id: "tables-schema/how-to-create-table-to-query-multiple-remote-clusters", - title: "Cómo crear una tabla que pueda consultar múltiples clústeres remotos", - description: "Cómo crear una tabla que pueda consultar múltiples clústeres remotos", - href: "/es/resources/support-center/knowledge-base/tables-schema/how-to-create-table-to-query-multiple-remote-clusters", - category: "Tables & schema", - tags: ["Deployments and Scaling"] - }, - { - id: "setup-installation/enabling-ssl-with-lets-encrypt", - title: "Cómo habilitar SSL con Let's Encrypt en un único servidor ClickHouse", - description: "Aprenda a configurar SSL para un único servidor ClickHouse usando Let's Encrypt, incluyendo la emisión de certificados, la configuración y la validación.", - href: "/es/resources/support-center/knowledge-base/setup-installation/enabling-ssl-with-lets-encrypt", - category: "Configuración e instalación", - tags: ["Security and Authentication"] - }, - { - id: "data-import-export/file-export", - title: "Cómo exportar datos de ClickHouse a un archivo", - description: "Aprenda varios métodos para exportar datos de ClickHouse, incluyendo `INTO OUTFILE`, el motor de tabla File y la redirección por línea de comandos.", - href: "/es/resources/support-center/knowledge-base/data-import-export/file-export", - category: "Data import & export", - tags: ["Data Export"] - }, - { - id: "queries-sql/how-to-filter-a-clickhouse-table-by-an-array-column", - title: "¿Cómo filtrar una tabla de ClickHouse por una columna de tipo array?", - description: "Artículo de la base de conocimientos sobre cómo filtrar una tabla de ClickHouse por una columna de tipo array.", - href: "/es/resources/support-center/knowledge-base/queries-sql/how-to-filter-a-clickhouse-table-by-an-array-column", - category: "Queries & SQL", - tags: ["Data Modelling", "Functions"] - }, - { - id: "monitoring-debugging/generate-har-file", - title: "Cómo generar un archivo HAR para soporte", - description: "Un archivo HAR (HTTP Archive) captura la actividad de red en su navegador. Puede ayudar a nuestro equipo de soporte a diagnosticar cargas de página lentas, solicitudes fallidas u otros problemas de red.", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/generate-har-file", - category: "Monitoring & debugging", - tags: ["Tools and Utilities"] - }, - { - id: "materialized-views/how-to-display-queries-using-mv", - title: "Cómo identificar consultas que usan Vistas Materializadas en ClickHouse", - description: "Aprenda a consultar los registros de ClickHouse para identificar todas las consultas que involucran Vistas Materializadas dentro de un rango de tiempo especificado.", - href: "/es/resources/support-center/knowledge-base/materialized-views/how-to-display-queries-using-mv", - category: "Materialized views & projections", - tags: ["System Tables"] - }, - { - id: "performance-optimization/find-expensive-queries", - title: "Cómo identificar las consultas más costosas en ClickHouse", - description: "Aprenda a usar la tabla `query_log` en ClickHouse para identificar las consultas que más memoria y CPU consumen en los nodos distribuidos.", - href: "/es/resources/support-center/knowledge-base/performance-optimization/find-expensive-queries", - category: "Performance & optimization", - tags: ["Performance and Optimizations"] - }, - { - id: "configuration-settings/ignoring-incorrect-settings", - title: "Cómo ignorar ajustes incorrectos en ClickHouse", - description: "Aprenda a usar la opción `skip_check_for_incorrect_settings` para permitir que ClickHouse se inicie incluso cuando los ajustes a nivel de usuario están especificados incorrectamente.", - href: "/es/resources/support-center/knowledge-base/configuration-settings/ignoring-incorrect-settings", - category: "Configuration & settings", - tags: ["Settings"] - }, - { - id: "data-import-export/json-import", - title: "¿Cómo importar JSON en ClickHouse?", - description: "Esta página muestra cómo importar JSON en ClickHouse", - href: "/es/resources/support-center/knowledge-base/data-import-export/json-import", - category: "Data import & export", - tags: [] - }, - { - id: "setup-installation/how-to-increase-thread-pool-size", - title: "Cómo aumentar el número de hilos en ClickHouse", - description: "Aprenda a configurar el grupo de hilos global en ClickHouse ajustando parámetros como `max_thread_pool_size`, `thread_pool_queue_size` y `max_thread_pool_free_size`.", - href: "/es/resources/support-center/knowledge-base/setup-installation/how-to-increase-thread-pool-size", - category: "Configuración e instalación", - tags: ["Performance and Optimizations"] - }, - { - id: "data-import-export/kafka-to-clickhouse-setup", - title: "Cómo ingestar datos de Kafka en ClickHouse", - description: "Aprenda a ingestar datos de un tema de Kafka en ClickHouse usando el motor de tabla Kafka, vistas materializadas y tablas MergeTree.", - href: "/es/resources/support-center/knowledge-base/data-import-export/kafka-to-clickhouse-setup", - category: "Data import & export", - tags: ["Data Ingestion"] - }, - { - id: "data-import-export/ingest-parquet-files-in-s3", - title: "Cómo ingestar archivos Parquet desde un bucket de S3", - description: "Aprenda los conceptos básicos del uso del motor de tabla S3 en ClickHouse para ingestar y consultar archivos Parquet desde un bucket de S3, incluyendo configuración, permisos de acceso y ejemplos de importación de datos.", - href: "/es/resources/support-center/knowledge-base/data-import-export/ingest-parquet-files-in-s3", - category: "Data import & export", - tags: ["Data Ingestion"] - }, - { - id: "queries-sql/how-to-insert-all-rows-from-another-table", - title: "¿Cómo insertar todas las filas de una tabla en otra?", - description: "Artículo de la base de conocimientos sobre cómo insertar todas las filas de una tabla en otra.", - href: "/es/resources/support-center/knowledge-base/queries-sql/how-to-insert-all-rows-from-another-table", - category: "Queries & SQL", - tags: ["Data Ingestion"] - }, - { - id: "performance-optimization/check-query-processing-time-only", - title: "Cómo medir el tiempo de procesamiento de consultas sin devolver filas", - description: "Aprenda a usar la opción `FORMAT Null` en ClickHouse para medir el tiempo de procesamiento de consultas sin devolver ninguna fila al cliente.", - href: "/es/resources/support-center/knowledge-base/performance-optimization/check-query-processing-time-only", - category: "Performance & optimization", - tags: ["Performance and Optimizations"] - }, - { - id: "cloud-services/opt-out-core-dump-collection", - title: "Cómo desactivar la recopilación de informes de fallos", - description: "Este artículo muestra cómo desactivar la recopilación de informes de fallos en ClickHouse Cloud", - href: "/es/resources/support-center/knowledge-base/cloud-services/opt-out-core-dump-collection", - category: "Cloud", - tags: ["Managing Cloud"] - }, - { - id: "monitoring-debugging/outputSendLogsLevelTracesToFile", - title: "How to output send logs level traces to file using the clickhouse-client", - description: "How to output send logs level traces to file using the clickhouse-client", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/outputSendLogsLevelTracesToFile", - category: "Monitoring & debugging", - tags: ["Data Export"] - }, - { - id: "tables-schema/recreate-table-across-terminals", - title: "How to quickly recreate a small table across different terminals", - description: "Learn how to quickly recreate a small table and its data across different terminals using copy/paste for development environments.", - href: "/es/resources/support-center/knowledge-base/tables-schema/recreate-table-across-terminals", - category: "Tables & schema", - tags: ["Tools and Utilities"] - }, - { - id: "troubleshooting/recovering-from-corrupt-keeper-snapshot", - title: "Cómo recuperarse de un snapshot de Keeper corrupto", - description: "Artículo que describe cómo recuperarse de un snapshot de Keeper corrupto: cómo se manifiesta el problema, qué es un snapshot y dónde encontrarlo, y las posibles estrategias de recuperación.", - href: "/es/resources/support-center/knowledge-base/troubleshooting/recovering-from-corrupt-keeper-snapshot", - category: "Solución de problemas y errores", - tags: ["Troubleshooting"] - }, - { - id: "troubleshooting/restore-replica-after-storage-failure", - title: "Cómo restaurar una réplica tras un fallo de almacenamiento", - description: "Este artículo explica cómo recuperar datos cuando se usan tablas replicadas en bases de datos atómicas en ClickHouse y los discos o el almacenamiento de una de las réplicas se pierden o dañan.", - href: "/es/resources/support-center/knowledge-base/troubleshooting/restore-replica-after-storage-failure", - category: "Solución de problemas y errores", - tags: ["Deployments and Scaling"] - }, - { - id: "integrations/how-to-set-up-ch-on-docker-odbc-connect-mssql", - title: "How to set up ClickHouse on Docker with ODBC to connect to a Microsoft SQL Server (MSSQL) database", - description: "How to set up ClickHouse on Docker with ODBC to connect to a Microsoft SQL Server (MSSQL) database", - href: "/es/resources/support-center/knowledge-base/integrations/how-to-set-up-ch-on-docker-odbc-connect-mssql", - category: "Integrations & client libraries", - tags: ["Native Clients and Interfaces"] - }, - { - id: "queries-sql/using-array-join-to-extract-and-query-attributes", - title: "How to use array join to extract and query varying attributes using map keys and values", - description: "Simple example to illustrate how to use array join to extract and query varying attributes using map keys and values", - href: "/es/resources/support-center/knowledge-base/queries-sql/using-array-join-to-extract-and-query-attributes", - category: "Queries & SQL", - tags: ["Functions"] - }, - { - id: "materialized-views/how-to-use-parametrised-views", - title: "How to Use Parameterized Views in ClickHouse", - description: "Learn how to create and query parameterized views in ClickHouse for dynamic data slicing based on query-time parameters.", - href: "/es/resources/support-center/knowledge-base/materialized-views/how-to-use-parametrised-views", - category: "Materialized views & projections", - tags: ["Use Cases"] - }, - { - id: "tables-schema/exchangeStatementToSwitchTables", - title: "How to use the exchange command to switch tables", - description: "How to use the exchange command to switch tables", - href: "/es/resources/support-center/knowledge-base/tables-schema/exchangeStatementToSwitchTables", - category: "Tables & schema", - tags: ["Managing Data"] - }, - { - id: "queries-sql/compare-resultsets", - title: "How to Validate if Two Queries Return the Same Result-sets", - description: "Learn how to validate that two ClickHouse queries produce identical result-sets using hash functions and comparison techniques.", - href: "/es/resources/support-center/knowledge-base/queries-sql/compare-resultsets", - category: "Queries & SQL", - tags: ["Functions"] - }, - { - id: "monitoring-debugging/check-query-cache-in-use", - title: "How to verify query cache usage in ClickHouse", - description: "Learn how to check if query cache is being utilized in ClickHouse using `clickhouse-client` trace logs or SQL commands.", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/check-query-cache-in-use", - category: "Monitoring & debugging", - tags: ["Performance and Optimizations"] - }, - { - id: "cloud-services/unable-to-access-cloud-service", - title: "I am unable to access a ClickHouse Cloud service", - description: "Troubleshooting access issues with ClickHouse Cloud services, including IP Access List configuration", - href: "/es/resources/support-center/knowledge-base/cloud-services/unable-to-access-cloud-service", - category: "Cloud", - tags: ["Errors and Exceptions", "Managing Cloud"] - }, - { - id: "performance-optimization/finding-expensive-queries-by-memory-usage", - title: "Identificación de consultas costosas según el uso de memoria en ClickHouse", - description: "Learn how to use the `system.query_log` table to find the most memory-intensive queries in ClickHouse, with examples for clustered and standalone setups.", - href: "/es/resources/support-center/knowledge-base/performance-optimization/finding-expensive-queries-by-memory-usage", - category: "Performance & optimization", - tags: ["Performance and Optimizations"] - }, - { - id: "data-import-export/importing-and-working-with-json-array-objects", - title: "Importing and Querying JSON Array Objects in ClickHouse", - description: "Learn how to import JSON array objects into ClickHouse and perform advanced queries using JSON functions and array operations.", - href: "/es/resources/support-center/knowledge-base/data-import-export/importing-and-working-with-json-array-objects", - category: "Data import & export", - tags: ["Data Formats"] - }, - { - id: "data-import-export/importing-geojason-with-nested-object-array", - title: "Importing GeoJSON with a deeply nested object array", - description: "Learn how to import GeoJSON files with deeply nested object arrays into ClickHouse and query the nested feature data.", - href: "/es/resources/support-center/knowledge-base/data-import-export/importing-geojason-with-nested-object-array", - category: "Data import & export", - tags: ["Data Formats"] - }, - { - id: "performance-optimization/improve-map-performance", - title: "Improving Map lookup performance in ClickHouse", - description: "Learn how to optimize Map column lookups in ClickHouse for better query performance by materializing specific keys as standalone columns.", - href: "/es/resources/support-center/knowledge-base/performance-optimization/improve-map-performance", - category: "Performance & optimization", - tags: ["Performance and Optimizations"] - }, - { - id: "tables-schema/delete-old-data", - title: "Is it possible to delete old records from a ClickHouse table?", - description: "This page answers the question of whether it is possible to delete old records from a ClickHouse table", - href: "/es/resources/support-center/knowledge-base/tables-schema/delete-old-data", - category: "Tables & schema", - tags: [] - }, - { - id: "general-faqs/separate-storage", - title: "Is it possible to deploy ClickHouse with separate storage and compute?", - description: "This page provides an answer as to whether it is possible to deploy ClickHouse with separate storage and compute", - href: "/es/resources/support-center/knowledge-base/general-faqs/separate-storage", - category: "General & FAQs", - tags: [] - }, - { - id: "data-import-export/json-extract-example", - title: "JSON Extract example", - description: "A short example on how to extract base types from JSON", - href: "/es/resources/support-center/knowledge-base/data-import-export/json-extract-example", - category: "Data import & export", - tags: ["Data Formats"] - }, - { - id: "queries-sql/calculate-pi-using-sql", - title: "Let's calculate pi using SQL", - description: "It's Pi Day! Let's calculate pi using ClickHouse SQL", - href: "/es/resources/support-center/knowledge-base/queries-sql/calculate-pi-using-sql", - category: "Queries & SQL", - tags: ["Use Cases"] - }, - { - id: "cloud-services/clickhouse-cloud-api-usage", - title: "Managing ClickHouse Cloud Service with API and cURL", - description: "Learn how to start, stop, and resume a ClickHouse Cloud service using API endpoints and cURL commands.", - href: "/es/resources/support-center/knowledge-base/cloud-services/clickhouse-cloud-api-usage", - category: "Cloud", - tags: ["Managing Cloud", "Tools and Utilities"] - }, - { - id: "monitoring-debugging/mapping-of-system-metrics-to-prometheus-metrics", - title: "Mapping of metrics used in system.dashboards to Prometheus metrics in `system.custom_metrics`", - description: "Mapping of metrics used in system.dashboards to Prometheus metrics in system.custom_metrics", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/mapping-of-system-metrics-to-prometheus-metrics", - category: "Monitoring & debugging", - tags: ["System Tables"] - }, - { - id: "security/windows-active-directory-to-ch-roles", - title: "Mapping Windows Active Directory security groups to ClickHouse roles", - description: "Example of mapping Windows Active Directory security groups to ClickHouse roles", - href: "/es/resources/support-center/knowledge-base/security/windows-active-directory-to-ch-roles", - category: "Seguridad y control de acceso", - tags: ["Tools and Utilities"] - }, - { - id: "performance-optimization/memory-limit-exceeded-for-query", - title: "Memory limit exceeded for query", - description: "Troubleshooting memory limit exceeded errors for a query", - href: "/es/resources/support-center/knowledge-base/performance-optimization/memory-limit-exceeded-for-query", - category: "Performance & optimization", - tags: ["Errors and Exceptions"] - }, - { - id: "integrations/ODBC-authentication-failed-error-using-PowerBI-CH-connector", - title: "ODBC authentication failed error when using the Power BI ClickHouse connector", - description: "ODBC authentication failed error when using the Power BI ClickHouse connector", - href: "/es/resources/support-center/knowledge-base/integrations/ODBC-authentication-failed-error-using-PowerBI-CH-connector", - category: "Integrations & client libraries", - tags: ["Native Clients and Interfaces", "Errors and Exceptions"] - }, - { - id: "monitoring-debugging/profiling-clickhouse-with-llvm-xray", - title: "Profiling ClickHouse with LLVM's XRay", - description: "Learn how to profile ClickHouse using LLVM's XRay instrumentation profiler, visualize traces, and analyze performance.", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/profiling-clickhouse-with-llvm-xray", - category: "Monitoring & debugging", - tags: ["Performance and Optimizations", "Tools and Utilities"] - }, - { - id: "integrations/python-http-requests", - title: "Python quick example using HTTP requests module", - description: "An example using Python and requests module to write and read to ClickHouse", - href: "/es/resources/support-center/knowledge-base/integrations/python-http-requests", - category: "Integrations & client libraries", - tags: ["Native Clients and Interfaces"] - }, - { - id: "configuration-settings/maximum-number-of-tables-and-databases", - title: "Recommended Maximum Databases, Tables, Partitions, and Parts in ClickHouse", - description: "Learn the recommended maximum limits for databases, tables, partitions, and parts in a ClickHouse cluster to ensure optimal performance.", - href: "/es/resources/support-center/knowledge-base/configuration-settings/maximum-number-of-tables-and-databases", - category: "Configuration & settings", - tags: ["Performance and Optimizations", "Deployments and Scaling"] - }, - { - id: "data-import-export/cannot-append-data-to-parquet-format", - title: 'Resolving "Cannot Append Data in Parquet Format" error in ClickHouse', - description: 'Are you getting the error "Cannot append data in format Parquet to file" error in ClickHouse? Let\'s take a look at how to resolve it.', - href: "/es/resources/support-center/knowledge-base/data-import-export/cannot-append-data-to-parquet-format", - category: "Data import & export", - tags: ["Errors and Exceptions", "Data Formats"] - }, - { - id: "troubleshooting/certificate-verify-failed-error", - title: "Resolución del error de verificación de certificados SSL en ClickHouse", - description: "Learn how to resolve the SSL Exception CERTIFICATE_VERIFY_FAILED error.", - href: "/es/resources/support-center/knowledge-base/troubleshooting/certificate-verify-failed-error", - category: "Solución de problemas y errores", - tags: ["Security and Authentication", "Errors and Exceptions"] - }, - { - id: "troubleshooting/exception-too-many-parts", - title: 'Cómo resolver la excepción "Too many parts" en ClickHouse', - description: 'Aprenda a diagnosticar y resolver la excepción "Too many parts" agrupando las inserciones en lotes, usando inserciones asíncronas y eligiendo una clave de particionamiento adecuada.', - href: "/es/resources/support-center/knowledge-base/troubleshooting/exception-too-many-parts", - category: "Solución de problemas y errores", - tags: ["Errors and Exceptions"] - }, - { - id: "troubleshooting/connection-timeout-remote-remoteSecure", - title: "Resolving Timeout Errors with `remote` and `remoteSecure` Table Functions", - description: "Learn how to fix timeout errors when using `remote` or `remoteSecure` table functions in ClickHouse by adjusting the connection timeout settings.", - href: "/es/resources/support-center/knowledge-base/troubleshooting/connection-timeout-remote-remoteSecure", - category: "Solución de problemas y errores", - tags: ["Errors and Exceptions"] - }, - { - id: "tables-schema/runbook-json", - title: "Runbook: esquema JSON", - description: "Elija el enfoque de esquema adecuado para datos JSON en ClickHouse: columnas tipadas, híbrido, JSON nativo o almacenamiento como String", - href: "/es/resources/support-center/knowledge-base/tables-schema/runbook-json", - category: "Tables & schema", - tags: ["Runbooks", "Data Modelling"] - }, - { - id: "tables-schema/schema-migration-tools", - title: "Herramientas de migración de esquemas para ClickHouse", - description: "Conozca las herramientas de migración de esquemas para ClickHouse y cómo gestionar los cambios en los esquemas de las bases de datos a lo largo del tiempo.", - href: "/es/resources/support-center/knowledge-base/tables-schema/schema-migration-tools", - category: "Tables & schema", - tags: ["Tools and Utilities"] - }, - { - id: "tables-schema/search-across-node-for-tables-with-a-wildcard", - title: "Searching across nodes for tables with a wildcard", - description: "Learn how to search across nodes for tables with a wildcard.", - href: "/es/resources/support-center/knowledge-base/tables-schema/search-across-node-for-tables-with-a-wildcard", - category: "Tables & schema", - tags: ["Deployments and Scaling"] - }, - { - id: "setup-installation/set-up-clickhouse-documentation-mcp-server", - title: "Configura el servidor MCP de la documentación de ClickHouse", - description: "Conecta herramientas de IA con la documentación de ClickHouse mediante el Model Context Protocol.", - href: "/es/resources/support-center/knowledge-base/setup-installation/set-up-clickhouse-documentation-mcp-server", - category: "Setup & installation", - tags: ["Tools and Utilities"] - }, - { - id: "performance-optimization/query-max-execution-time", - title: "Setting a limit on query execution time", - description: "How to enforce limit on max query execution time", - href: "/es/resources/support-center/knowledge-base/performance-optimization/query-max-execution-time", - category: "Performance & optimization", - tags: ["Managing Cloud", "Settings"] - }, - { - id: "data-import-export/json-simple-example", - title: "Simple example flow for extracting JSON data using a landing table with a Materialized View", - description: "Simple example flow for extracting JSON data using a landing table with a Materialized View", - href: "/es/resources/support-center/knowledge-base/data-import-export/json-simple-example", - category: "Data import & export", - tags: ["Data Formats"] - }, - { - id: "performance-optimization/async-vs-optimize-read-in-order", - title: "Synchronous data reading", - description: - "The new setting `allow_asynchronous_read_from_io_pool_for_merge_tree` allows the number of reading threads (streams) to be higher than the number of threads in the rest of the query execution pipeline.", - href: "/es/resources/support-center/knowledge-base/performance-optimization/async-vs-optimize-read-in-order", - category: "Performance & optimization", - tags: ["Settings", "Performance and Optimizations"] - }, - { - id: "integrations/terraform-example", - title: "Terraform example on how to use Cloud API", - description: "This covers an example of how you can use terraform to create/delete clusters using the API", - href: "/es/resources/support-center/knowledge-base/integrations/terraform-example", - category: "Integrations & client libraries", - tags: ["Native Clients and Interfaces"] - }, - { - id: "performance-optimization/tips-tricks-optimizing-basic-data-types-in-clickhouse", - title: "Tips and tricks on optimizing basic data types in ClickHouse", - description: "Tips and tricks on optimizing basic data types in ClickHouse", - href: "/es/resources/support-center/knowledge-base/performance-optimization/tips-tricks-optimizing-basic-data-types-in-clickhouse", - category: "Performance & optimization", - tags: ["Performance and Optimizations"] - }, - { - id: "data-management/understanding-part-types-and-storage-formats", - title: "Tipos de partes y formatos de almacenamiento", - description: "Conozca los distintos tipos de partes (Wide vs Compact) y formatos de almacenamiento (Full vs Packed) en ClickHouse, y cómo afectan al rendimiento.", - href: "/es/resources/support-center/knowledge-base/data-management/understanding-part-types-and-storage-formats", - category: "Data management", - tags: ["Core Data Concepts"] - }, - { - id: "queries-sql/useful-queries-for-troubleshooting", - title: "Useful queries for troubleshooting", - description: "A collection of handy queries for troubleshooting ClickHouse, including monitoring table sizes, long-running queries, and errors.", - href: "/es/resources/support-center/knowledge-base/queries-sql/useful-queries-for-troubleshooting", - category: "Queries & SQL", - tags: ["Settings"] - }, - { - id: "general-faqs/use-clickhouse-for-log-analytics", - title: "Using ClickHouse for log analytics", - description: "ClickHouse is popular for logs and metrics analysis because of the real-time analytics capabilities provided. Ready to find out more?", - href: "/es/resources/support-center/knowledge-base/general-faqs/use-clickhouse-for-log-analytics", - category: "General & FAQs", - tags: ["Use Cases"] - }, - { - id: "queries-sql/filtered-aggregates", - title: "Using filtered aggregates in ClickHouse", - description: "Learn how to use filtered aggregates in ClickHouse with `-If` and `-Distinct` aggregate combinators to simplify query syntax and enhance analytics.", - href: "/es/resources/support-center/knowledge-base/queries-sql/filtered-aggregates", - category: "Queries & SQL", - tags: ["Functions"] - }, - { - id: "general-faqs/dependencies", - title: "What are the 3rd-party dependencies for running ClickHouse?", - description: "ClickHouse is self-contained and has no runtime dependencies", - href: "/es/resources/support-center/knowledge-base/general-faqs/dependencies", - category: "General & FAQs", - tags: [] - }, - { - id: "general-faqs/dbms-naming", - title: 'What does "ClickHouse" mean?', - description: 'Learn about What does "ClickHouse" mean?', - href: "/es/resources/support-center/knowledge-base/general-faqs/dbms-naming", - category: "General & FAQs", - tags: [] - }, - { - id: "general-faqs/ne-tormozit", - title: "What does “не тормозит” mean?", - description: 'This page explains what "Не тормозит" means', - href: "/es/resources/support-center/knowledge-base/general-faqs/ne-tormozit", - category: "General & FAQs", - tags: [] - }, - { - id: "integrations/oracle-odbc", - title: "What if I have a problem with encodings when using Oracle via ODBC?", - description: "This page provides guidance on what to do if you have a problem with encodings when using Oracle via ODBC", - href: "/es/resources/support-center/knowledge-base/integrations/oracle-odbc", - category: "Integrations & client libraries", - tags: [] - }, - { - id: "general-faqs/columnar-database", - title: "What is a columnar database?", - description: "A columnar database stores the data of each column independently. This allows reading data from disk only for those columns that are used in any given query.", - href: "/es/resources/support-center/knowledge-base/general-faqs/columnar-database", - category: "General & FAQs", - tags: ["Core Data Concepts"] - }, - { - id: "general-faqs/olap", - title: "What is OLAP?", - description: "An explainer on what Online Analytical Processing is", - href: "/es/resources/support-center/knowledge-base/general-faqs/olap", - category: "General & FAQs", - tags: [] - }, - { - id: "performance-optimization/optimize-final-vs-final", - title: "What is the difference between OPTIMIZE FINAL and FINAL?", - description: "Discusses the differences between OPTIMIZE FINAL and FINAL, and when to use and avoid them.", - href: "/es/resources/support-center/knowledge-base/performance-optimization/optimize-final-vs-final", - category: "Performance & optimization", - tags: ["Core Data Concepts"] - }, - { - id: "general-faqs/sql", - title: "What SQL syntax does ClickHouse support?", - description: "ClickHouse supports 100% of SQL syntax", - href: "/es/resources/support-center/knowledge-base/general-faqs/sql", - category: "General & FAQs", - tags: [] - }, - { - id: "data-management/when-is-ttl-applied", - title: "When are TTL rules applied, and do we have control over it?", - description: - "TTL rules in ClickHouse are eventually applied, and you can control when they are executed using the `merge_with_ttl_timeout` setting. Learn how to force TTL application and manage background threads for TTL execution.", - href: "/es/resources/support-center/knowledge-base/data-management/when-is-ttl-applied", - category: "Data management", - tags: ["Core Data Concepts"] - }, - { - id: "setup-installation/production", - title: "Which ClickHouse version to use in production?", - description: "This page provides guidance on which ClickHouse version to use in production", - href: "/es/resources/support-center/knowledge-base/setup-installation/production", - category: "Configuración e instalación", - tags: [] - }, - { - id: "general-faqs/who-is-using-clickhouse", - title: "Who is using ClickHouse?", - description: "Describes who is using ClickHouse", - href: "/es/resources/support-center/knowledge-base/general-faqs/who-is-using-clickhouse", - category: "General & FAQs", - tags: [] - }, - { - id: "security/set-role-not-persisting-in-sql-console", - title: "Por qué `SET ROLE` no se conserva en la SQL Console de ClickHouse Cloud", - description: "Descubra por qué `SET ROLE` no se conserva en la SQL Console de ClickHouse Cloud y cómo asignar permisos persistentes a cada usuario.", - href: "/es/resources/support-center/knowledge-base/security/set-role-not-persisting-in-sql-console", - category: "Seguridad y control de acceso", - tags: ["Security and Authentication", "Managing Cloud", "Troubleshooting"] - }, - { - id: "data-management/dictionaries-consistent-state", - title: "Why can't I see my data in a dictionary in ClickHouse Cloud?", - description: "There is an issue where data in dictionaries may not be visible immediately after creation.", - href: "/es/resources/support-center/knowledge-base/data-management/dictionaries-consistent-state", - category: "Data management", - tags: ["Managing Cloud", "Data Modelling"] - }, - { - id: "general-faqs/why-recommend-clickhouse-keeper-over-zookeeper", - title: "Why is ClickHouse Keeper recommended over ZooKeeper?", - description: - "ClickHouse Keeper improves upon ZooKeeper with features like reduced disk space usage, faster recovery, and less memory consumption, offering better performance for ClickHouse clusters.", - href: "/es/resources/support-center/knowledge-base/general-faqs/why-recommend-clickhouse-keeper-over-zookeeper", - category: "General & FAQs", - tags: ["Core Data Concepts"] - }, - { - id: "monitoring-debugging/why-default-logging-verbose", - title: "Why is ClickHouse logging so verbose by default?", - description: "Learn why the ClickHouse developers chose to set a verbose logging level by default.", - href: "/es/resources/support-center/knowledge-base/monitoring-debugging/why-default-logging-verbose", - category: "Monitoring & debugging", - tags: ["Settings"] - }, - { - id: "performance-optimization/why-is-my-primary-key-not-used", - title: "Why is my primary key not used? How can I check?", - description: "Covers a common reason why a primary key is not used in ordering and how we can confirm", - href: "/es/resources/support-center/knowledge-base/performance-optimization/why-is-my-primary-key-not-used", - category: "Performance & optimization", - tags: ["Performance and Optimizations"] - }, - { - id: "general-faqs/mapreduce", - title: "Why not use something like MapReduce?", - description: "This page explains why you would use ClickHouse over MapReduce", - href: "/es/resources/support-center/knowledge-base/general-faqs/mapreduce", - category: "General & FAQs", - tags: [] + "articles": [ + { + "id": "configuration-settings/about-quotas-and-query-complexity", + "title": "Acerca de las cuotas y la complejidad de las consultas", + "description": "Las cuotas y la complejidad de las consultas son mecanismos eficaces para limitar y restringir lo que los usuarios pueden hacer en ClickHouse. Este artículo de la base de conocimientos muestra ejemplos de cómo aplicar estos dos enfoques.", + "href": "/es/resources/support-center/knowledge-base/configuration-settings/about-quotas-and-query-complexity", + "category": "Configuración y ajustes", + "tags": [ + "Gestión de Cloud" + ] + }, + { + "id": "security/windows-active-directory-to-ch-roles", + "title": "Asignación de grupos de seguridad de Active Directory de Windows a roles de ClickHouse", + "description": "Ejemplo de asignación de grupos de seguridad de Active Directory de Windows a roles de ClickHouse", + "href": "/es/resources/support-center/knowledge-base/security/windows-active-directory-to-ch-roles", + "category": "Seguridad y control de acceso", + "tags": [ + "Herramientas y utilidades" + ] + }, + { + "id": "tables-schema/add-column", + "title": "Añadir una columna a una tabla", + "description": "En esta guía, aprenderemos a añadir una columna a una tabla existente.", + "href": "/es/resources/support-center/knowledge-base/tables-schema/add-column", + "category": "Tablas y esquema", + "tags": [ + "Modelado de datos" + ] + }, + { + "id": "tables-schema/search-across-node-for-tables-with-a-wildcard", + "title": "Buscar tablas en todos los nodos con un comodín", + "description": "Aprende a buscar en todos los nodos tablas con un comodín.", + "href": "/es/resources/support-center/knowledge-base/tables-schema/search-across-node-for-tables-with-a-wildcard", + "category": "Tablas y esquema", + "tags": [ + "Implementaciones y escalado" + ] + }, + { + "id": "queries-sql/calculate-pi-using-sql", + "title": "Calculemos pi con SQL", + "description": "¡Es el Día de Pi! Calculemos pi con ClickHouse SQL", + "href": "/es/resources/support-center/knowledge-base/queries-sql/calculate-pi-using-sql", + "category": "Consultas y SQL", + "tags": [ + "Casos de uso" + ] + }, + { + "id": "configuration-settings/change-the-prompt-in-clickhouse-client", + "title": "Cambiar el prompt en clickhouse-client", + "description": "Este artículo explica cómo cambiar el prompt en tu cliente de ClickHouse y en la ventana de terminal de clickhouse-local de :) a un prefijo seguido de :)", + "href": "/es/resources/support-center/knowledge-base/configuration-settings/change-the-prompt-in-clickhouse-client", + "category": "Configuración y ajustes", + "tags": [ + "Configuración", + "Clientes nativos e interfaces" + ] + }, + { + "id": "monitoring-debugging/send-logs-level", + "title": "Capturar los logs del servidor de las consultas en el cliente", + "description": "Aprende a capturar los logs del servidor en el cliente, incluso con distintas configuraciones de registro, mediante la configuración de cliente `send_logs_level`.", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/send-logs-level", + "category": "Monitorización y depuración", + "tags": [ + "Administración del servidor" + ] + }, + { + "id": "queries-sql/comparing-metrics-between-queries", + "title": "Comparar métricas entre consultas en decibelios", + "description": "Una consulta para comparar métricas entre dos consultas en ClickHouse.", + "href": "/es/resources/support-center/knowledge-base/queries-sql/comparing-metrics-between-queries", + "category": "Consultas y SQL", + "tags": [ + "Rendimiento y optimización" + ] + }, + { + "id": "data-management/understanding-part-types-and-storage-formats", + "title": "Comprender los tipos de partes y los formatos de almacenamiento", + "description": "Conozca los distintos tipos de partes (Wide vs Compact) y formatos de almacenamiento (Full vs Packed) en ClickHouse, y cómo afectan el rendimiento.", + "href": "/es/resources/support-center/knowledge-base/data-management/understanding-part-types-and-storage-formats", + "category": "Gestión de datos", + "tags": [ + "Conceptos fundamentales de datos" + ] + }, + { + "id": "cloud-services/confluent-cloud-private-connectivity-for-clickpipes", + "title": "Conectividad privada de Confluent Cloud para ClickPipes", + "description": "Cómo conectar ClickPipes a un clúster de Kafka existente de Confluent Cloud mediante AWS PrivateLink o GCP Private Service Connect.", + "href": "/es/resources/support-center/knowledge-base/cloud-services/confluent-cloud-private-connectivity-for-clickpipes", + "category": "Cloud", + "tags": [ + "Seguridad y autenticación", + "Administración de Cloud" + ] + }, + { + "id": "setup-installation/set-up-clickhouse-documentation-mcp-server", + "title": "Configura el servidor MCP de documentación de ClickHouse", + "description": "Conecta herramientas de IA a la documentación de ClickHouse mediante el Model Context Protocol.", + "href": "/es/resources/support-center/knowledge-base/setup-installation/set-up-clickhouse-documentation-mcp-server", + "category": "Configuración e instalación", + "tags": [ + "Herramientas y utilidades" + ] + }, + { + "id": "cloud-services/aws-privatelink-setup-for-msk-clickpipes", + "title": "Configuración de AWS PrivateLink para exponer MSK a ClickPipes", + "description": "Pasos para exponer un MSK privado mediante la conectividad multi-VPC de MSK a ClickPipes.", + "href": "/es/resources/support-center/knowledge-base/cloud-services/aws-privatelink-setup-for-msk-clickpipes", + "category": "Cloud", + "tags": [ + "Seguridad y autenticación", + "Administración de Cloud" + ] + }, + { + "id": "cloud-services/aws-privatelink-setup-for-clickpipes", + "title": "Configuración de AWS PrivateLink para exponer una instancia de RDS privada a ClickPipes", + "description": "Pasos de configuración para exponer una instancia de RDS privada a ClickPipes mediante AWS PrivateLink.", + "href": "/es/resources/support-center/knowledge-base/cloud-services/aws-privatelink-setup-for-clickpipes", + "category": "Cloud", + "tags": [ + "Seguridad y autenticación", + "Gestión de Cloud" + ] + }, + { + "id": "troubleshooting/configure-cap-ipc-lock-and-cap-sys-nice-in-docker", + "title": "Configuración de las capacidades CAP_IPC_LOCK y CAP_SYS_NICE en Docker", + "description": "Aprende a resolver las advertencias de Docker sobre las capacidades `CAP_IPC_LOCK` y `CAP_SYS_NICE` al ejecutar ClickHouse en un contenedor.", + "href": "/es/resources/support-center/knowledge-base/troubleshooting/configure-cap-ipc-lock-and-cap-sys-nice-in-docker", + "category": "Resolución de problemas y errores", + "tags": [ + "Errores y excepciones" + ] + }, + { + "id": "performance-optimization/tips-tricks-optimizing-basic-data-types-in-clickhouse", + "title": "Consejos y trucos para optimizar tipos de datos básicos en ClickHouse", + "description": "Consejos y trucos para optimizar tipos de datos básicos en ClickHouse", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/tips-tricks-optimizing-basic-data-types-in-clickhouse", + "category": "Rendimiento y optimización", + "tags": [ + "Rendimiento y optimizaciones" + ] + }, + { + "id": "security/common-rbac-queries", + "title": "Consultas habituales de RBAC", + "description": "Consultas para otorgar permisos específicos a los usuarios.", + "href": "/es/resources/support-center/knowledge-base/security/common-rbac-queries", + "category": "Seguridad y control de acceso", + "tags": [ + "Seguridad y autenticación", + "Administración de Cloud" + ] + }, + { + "id": "queries-sql/useful-queries-for-troubleshooting", + "title": "Consultas útiles para solucionar problemas", + "description": "Una colección de consultas prácticas para solucionar problemas de ClickHouse, que incluye cómo supervisar el tamaño de las tablas, las consultas de larga duración y los errores.", + "href": "/es/resources/support-center/knowledge-base/queries-sql/useful-queries-for-troubleshooting", + "category": "Consultas y SQL", + "tags": [ + "Settings" + ] + }, + { + "id": "data-management/backing-up-a-specific-partition", + "title": "Copia de seguridad de una partición específica", + "description": "¿Cómo puedo hacer una copia de seguridad de una partición específica en ClickHouse?", + "href": "/es/resources/support-center/knowledge-base/data-management/backing-up-a-specific-partition", + "category": "Gestión de datos", + "tags": [ + "Gestión de datos" + ] + }, + { + "id": "monitoring-debugging/mapping-of-system-metrics-to-prometheus-metrics", + "title": "Correspondencia de las métricas utilizadas en system.dashboards a las métricas de Prometheus en `system.custom_metrics`", + "description": "Correspondencia de las métricas utilizadas en system.dashboards a las métricas de Prometheus en system.custom_metrics", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/mapping-of-system-metrics-to-prometheus-metrics", + "category": "Monitorización y depuración", + "tags": [ + "Tablas del sistema" + ] + }, + { + "id": "cloud-services/custom-dns-alias-for-instance", + "title": "Crear un alias DNS personalizado mediante la configuración de un proxy inverso", + "description": "Aprenda a configurar un alias DNS personalizado para su instancia mediante un proxy inverso", + "href": "/es/resources/support-center/knowledge-base/cloud-services/custom-dns-alias-for-instance", + "category": "Cloud", + "tags": [ + "Administración del servidor", + "Seguridad y autenticación" + ] + }, + { + "id": "setup-installation/how-to-increase-thread-pool-size", + "title": "Cómo aumentar el número de hilos en ClickHouse", + "description": "Aprende a configurar el Global Thread pool de ClickHouse ajustando parámetros como `max_thread_pool_size`, `thread_pool_queue_size` y `max_thread_pool_free_size`.", + "href": "/es/resources/support-center/knowledge-base/setup-installation/how-to-increase-thread-pool-size", + "category": "Configuración e instalación", + "tags": [ + "Rendimiento y optimización" + ] + }, + { + "id": "data-management/calculate-ratio-of-zero-sparse-serialization", + "title": "Cómo calcular la proporción de valores vacíos o cero en cada columna de una tabla", + "description": "Aprenda a calcular la proporción de valores vacíos o cero en cada columna de una tabla de ClickHouse para optimizar la serialización de columnas dispersas.", + "href": "/es/resources/support-center/knowledge-base/data-management/calculate-ratio-of-zero-sparse-serialization", + "category": "Gestión de datos", + "tags": [ + "Rendimiento y optimizaciones" + ] + }, + { + "id": "setup-installation/llvm-clang-up-to-date", + "title": "Cómo compilar LLVM y clang en Linux", + "description": "Comandos para compilar LLVM y clang en Linux.", + "href": "/es/resources/support-center/knowledge-base/setup-installation/llvm-clang-up-to-date", + "category": "Configuración e instalación", + "tags": [ + "Comunidad", + "Herramientas y utilidades" + ] + }, + { + "id": "cloud-services/how-to-check-my-clickhouse-cloud-sevice-state", + "title": "Cómo comprobar el estado de tu servicio de ClickHouse Cloud", + "description": "Aprende a usar la ClickHouse Cloud API para comprobar si tu servicio está detenido, inactivo o en ejecución sin reactivarlo.", + "href": "/es/resources/support-center/knowledge-base/cloud-services/how-to-check-my-clickhouse-cloud-sevice-state", + "category": "Cloud", + "tags": [ + "Gestión de Cloud" + ] + }, + { + "id": "security/check-users-roles", + "title": "Cómo comprobar qué usuarios están asignados a roles y viceversa", + "description": "Aprende a consultar `system.role_grants` de ClickHouse para ver qué usuarios están asignados a roles y qué roles están asignados a usuarios específicos.", + "href": "/es/resources/support-center/knowledge-base/security/check-users-roles", + "category": "Seguridad y control de acceso", + "tags": [ + "Administración de servidores", + "Tablas del sistema", + "Administración de Cloud" + ] + }, + { + "id": "cloud-services/how-to-connect-to-ch-cloud-using-ssh-keys", + "title": "Cómo conectarse a ClickHouse con claves SSH", + "description": "Cómo conectarse a ClickHouse y ClickHouse Cloud con claves SSH", + "href": "/es/resources/support-center/knowledge-base/cloud-services/how-to-connect-to-ch-cloud-using-ssh-keys", + "category": "Cloud", + "tags": [ + "Administración de Cloud", + "Seguridad y autenticación" + ] + }, + { + "id": "integrations/how-to-set-up-ch-on-docker-odbc-connect-mssql", + "title": "Cómo configurar ClickHouse en Docker con ODBC para conectarse a una base de datos de Microsoft SQL Server (MSSQL)", + "description": "Cómo configurar ClickHouse en Docker con ODBC para conectarse a una base de datos de Microsoft SQL Server (MSSQL)", + "href": "/es/resources/support-center/knowledge-base/integrations/how-to-set-up-ch-on-docker-odbc-connect-mssql", + "category": "Integraciones y bibliotecas de cliente", + "tags": [ + "Clientes e interfaces nativos" + ] + }, + { + "id": "configuration-settings/configure-a-user-setting", + "title": "Cómo configurar SETTING para un usuario en ClickHouse", + "description": "Aprende a definir SETTING en ClickHouse para consultas individuales, sesiones de cliente o usuarios específicos mediante los comandos `SET` y `ALTER USER`.", + "href": "/es/resources/support-center/knowledge-base/configuration-settings/configure-a-user-setting", + "category": "Configuración y ajustes", + "tags": [ + "SETTING" + ] + }, + { + "id": "data-management/dictionary-using-strings", + "title": "Cómo crear un Diccionario de ClickHouse con claves y valores de tipo String", + "description": "Aprende a crear un diccionario de ClickHouse con claves y valores de tipo String a partir de una tabla MergeTree como origen, con ejemplos de configuración y uso.", + "href": "/es/resources/support-center/knowledge-base/data-management/dictionary-using-strings", + "category": "Gestión de datos", + "tags": [ + "Modelado de datos" + ] + }, + { + "id": "tables-schema/how-to-create-table-to-query-multiple-remote-clusters", + "title": "Cómo crear una tabla que permita consultar varios clústeres remotos", + "description": "Cómo crear una tabla que permita consultar varios clústeres remotos", + "href": "/es/resources/support-center/knowledge-base/tables-schema/how-to-create-table-to-query-multiple-remote-clusters", + "category": "Tablas y esquema", + "tags": [ + "Implementaciones y escalado" + ] + }, + { + "id": "cloud-services/opt-out-core-dump-collection", + "title": "Cómo desactivar la recopilación de informes de fallos", + "description": "En este artículo se muestra cómo desactivar la recopilación de informes de fallos en ClickHouse Cloud", + "href": "/es/resources/support-center/knowledge-base/cloud-services/opt-out-core-dump-collection", + "category": "Cloud", + "tags": [ + "Gestión de Cloud" + ] + }, + { + "id": "monitoring-debugging/outputSendLogsLevelTracesToFile", + "title": "Cómo enviar a un archivo trazas de nivel de registros usando clickhouse-client", + "description": "Cómo enviar a un archivo trazas de nivel de registros usando clickhouse-client", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/outputSendLogsLevelTracesToFile", + "category": "Monitorización y depuración", + "tags": [ + "Exportación de datos" + ] + }, + { + "id": "data-import-export/file-export", + "title": "Cómo exportar datos de ClickHouse a un archivo", + "description": "Conozca varios métodos para exportar datos de ClickHouse, incluidos `INTO OUTFILE`, el motor de tabla File y la redirección en la línea de comandos.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/file-export", + "category": "Importación y exportación de datos", + "tags": [ + "Exportación de datos" + ] + }, + { + "id": "data-import-export/mysql-to-parquet-csv-json", + "title": "Cómo exportar datos de MySQL a Parquet, CSV o JSON con ClickHouse", + "description": "Aprende a usar la herramienta `clickhouse-local` para exportar datos de MySQL a formatos como Parquet, CSV o JSON de forma rápida y eficiente.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/mysql-to-parquet-csv-json", + "category": "Importación y exportación de datos", + "tags": [ + "Formatos de datos", + "Exportación de datos" + ] + }, + { + "id": "monitoring-debugging/generate-har-file", + "title": "Cómo generar un archivo HAR para soporte técnico", + "description": "Un archivo HAR (HTTP Archive) registra la actividad de red en su navegador. Puede ayudar a nuestro equipo de soporte técnico a diagnosticar cargas de página lentas, solicitudes fallidas u otros problemas de red.", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/generate-har-file", + "category": "Monitorización y depuración", + "tags": [ + "Herramientas y utilidades" + ] + }, + { + "id": "setup-installation/enabling-ssl-with-lets-encrypt", + "title": "Cómo habilitar SSL con Let's Encrypt en un solo servidor de ClickHouse", + "description": "Aprenda a configurar SSL para un solo servidor de ClickHouse con Let's Encrypt, incluida la emisión de certificados, la configuración y la validación.", + "href": "/es/resources/support-center/knowledge-base/setup-installation/enabling-ssl-with-lets-encrypt", + "category": "Configuración e instalación", + "tags": [ + "Seguridad y autenticación" + ] + }, + { + "id": "materialized-views/how-to-display-queries-using-mv", + "title": "Cómo identificar consultas que utilizan vistas materializadas en ClickHouse", + "description": "Aprende a consultar los registros de ClickHouse para identificar todas las consultas que involucran vistas materializadas dentro de un intervalo de tiempo determinado.", + "href": "/es/resources/support-center/knowledge-base/materialized-views/how-to-display-queries-using-mv", + "category": "Vistas materializadas y proyecciones", + "tags": [ + "Tablas del sistema" + ] + }, + { + "id": "performance-optimization/find-expensive-queries", + "title": "Cómo identificar las consultas más costosas en ClickHouse", + "description": "Aprende a usar la tabla `query_log` de ClickHouse para identificar las consultas con mayor consumo de memoria y CPU en nodos distribuidos.", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/find-expensive-queries", + "category": "Rendimiento y optimización", + "tags": [ + "Rendimiento y optimización" + ] + }, + { + "id": "configuration-settings/ignoring-incorrect-settings", + "title": "Cómo ignorar ajustes incorrectos en ClickHouse", + "description": "Aprenda a usar la opción `skip_check_for_incorrect_settings` para permitir que ClickHouse se inicie incluso cuando los ajustes de nivel de usuario se especifiquen incorrectamente.", + "href": "/es/resources/support-center/knowledge-base/configuration-settings/ignoring-incorrect-settings", + "category": "Configuración y ajustes", + "tags": [ + "Configuración" + ] + }, + { + "id": "data-import-export/ingest-parquet-files-in-s3", + "title": "Cómo ingestar archivos Parquet desde un bucket de S3", + "description": "Aprende los conceptos básicos del uso del motor de tabla S3 en ClickHouse para ingestar y consultar archivos Parquet desde un bucket de S3, incluida la configuración, los permisos de acceso y ejemplos de importación de datos.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/ingest-parquet-files-in-s3", + "category": "Importación y exportación de datos", + "tags": [ + "Ingestión de datos" + ] + }, + { + "id": "data-import-export/kafka-to-clickhouse-setup", + "title": "Cómo ingestar datos de Kafka en ClickHouse", + "description": "Aprende a ingestar datos de un topic de Kafka en ClickHouse mediante el motor de tabla Kafka, vistas materializadas y tablas MergeTree.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/kafka-to-clickhouse-setup", + "category": "Importación y exportación de datos", + "tags": [ + "Ingestión de datos" + ] + }, + { + "id": "performance-optimization/check-query-processing-time-only", + "title": "Cómo medir el tiempo de procesamiento de consultas sin devolver filas", + "description": "Aprende a usar la opción `FORMAT Null` de ClickHouse para medir el tiempo de procesamiento de consultas sin devolver ninguna fila al cliente.", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/check-query-processing-time-only", + "category": "Rendimiento y optimización", + "tags": [ + "Rendimiento y optimización" + ] + }, + { + "id": "monitoring-debugging/collect-and-draw-traces", + "title": "Cómo recopilar y visualizar una traza de consulta", + "description": "Esta guía le muestra cómo recopilar y visualizar trazas de consultas con ClickHouse autogestionado, ya sea con métodos integrados o con Grafana. Esto resulta especialmente útil cuando trabaja con consultas complejas y necesita comprender los mecanismos internos de ejecución más allá de lo que ofrece EXPLAIN.", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/collect-and-draw-traces", + "category": "Monitorización y depuración", + "tags": [ + "Herramientas y utilidades" + ] + }, + { + "id": "tables-schema/recreate-table-across-terminals", + "title": "Cómo recrear rápidamente una tabla pequeña entre distintas terminales", + "description": "Aprende a recrear rápidamente una tabla pequeña y sus datos entre distintas terminales mediante copiar y pegar en entornos de desarrollo.", + "href": "/es/resources/support-center/knowledge-base/tables-schema/recreate-table-across-terminals", + "category": "Tablas y esquema", + "tags": [ + "Herramientas y utilidades" + ] + }, + { + "id": "troubleshooting/recovering-from-corrupt-keeper-snapshot", + "title": "Cómo recuperarse de una instantánea corrupta de Keeper", + "description": "Artículo que describe cómo recuperarse de una instantánea corrupta de Keeper: cómo se manifiesta el problema, qué es una instantánea, dónde encontrarla y cuáles son las posibles estrategias de recuperación.", + "href": "/es/resources/support-center/knowledge-base/troubleshooting/recovering-from-corrupt-keeper-snapshot", + "category": "Resolución de problemas y errores", + "tags": [ + "Solución de problemas" + ] + }, + { + "id": "data-import-export/cannot-append-data-to-parquet-format", + "title": "Cómo resolver el error \"Cannot Append Data in Parquet Format\" en ClickHouse", + "description": "¿Te aparece el error \"Cannot append data in format Parquet to file\" en ClickHouse? Veamos cómo solucionarlo.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/cannot-append-data-to-parquet-format", + "category": "Importación y exportación de datos", + "tags": [ + "Errores y excepciones", + "Formatos de datos" + ] + }, + { + "id": "troubleshooting/certificate-verify-failed-error", + "title": "Cómo resolver el error de verificación del certificado SSL en ClickHouse", + "description": "Aprenda a resolver el error SSL CERTIFICATE_VERIFY_FAILED.", + "href": "/es/resources/support-center/knowledge-base/troubleshooting/certificate-verify-failed-error", + "category": "Resolución de problemas y errores", + "tags": [ + "Seguridad y autenticación", + "Errores y excepciones" + ] + }, + { + "id": "troubleshooting/connection-timeout-remote-remoteSecure", + "title": "Cómo resolver errores de tiempo de espera con las funciones de tabla `remote` y `remoteSecure`", + "description": "Aprenda a corregir los errores de tiempo de espera al usar las funciones de tabla `remote` o `remoteSecure` en ClickHouse ajustando la configuración del tiempo de espera de conexión.", + "href": "/es/resources/support-center/knowledge-base/troubleshooting/connection-timeout-remote-remoteSecure", + "category": "Resolución de problemas y errores", + "tags": [ + "Errores y excepciones" + ] + }, + { + "id": "troubleshooting/exception-too-many-parts", + "title": "Cómo resolver la excepción \"Too many parts\" en ClickHouse", + "description": "Aprende a diagnosticar y resolver la excepción \"Too many parts\" agrupando las inserciones en lotes, usando inserciones asíncronas y eligiendo una clave de particionamiento adecuada.", + "href": "/es/resources/support-center/knowledge-base/troubleshooting/exception-too-many-parts", + "category": "Resolución de problemas y errores", + "tags": [ + "Errores y excepciones" + ] + }, + { + "id": "troubleshooting/restore-replica-after-storage-failure", + "title": "Cómo restaurar una réplica tras un fallo de almacenamiento", + "description": "En este artículo se explica cómo recuperar datos al usar tablas replicadas en bases de datos Atomic en ClickHouse cuando se pierde o se corrompe el disco o almacenamiento de una de las réplicas.", + "href": "/es/resources/support-center/knowledge-base/troubleshooting/restore-replica-after-storage-failure", + "category": "Resolución de problemas y errores", + "tags": [ + "Implementaciones y escalado" + ] + }, + { + "id": "queries-sql/using-array-join-to-extract-and-query-attributes", + "title": "Cómo usar ARRAY JOIN para extraer y consultar atributos variables con claves y valores de Map", + "description": "Ejemplo sencillo para ilustrar cómo usar ARRAY JOIN para extraer y consultar atributos variables con claves y valores de Map", + "href": "/es/resources/support-center/knowledge-base/queries-sql/using-array-join-to-extract-and-query-attributes", + "category": "Consultas y SQL", + "tags": [ + "Funciones" + ] + }, + { + "id": "tables-schema/exchangeStatementToSwitchTables", + "title": "Cómo usar el comando EXCHANGE para intercambiar tablas", + "description": "Cómo usar el comando EXCHANGE para intercambiar tablas", + "href": "/es/resources/support-center/knowledge-base/tables-schema/exchangeStatementToSwitchTables", + "category": "Tablas y esquema", + "tags": [ + "Gestión de datos" + ] + }, + { + "id": "integrations/node-js-example", + "title": "Cómo usar NodeJS con @clickhouse/client", + "description": "Aprende a usar @clickhouse/client en una aplicación Node.js para interactuar con ClickHouse y realizar consultas.", + "href": "/es/resources/support-center/knowledge-base/integrations/node-js-example", + "category": "Integraciones y bibliotecas de cliente", + "tags": [ + "Clientes de lenguaje" + ] + }, + { + "id": "materialized-views/how-to-use-parametrised-views", + "title": "Cómo usar vistas parametrizadas en ClickHouse", + "description": "Aprende a crear y consultar vistas parametrizadas en ClickHouse para segmentar datos dinámicamente en función de parámetros en tiempo de consulta.", + "href": "/es/resources/support-center/knowledge-base/materialized-views/how-to-use-parametrised-views", + "category": "Vistas materializadas y proyecciones", + "tags": [ + "Casos de uso" + ] + }, + { + "id": "queries-sql/compare-resultsets", + "title": "Cómo validar si dos consultas devuelven el mismo conjunto de resultados", + "description": "Aprende a validar que dos consultas de ClickHouse produzcan el mismo conjunto de resultados mediante funciones hash y técnicas de comparación.", + "href": "/es/resources/support-center/knowledge-base/queries-sql/compare-resultsets", + "category": "Consultas y SQL", + "tags": [ + "Funciones" + ] + }, + { + "id": "monitoring-debugging/check-query-cache-in-use", + "title": "Cómo verificar el uso de la caché de consultas en ClickHouse", + "description": "Aprende a comprobar si la caché de consultas se está utilizando en ClickHouse mediante los registros de nivel trace de `clickhouse-client` o comandos SQL.", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/check-query-cache-in-use", + "category": "Monitorización y depuración", + "tags": [ + "Rendimiento y optimización" + ] + }, + { + "id": "troubleshooting/part-intersects-previous-part", + "title": "DB::Exception: La parte XXXXX se solapa con la parte anterior YYYYY. Es un error o el resultado de una intervención manual en los datos de ZooKeeper.", + "description": "Este artículo explica cómo resolver el error DB::Exception relacionado con partes solapadas en ClickHouse, a menudo causado por una condición de carrera o por una intervención manual en los datos de ZooKeeper.", + "href": "/es/resources/support-center/knowledge-base/troubleshooting/part-intersects-previous-part", + "category": "Resolución de problemas y errores", + "tags": [ + "Errores y excepciones", + "Tablas del sistema" + ] + }, + { + "id": "setup-installation/difference-between-official-builds-and-3rd-party", + "title": "Diferencias entre las compilaciones oficiales de ClickHouse y las compilaciones de terceros", + "description": "Conozca las diferencias clave entre las compilaciones oficiales de ClickHouse y las compilaciones de terceros, incluidas las actualizaciones, la compatibilidad y las consideraciones de seguridad.", + "href": "/es/resources/support-center/knowledge-base/setup-installation/difference-between-official-builds-and-3rd-party", + "category": "Configuración e instalación", + "tags": [ + "Conceptos" + ] + }, + { + "id": "cloud-services/execute-system-queries-in-cloud", + "title": "Ejecutar sentencias SYSTEM en todos los nodos de ClickHouse Cloud", + "description": "Aprenda a usar `ON CLUSTER` y `clusterAllReplicas` para ejecutar sentencias SYSTEM y consultas en todos los nodos de un servicio de ClickHouse Cloud.", + "href": "/es/resources/support-center/knowledge-base/cloud-services/execute-system-queries-in-cloud", + "category": "Cloud", + "tags": [ + "Implementaciones y escalado" + ] + }, + { + "id": "data-import-export/json-extract-example", + "title": "Ejemplo de JSON Extract", + "description": "Un breve ejemplo de cómo extraer tipos básicos de JSON", + "href": "/es/resources/support-center/knowledge-base/data-import-export/json-extract-example", + "category": "Importación y exportación de datos", + "tags": [ + "Formatos de datos" + ] + }, + { + "id": "integrations/terraform-example", + "title": "Ejemplo de Terraform: cómo usar la API de Cloud", + "description": "Este ejemplo muestra cómo puedes usar Terraform para crear y eliminar clústeres mediante la API", + "href": "/es/resources/support-center/knowledge-base/integrations/terraform-example", + "category": "Integraciones y bibliotecas de cliente", + "tags": [ + "Clientes nativos e interfaces" + ] + }, + { + "id": "integrations/python-http-requests", + "title": "Ejemplo rápido de Python con el módulo HTTP requests", + "description": "Un ejemplo con Python y el módulo requests para escribir y leer datos en ClickHouse", + "href": "/es/resources/support-center/knowledge-base/integrations/python-http-requests", + "category": "Integraciones y bibliotecas de cliente", + "tags": [ + "Clientes nativos e interfaces" + ] + }, + { + "id": "troubleshooting/count-parts-by-type", + "title": "Encontrar el número y tamaño de las partes anchas o compactas", + "description": "Este artículo de la base de conocimientos muestra cómo encontrar el número de partes según el tipo de parte: ancha o compacta.", + "href": "/es/resources/support-center/knowledge-base/troubleshooting/count-parts-by-type", + "category": "Resolución de problemas y errores", + "tags": [ + "Solución de problemas" + ] + }, + { + "id": "integrations/ODBC-authentication-failed-error-using-PowerBI-CH-connector", + "title": "Error de autenticación de ODBC al usar el conector ClickHouse para Power BI", + "description": "Error de autenticación de ODBC al usar el conector ClickHouse para Power BI", + "href": "/es/resources/support-center/knowledge-base/integrations/ODBC-authentication-failed-error-using-PowerBI-CH-connector", + "category": "Integraciones y bibliotecas de cliente", + "tags": [ + "Clientes nativos e interfaces", + "Errores y excepciones" + ] + }, + { + "id": "performance-optimization/query-max-execution-time", + "title": "Establecer un límite para el tiempo de ejecución de una consulta", + "description": "Cómo establecer un límite para el tiempo máximo de ejecución de una consulta", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/query-max-execution-time", + "category": "Rendimiento y optimización", + "tags": [ + "Gestión de Cloud", + "Configuración" + ] + }, + { + "id": "configuration-settings/alter-user-settings-exception", + "title": "Excepción al modificar la configuración del usuario", + "description": "Cómo gestionar una excepción generada al modificar la configuración del usuario", + "href": "/es/resources/support-center/knowledge-base/configuration-settings/alter-user-settings-exception", + "category": "Configuración y ajustes", + "tags": [ + "Configuración", + "Errores y excepciones" + ] + }, + { + "id": "data-import-export/json-simple-example", + "title": "Flujo de ejemplo sencillo para extraer datos JSON usando una tabla de aterrizaje con una vista materializada", + "description": "Flujo de ejemplo sencillo para extraer datos JSON usando una tabla de aterrizaje con una vista materializada", + "href": "/es/resources/support-center/knowledge-base/data-import-export/json-simple-example", + "category": "Importación y exportación de datos", + "tags": [ + "Formatos de datos" + ] + }, + { + "id": "cloud-services/clickhouse-cloud-api-usage", + "title": "Gestión de un servicio de ClickHouse Cloud con la API y cURL", + "description": "Aprenda a iniciar, detener y reanudar un servicio de ClickHouse Cloud mediante endpoints de API y comandos de cURL.", + "href": "/es/resources/support-center/knowledge-base/cloud-services/clickhouse-cloud-api-usage", + "category": "Cloud", + "tags": [ + "Administración de Cloud", + "Herramientas y utilidades" + ] + }, + { + "id": "tables-schema/schema-migration-tools", + "title": "Herramientas de migración de esquemas para ClickHouse", + "description": "Conozca las herramientas de migración de esquemas para ClickHouse y cómo gestionar la evolución de los esquemas de bases de datos a lo largo del tiempo.", + "href": "/es/resources/support-center/knowledge-base/tables-schema/schema-migration-tools", + "category": "Tablas y esquema", + "tags": [ + "Herramientas y utilidades" + ] + }, + { + "id": "performance-optimization/finding-expensive-queries-by-memory-usage", + "title": "Identificación de consultas costosas según el uso de memoria en ClickHouse", + "description": "Aprende a usar la tabla `system.query_log` para encontrar las consultas que más memoria consumen en ClickHouse, con ejemplos para configuraciones en clúster e independientes.", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/finding-expensive-queries-by-memory-usage", + "category": "Rendimiento y optimización", + "tags": [ + "Rendimiento y optimización" + ] + }, + { + "id": "data-import-export/importing-geojason-with-nested-object-array", + "title": "Importación de GeoJSON con un array de objetos profundamente anidado", + "description": "Aprenda a importar archivos GeoJSON con arrays de objetos profundamente anidados en ClickHouse y a consultar los datos anidados de `feature`.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/importing-geojason-with-nested-object-array", + "category": "Importación y exportación de datos", + "tags": [ + "Formatos de datos" + ] + }, + { + "id": "data-import-export/importing-and-working-with-json-array-objects", + "title": "Importación y consulta de objetos en arrays JSON en ClickHouse", + "description": "Aprende a importar objetos en arrays JSON a ClickHouse y a realizar consultas avanzadas con funciones JSON y operaciones con arrays.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/importing-and-working-with-json-array-objects", + "category": "Importación y exportación de datos", + "tags": [ + "Formatos de datos" + ] + }, + { + "id": "performance-optimization/async-vs-optimize-read-in-order", + "title": "Lectura síncrona de datos", + "description": "El nuevo ajuste `allow_asynchronous_read_from_io_pool_for_merge_tree` permite que el número de hilos de lectura (streams) sea mayor que el número de hilos en el resto del pipeline de ejecución de la consulta.", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/async-vs-optimize-read-in-order", + "category": "Rendimiento y optimización", + "tags": [ + "Configuración", + "Rendimiento y optimización" + ] + }, + { + "id": "data-import-export/achieving-atomic-inserts", + "title": "Lograr inserciones atómicas y consistencia entre múltiples tablas en ClickHouse Cloud", + "description": "Cómo cargar datos de forma atómica y mantener la consistencia entre múltiples tablas en ClickHouse Cloud sin transacciones multisentencia, mediante tablas de staging y operaciones a nivel de partición.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/achieving-atomic-inserts", + "category": "Importación y exportación de datos", + "tags": [ + "Ingestión de datos", + "buenas prácticas" + ] + }, + { + "id": "configuration-settings/maximum-number-of-tables-and-databases", + "title": "Límites máximos recomendados de bases de datos, tablas, particiones y partes en ClickHouse", + "description": "Conozca los límites máximos recomendados para bases de datos, tablas, particiones y partes en un clúster de ClickHouse para garantizar un rendimiento óptimo.", + "href": "/es/resources/support-center/knowledge-base/configuration-settings/maximum-number-of-tables-and-databases", + "category": "Configuración y ajustes", + "tags": [ + "Rendimiento y optimizaciones", + "Implementaciones y escalado" + ] + }, + { + "id": "performance-optimization/improve-map-performance", + "title": "Mejorar el rendimiento de las búsquedas en Map en ClickHouse", + "description": "Aprende a optimizar las búsquedas en columnas Map de ClickHouse para mejorar el rendimiento de las consultas materializando claves específicas como columnas independientes.", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/improve-map-performance", + "category": "Rendimiento y optimización", + "tags": [ + "Rendimiento y optimización" + ] + }, + { + "id": "cloud-services/unable-to-access-cloud-service", + "title": "No puedo acceder a un servicio de ClickHouse Cloud", + "description": "Resolución de problemas de acceso a servicios de ClickHouse Cloud, incluida la configuración de la IP Access List", + "href": "/es/resources/support-center/knowledge-base/cloud-services/unable-to-access-cloud-service", + "category": "Cloud", + "tags": [ + "Errores y excepciones", + "Administración de Cloud" + ] + }, + { + "id": "monitoring-debugging/profiling-clickhouse-with-llvm-xray", + "title": "Perfilado de ClickHouse con XRay de LLVM", + "description": "Aprende a perfilar ClickHouse con el perfilador de instrumentación XRay de LLVM, visualizar trazas y analizar el rendimiento.", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/profiling-clickhouse-with-llvm-xray", + "category": "Monitorización y depuración", + "tags": [ + "Rendimiento y optimización", + "Herramientas y utilidades" + ] + }, + { + "id": "security/set-role-not-persisting-in-sql-console", + "title": "Por qué `SET ROLE` no se mantiene en la SQL Console de ClickHouse Cloud", + "description": "Aprenda por qué `SET ROLE` no se mantiene en la SQL Console de ClickHouse Cloud y cómo asignar permisos persistentes por usuario.", + "href": "/es/resources/support-center/knowledge-base/security/set-role-not-persisting-in-sql-console", + "category": "Seguridad y control de acceso", + "tags": [ + "Seguridad y autenticación", + "Gestión de Cloud", + "Solución de problemas" + ] + }, + { + "id": "tables-schema/runbook-json", + "title": "Runbook: esquema de JSON", + "description": "Elige el enfoque de esquema adecuado para datos JSON en ClickHouse: columnas tipadas, híbrido, JSON nativo o almacenamiento como String", + "href": "/es/resources/support-center/knowledge-base/tables-schema/runbook-json", + "category": "Tablas y esquema", + "tags": [ + "Runbooks", + "Modelado de datos" + ] + }, + { + "id": "performance-optimization/memory-limit-exceeded-for-query", + "title": "Se ha superado el límite de memoria de la consulta", + "description": "Solución de problemas de errores de límite de memoria superado en una consulta", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/memory-limit-exceeded-for-query", + "category": "Rendimiento y optimización", + "tags": [ + "Errores y excepciones" + ] + }, + { + "id": "cloud-services/aws-privatelink-vpc-endpoint-service-for-msk-cluster", + "title": "Servicio de endpoint de VPC de AWS PrivateLink para un clúster de MSK", + "description": "Pasos de configuración para exponer un clúster de MSK a ClickPipes mediante servicios de endpoint de VPC de AWS PrivateLink.", + "href": "/es/resources/support-center/knowledge-base/cloud-services/aws-privatelink-vpc-endpoint-service-for-msk-cluster", + "category": "Cloud", + "tags": [ + "Seguridad y autenticación", + "Gestión de Cloud" + ] + }, + { + "id": "troubleshooting/fix-developer-verification-error-in-macos", + "title": "Soluciona el error de verificación del desarrollador en MacOS", + "description": "Aprende a resolver el error de verificación del desarrollador en MacOS al ejecutar comandos de ClickHouse, ya sea con System Settings o desde la terminal.", + "href": "/es/resources/support-center/knowledge-base/troubleshooting/fix-developer-verification-error-in-macos", + "category": "Resolución de problemas y errores", + "tags": [ + "Errores y excepciones" + ] + }, + { + "id": "integrations/python-clickhouse-connect-example", + "title": "Un ejemplo práctico de cliente de Python para conectarse al servicio de ClickHouse Cloud", + "description": "Aprende a conectarte al servicio de ClickHouse Cloud desde Python con un ejemplo paso a paso que utiliza el driver clickhouse-connect.", + "href": "/es/resources/support-center/knowledge-base/integrations/python-clickhouse-connect-example", + "category": "Integraciones y bibliotecas de cliente", + "tags": [ + "Clientes de lenguaje" + ] + }, + { + "id": "queries-sql/filtered-aggregates", + "title": "Uso de agregados filtrados en ClickHouse", + "description": "Aprende a usar agregados filtrados en ClickHouse con los combinadores de agregación `-If` y `-Distinct` para simplificar la sintaxis de las consultas y mejorar el análisis.", + "href": "/es/resources/support-center/knowledge-base/queries-sql/filtered-aggregates", + "category": "Consultas y SQL", + "tags": [ + "Funciones" + ] + }, + { + "id": "general-faqs/use-clickhouse-for-log-analytics", + "title": "Uso de ClickHouse para la analítica de logs", + "description": "ClickHouse es popular para el análisis de logs y métricas gracias a sus capacidades de análisis en tiempo real. ¿Quieres saber más?", + "href": "/es/resources/support-center/knowledge-base/general-faqs/use-clickhouse-for-log-analytics", + "category": "General y preguntas frecuentes", + "tags": [ + "Casos de uso" + ] + }, + { + "id": "general-faqs/datalake", + "title": "¿Admite ClickHouse los lagos de datos?", + "description": "ClickHouse admite lagos de datos, incluidos Iceberg, Delta Lake, Apache Hudi, Apache Paimon, Hive", + "href": "/es/resources/support-center/knowledge-base/general-faqs/datalake", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/updates", + "title": "¿ClickHouse admite actualizaciones en tiempo real?", + "description": "ClickHouse admite actualizaciones ligeras en tiempo real", + "href": "/es/resources/support-center/knowledge-base/general-faqs/updates", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/federated", + "title": "¿ClickHouse admite consultas federadas?", + "description": "ClickHouse admite una amplia gama de consultas federadas e híbridas", + "href": "/es/resources/support-center/knowledge-base/general-faqs/federated", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/concurrency", + "title": "¿ClickHouse admite consultas frecuentes y concurrentes?", + "description": "ClickHouse admite QPS altos y alta concurrencia", + "href": "/es/resources/support-center/knowledge-base/general-faqs/concurrency", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/distributed-join", + "title": "¿ClickHouse admite JOIN distribuidos?", + "description": "ClickHouse admite JOIN distribuidos", + "href": "/es/resources/support-center/knowledge-base/general-faqs/distributed-join", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "cloud-services/multi-region-replication", + "title": "¿ClickHouse admite la replicación multirregional?", + "description": "Esta página responde a la pregunta de si ClickHouse admite la replicación multirregional", + "href": "/es/resources/support-center/knowledge-base/cloud-services/multi-region-replication", + "category": "Cloud", + "tags": [] + }, + { + "id": "security/row-column-policy", + "title": "¿ClickHouse admite seguridad a nivel de fila y de columna?", + "description": "Más información sobre las restricciones de acceso a nivel de fila y de columna en ClickHouse y ClickHouse Cloud, y sobre cómo implementar control de acceso basado en roles (RBAC) con políticas.", + "href": "/es/resources/support-center/knowledge-base/security/row-column-policy", + "category": "Seguridad y control de acceso", + "tags": [ + "Seguridad y autenticación" + ] + }, + { + "id": "general-faqs/cost-based", + "title": "¿ClickHouse tiene un optimizador basado en costos?", + "description": "ClickHouse tiene ciertos mecanismos de optimización basados en costos", + "href": "/es/resources/support-center/knowledge-base/general-faqs/cost-based", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "performance-optimization/optimize-final-vs-final", + "title": "¿Cuál es la diferencia entre OPTIMIZE FINAL y FINAL?", + "description": "Explica las diferencias entre OPTIMIZE FINAL y FINAL, y cuándo conviene usarlos o evitarlos.", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/optimize-final-vs-final", + "category": "Rendimiento y optimización", + "tags": [ + "Conceptos fundamentales de los datos" + ] + }, + { + "id": "general-faqs/dependencies", + "title": "¿Cuáles son las dependencias de terceros para ejecutar ClickHouse?", + "description": "ClickHouse es autónomo y no tiene dependencias en tiempo de ejecución", + "href": "/es/resources/support-center/knowledge-base/general-faqs/dependencies", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "data-management/when-is-ttl-applied", + "title": "¿Cuándo se aplican las reglas TTL y se puede controlar?", + "description": "Las reglas TTL en ClickHouse acaban aplicándose, y puede controlar cuándo se ejecutan mediante la configuración `merge_with_ttl_timeout`. Aprenda a forzar la aplicación de TTL y a gestionar los hilos en segundo plano para su ejecución.", + "href": "/es/resources/support-center/knowledge-base/data-management/when-is-ttl-applied", + "category": "Gestión de datos", + "tags": [ + "Conceptos fundamentales de los datos" + ] + }, + { + "id": "cloud-services/change-billing-email", + "title": "¿Cómo cambio mi contacto de facturación en ClickHouse Cloud?", + "description": "Veamos cómo cambiar tu dirección de facturación en ClickHouse Cloud.", + "href": "/es/resources/support-center/knowledge-base/cloud-services/change-billing-email", + "category": "Cloud", + "tags": [ + "Administración de Cloud" + ] + }, + { + "id": "materialized-views/projection-example", + "title": "¿Cómo confirmar si una proyección se usa en la consulta?", + "description": "Aprende a comprobar si se usa una proyección en las consultas de ClickHouse probando con datos de muestra y usando EXPLAIN para verificar su uso.", + "href": "/es/resources/support-center/knowledge-base/materialized-views/projection-example", + "category": "Vistas materializadas y proyecciones", + "tags": [ + "Modelado de datos" + ] + }, + { + "id": "data-import-export/parquet-to-csv-json", + "title": "¿Cómo convertir archivos Parquet a CSV o JSON?", + "description": "Aprende a usar la herramienta `clickhouse-local` de ClickHouse para convertir fácilmente archivos Parquet a formatos CSV o JSON.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/parquet-to-csv-json", + "category": "Importación y exportación de datos", + "tags": [ + "Fuentes de datos", + "Formatos de datos" + ] + }, + { + "id": "security/remove-default-user", + "title": "¿Cómo elimino el usuario `default`?", + "description": "Aprende a eliminar el usuario `default` al ejecutar ClickHouse Server.", + "href": "/es/resources/support-center/knowledge-base/security/remove-default-user", + "category": "Seguridad y control de acceso", + "tags": [ + "Administración del servidor" + ] + }, + { + "id": "data-import-export/postgresql-to-parquet-csv-json", + "title": "¿Cómo exportar datos de PostgreSQL a Parquet, CSV o JSON?", + "description": "Aprende a exportar datos de PostgreSQL a los formatos Parquet, CSV o JSON con `clickhouse-local` mediante varios ejemplos.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/postgresql-to-parquet-csv-json", + "category": "Importación y exportación de datos", + "tags": [ + "Exportación de datos", + "Formatos de datos" + ] + }, + { + "id": "queries-sql/how-to-filter-a-clickhouse-table-by-an-array-column", + "title": "¿Cómo filtrar una tabla de ClickHouse por una columna de tipo Array?", + "description": "Artículo de la base de conocimientos sobre cómo filtrar una tabla de ClickHouse por una columna de tipo Array.", + "href": "/es/resources/support-center/knowledge-base/queries-sql/how-to-filter-a-clickhouse-table-by-an-array-column", + "category": "Consultas y SQL", + "tags": [ + "Modelado de datos", + "Funciones" + ] + }, + { + "id": "data-import-export/json-import", + "title": "¿Cómo importar JSON a ClickHouse?", + "description": "Esta página muestra cómo importar JSON a ClickHouse", + "href": "/es/resources/support-center/knowledge-base/data-import-export/json-import", + "category": "Importación y exportación de datos", + "tags": [] + }, + { + "id": "queries-sql/how-to-insert-all-rows-from-another-table", + "title": "¿Cómo insertar todas las filas de una tabla a otra?", + "description": "Artículo de la base de conocimientos sobre cómo insertar todas las filas de una tabla a otra.", + "href": "/es/resources/support-center/knowledge-base/queries-sql/how-to-insert-all-rows-from-another-table", + "category": "Consultas y SQL", + "tags": [ + "Ingestión de datos" + ] + }, + { + "id": "setup-installation/install-clickhouse-windows10", + "title": "¿Cómo instalo ClickHouse en Windows 10?", + "description": "Aprende a instalar y probar ClickHouse en Windows 10 con WSL 2. Incluye la configuración, la solución de problemas y cómo ejecutar un entorno de prueba.", + "href": "/es/resources/support-center/knowledge-base/setup-installation/install-clickhouse-windows10", + "category": "Configuración e instalación", + "tags": [ + "Herramientas y utilidades" + ] + }, + { + "id": "data-management/read-consistency", + "title": "¿Cómo lograr la consistencia en la lectura de datos en ClickHouse?", + "description": "Aprende a garantizar la consistencia de los datos al leer desde ClickHouse, tanto si estás conectado al mismo nodo como a un nodo aleatorio.", + "href": "/es/resources/support-center/knowledge-base/data-management/read-consistency", + "category": "Gestión de datos", + "tags": [ + "Rendimiento y optimización" + ] + }, + { + "id": "general-faqs/how-do-i-contribute-code-to-clickhouse", + "title": "¿Cómo puedo contribuir con código a ClickHouse?", + "description": "ClickHouse es un proyecto de código abierto desarrollado en GitHub. Como es habitual, las instrucciones para contribuir se publican en el archivo CONTRIBUTING ubicado en la raíz del repositorio del código fuente.", + "href": "/es/resources/support-center/knowledge-base/general-faqs/how-do-i-contribute-code-to-clickhouse", + "category": "General y preguntas frecuentes", + "tags": [ + "Comunidad" + ] + }, + { + "id": "data-import-export/s3-export-data-year-month-folders", + "title": "¿Cómo puedo hacer escritura particionada por año y mes en S3?", + "description": "Aprenda a escribir datos particionados por año y mes en un bucket de S3 en ClickHouse, usando una estructura de ruta personalizada para organizar los datos.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/s3-export-data-year-month-folders", + "category": "Importación y exportación de datos", + "tags": [ + "Exportación de datos", + "Clientes nativos e interfaces" + ] + }, + { + "id": "performance-optimization/insert-select-settings-tuning", + "title": "¿Cómo puedo resolver el error TOO MANY PARTS durante un INSERT...SELECT?", + "description": "Soluciona el error TOO_MANY_PARTS en ClickHouse durante un `INSERT...SELECT` ajustando configuraciones avanzadas para bloques más grandes y aumentando los umbrales de partición.", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/insert-select-settings-tuning", + "category": "Rendimiento y optimización", + "tags": [ + "Configuración", + "Errores y excepciones" + ] + }, + { + "id": "data-import-export/kafka-clickhouse-json", + "title": "¿Cómo puedo usar el nuevo tipo de datos JSON con Kafka?", + "description": "Aprende a cargar mensajes JSON desde Apache Kafka directamente en una sola columna JSON de ClickHouse mediante el motor de tabla Kafka y el tipo de datos JSON.", + "href": "/es/resources/support-center/knowledge-base/data-import-export/kafka-clickhouse-json", + "category": "Importación y exportación de datos", + "tags": [ + "Formatos de datos", + "Ingestión de datos" + ] + }, + { + "id": "monitoring-debugging/view-number-of-active-mutations", + "title": "¿Cómo puedo ver el número de mutaciones activas o en cola?", + "description": "Supervise el número de mutaciones activas o en cola en ClickHouse, especialmente al realizar operaciones `ALTER` o `UPDATE`. Use la tabla `system.mutations` para hacer un seguimiento de las mutaciones.", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/view-number-of-active-mutations", + "category": "Monitorización y depuración", + "tags": [ + "Tablas del sistema" + ] + }, + { + "id": "cloud-services/ingest-failures-23-9-release", + "title": "¿Cómo soluciono los fallos de ingesta tras la versión 23.9 de ClickHouse?", + "description": "Aprenda a resolver los fallos de ingesta causados por una comprobación de grant más estricta introducida en ClickHouse 23.9 para tablas que usan `async_inserts`. Actualice los grant para corregir los errores.", + "href": "/es/resources/support-center/knowledge-base/cloud-services/ingest-failures-23-9-release", + "category": "Cloud", + "tags": [ + "Errores y excepciones" + ] + }, + { + "id": "monitoring-debugging/which-processes-are-currently-running", + "title": "¿Cómo ver qué código se está ejecutando actualmente en un servidor?", + "description": "ClickHouse proporciona herramientas de introspección como `system.stack_trace` para inspeccionar qué código se está ejecutando actualmente en cada hilo del servidor, lo que ayuda en la depuración y la monitorización del rendimiento.", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/which-processes-are-currently-running", + "category": "Monitorización y depuración", + "tags": [ + "Administración del servidor" + ] + }, + { + "id": "general-faqs/separate-storage", + "title": "¿Es posible desplegar ClickHouse con almacenamiento y cómputo separados?", + "description": "Esta página responde a si es posible desplegar ClickHouse con almacenamiento y cómputo separados", + "href": "/es/resources/support-center/knowledge-base/general-faqs/separate-storage", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "tables-schema/delete-old-data", + "title": "¿Es posible eliminar registros antiguos de una tabla de ClickHouse?", + "description": "Esta página responde a la pregunta de si es posible eliminar registros antiguos de una tabla de ClickHouse", + "href": "/es/resources/support-center/knowledge-base/tables-schema/delete-old-data", + "category": "Tablas y esquema", + "tags": [] + }, + { + "id": "materialized-views/are-materialized-views-inserted-asynchronously", + "title": "¿Las vistas materializadas se insertan de forma síncrona?", + "description": "Este artículo de la base de conocimientos explora si las vistas materializadas se insertan de forma síncrona", + "href": "/es/resources/support-center/knowledge-base/materialized-views/are-materialized-views-inserted-asynchronously", + "category": "Vistas materializadas y proyecciones", + "tags": [ + "Modelado de datos" + ] + }, + { + "id": "monitoring-debugging/why-default-logging-verbose", + "title": "¿Por qué el registro de ClickHouse es tan verboso de forma predeterminada?", + "description": "Descubre por qué los desarrolladores de ClickHouse decidieron establecer, de forma predeterminada, un nivel de registro verboso.", + "href": "/es/resources/support-center/knowledge-base/monitoring-debugging/why-default-logging-verbose", + "category": "Monitorización y depuración", + "tags": [ + "Configuración" + ] + }, + { + "id": "data-management/dictionaries-consistent-state", + "title": "¿Por qué no puedo ver mis datos en un diccionario de ClickHouse Cloud?", + "description": "Existe un problema por el que es posible que los datos de los diccionarios no sean visibles inmediatamente después de crearlos.", + "href": "/es/resources/support-center/knowledge-base/data-management/dictionaries-consistent-state", + "category": "Gestión de datos", + "tags": [ + "Administración de Cloud", + "Modelado de datos" + ] + }, + { + "id": "performance-optimization/why-is-my-primary-key-not-used", + "title": "¿Por qué no se usa mi clave primaria? ¿Cómo puedo comprobarlo?", + "description": "Aborda una razón común por la que no se utiliza la clave primaria en la ordenación y cómo podemos comprobarlo", + "href": "/es/resources/support-center/knowledge-base/performance-optimization/why-is-my-primary-key-not-used", + "category": "Rendimiento y optimización", + "tags": [ + "Rendimiento y optimizaciones" + ] + }, + { + "id": "general-faqs/mapreduce", + "title": "¿Por qué no usar algo como MapReduce?", + "description": "Esta página explica por qué usar ClickHouse en lugar de MapReduce", + "href": "/es/resources/support-center/knowledge-base/general-faqs/mapreduce", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/why-recommend-clickhouse-keeper-over-zookeeper", + "title": "¿Por qué se recomienda ClickHouse Keeper en lugar de ZooKeeper?", + "description": "ClickHouse Keeper ofrece mejoras frente a ZooKeeper, como un menor uso de espacio en disco, una recuperación más rápida y un menor consumo de memoria, lo que se traduce en un mejor rendimiento para los clusters de ClickHouse.", + "href": "/es/resources/support-center/knowledge-base/general-faqs/why-recommend-clickhouse-keeper-over-zookeeper", + "category": "General y preguntas frecuentes", + "tags": [ + "Conceptos básicos de datos" + ] + }, + { + "id": "general-faqs/key-value", + "title": "¿Puedo usar ClickHouse como almacenamiento de clave-valor?", + "description": "Responde a la pregunta frecuente de si ClickHouse puede usarse como almacenamiento de clave-valor.", + "href": "/es/resources/support-center/knowledge-base/general-faqs/key-value", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/time-series", + "title": "¿Puedo usar ClickHouse como base de datos de series temporales?", + "description": "Página que describe cómo usar ClickHouse como base de datos de series temporales", + "href": "/es/resources/support-center/knowledge-base/general-faqs/time-series", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/who-is-using-clickhouse", + "title": "¿Quién usa ClickHouse?", + "description": "Describe quién usa ClickHouse", + "href": "/es/resources/support-center/knowledge-base/general-faqs/who-is-using-clickhouse", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/olap", + "title": "¿Qué es OLAP?", + "description": "Una explicación de qué es Online Analytical Processing", + "href": "/es/resources/support-center/knowledge-base/general-faqs/olap", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/columnar-database", + "title": "¿Qué es una base de datos columnar?", + "description": "Una base de datos columnar almacena los datos de cada columna de forma independiente. Esto permite leer del disco solo los datos de las columnas que se usan en una consulta determinada.", + "href": "/es/resources/support-center/knowledge-base/general-faqs/columnar-database", + "category": "General y preguntas frecuentes", + "tags": [ + "Conceptos fundamentales de datos" + ] + }, + { + "id": "integrations/oracle-odbc", + "title": "¿Qué ocurre si tengo problemas de codificación al usar Oracle a través de ODBC?", + "description": "Esta página ofrece orientación sobre qué hacer si tiene problemas de codificación al usar Oracle a través de ODBC", + "href": "/es/resources/support-center/knowledge-base/integrations/oracle-odbc", + "category": "Integraciones y bibliotecas de cliente", + "tags": [] + }, + { + "id": "general-faqs/dbms-naming", + "title": "¿Qué significa \"ClickHouse\"?", + "description": "Aprende qué significa \"ClickHouse\"", + "href": "/es/resources/support-center/knowledge-base/general-faqs/dbms-naming", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/ne-tormozit", + "title": "¿Qué significa “не тормозит”?", + "description": "Esta página explica qué significa \"Не тормозит\"", + "href": "/es/resources/support-center/knowledge-base/general-faqs/ne-tormozit", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "general-faqs/sql", + "title": "¿Qué sintaxis SQL admite ClickHouse?", + "description": "ClickHouse admite el 100 % de la sintaxis SQL", + "href": "/es/resources/support-center/knowledge-base/general-faqs/sql", + "category": "General y preguntas frecuentes", + "tags": [] + }, + { + "id": "setup-installation/production", + "title": "¿Qué versión de ClickHouse usar en producción?", + "description": "Esta página ofrece orientación sobre qué versión de ClickHouse usar en producción", + "href": "/es/resources/support-center/knowledge-base/setup-installation/production", + "category": "Configuración e instalación", + "tags": [] + }, + { + "id": "queries-sql/pivot", + "title": "¿Se puede hacer PIVOT en ClickHouse?", + "description": "ClickHouse no tiene una cláusula PIVOT, pero podemos aproximarnos a esta funcionalidad usando combinadores de funciones de agregación. Veamos cómo hacerlo con el conjunto de datos de precios de la vivienda en el Reino Unido.", + "href": "/es/resources/support-center/knowledge-base/queries-sql/pivot", + "category": "Consultas y SQL", + "tags": [ + "Modelado de datos", + "Conceptos básicos de datos" + ] + }, + { + "id": "general-faqs/vector-search", + "title": "¿Se puede usar ClickHouse para la búsqueda vectorial?", + "description": "Aprende a usar ClickHouse para la búsqueda vectorial, incluido el almacenamiento de embeddings y las búsquedas con funciones de distancia como la similitud de coseno.", + "href": "/es/resources/support-center/knowledge-base/general-faqs/vector-search", + "category": "General y preguntas frecuentes", + "tags": [ + "Casos de uso", + "Conceptos" + ] } ] -} \ No newline at end of file +}; From 4b51cd3bf775a2502018e2ed675f4333ff62919b Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Thu, 10 Sep 2026 21:41:08 +0200 Subject: [PATCH 03/12] Keep support cards above decorative background Reported at https://clickhouse-docs.vercel.app/docs/resources/support-center/home --- ar/resources/support-center/home.mdx | 4 ++-- es/resources/support-center/home.mdx | 4 ++-- fr/resources/support-center/home.mdx | 4 ++-- ja/resources/support-center/home.mdx | 4 ++-- ko/resources/support-center/home.mdx | 4 ++-- pt-BR/resources/support-center/home.mdx | 4 ++-- resources/support-center/home.mdx | 4 ++-- ru/resources/support-center/home.mdx | 4 ++-- zh/resources/support-center/home.mdx | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/ar/resources/support-center/home.mdx b/ar/resources/support-center/home.mdx index 92f001265..93aeae261 100644 --- a/ar/resources/support-center/home.mdx +++ b/ar/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
صورة خلفية للزينة. صورة خلفية للزينة. @@ -29,4 +29,4 @@ export const featuredArticles = [ {/* kbIndex is imported from the generated kb-data.jsx; featuredArticles is hand-maintained */} -
\ No newline at end of file +
diff --git a/es/resources/support-center/home.mdx b/es/resources/support-center/home.mdx index ce19a8bff..f76ae89a3 100644 --- a/es/resources/support-center/home.mdx +++ b/es/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
Imagen de fondo decorativa. Imagen de fondo decorativa. @@ -29,4 +29,4 @@ export const featuredArticles = [ {/* kbIndex se importa desde el kb-data.jsx generado; featuredArticles se mantiene manualmente */} -
\ No newline at end of file +
diff --git a/fr/resources/support-center/home.mdx b/fr/resources/support-center/home.mdx index 78bc33667..06bb8f943 100644 --- a/fr/resources/support-center/home.mdx +++ b/fr/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
Image décorative d’arrière-plan. Image décorative d’arrière-plan. @@ -29,4 +29,4 @@ export const featuredArticles = [ {/* kbIndex est importé depuis le fichier kb-data.jsx généré ; featuredArticles est maintenu manuellement */} -
\ No newline at end of file +
diff --git a/ja/resources/support-center/home.mdx b/ja/resources/support-center/home.mdx index a05b519a0..3e0214d41 100644 --- a/ja/resources/support-center/home.mdx +++ b/ja/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
装飾用の背景画像。 装飾用の背景画像。 @@ -29,4 +29,4 @@ export const featuredArticles = [ {/* kbIndex は生成された kb-data.jsx からインポートされ、featuredArticles は手動で保守されています */} -
\ No newline at end of file +
diff --git a/ko/resources/support-center/home.mdx b/ko/resources/support-center/home.mdx index c442f105f..3678207e0 100644 --- a/ko/resources/support-center/home.mdx +++ b/ko/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
장식용 배경 이미지. 장식용 배경 이미지. @@ -29,4 +29,4 @@ export const featuredArticles = [ {/* kbIndex는 생성된 kb-data.jsx에서 가져오며, featuredArticles는 수동으로 관리합니다. */} -
\ No newline at end of file +
diff --git a/pt-BR/resources/support-center/home.mdx b/pt-BR/resources/support-center/home.mdx index 57dc55e1b..979c34ad9 100644 --- a/pt-BR/resources/support-center/home.mdx +++ b/pt-BR/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
Imagem decorativa de fundo. Imagem decorativa de fundo. @@ -29,4 +29,4 @@ export const featuredArticles = [ {/* kbIndex é importado do kb-data.jsx gerado; featuredArticles é mantido manualmente */} -
\ No newline at end of file +
diff --git a/resources/support-center/home.mdx b/resources/support-center/home.mdx index 8c99efc7d..f47450659 100644 --- a/resources/support-center/home.mdx +++ b/resources/support-center/home.mdx @@ -19,7 +19,7 @@ export const featuredArticles = [ ];
-
+
-
\ No newline at end of file +
diff --git a/ru/resources/support-center/home.mdx b/ru/resources/support-center/home.mdx index 4b399ea0f..1a697e034 100644 --- a/ru/resources/support-center/home.mdx +++ b/ru/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
Декоративное фоновое изображение. Декоративное фоновое изображение. @@ -29,4 +29,4 @@ export const featuredArticles = [ {/* kbIndex импортируется из сгенерированного файла kb-data.jsx; featuredArticles поддерживается вручную */} -
\ No newline at end of file +
diff --git a/zh/resources/support-center/home.mdx b/zh/resources/support-center/home.mdx index aa3295595..0fab80134 100644 --- a/zh/resources/support-center/home.mdx +++ b/zh/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
装饰性背景图。 装饰性背景图。 @@ -29,4 +29,4 @@ export const featuredArticles = [ {/* kbIndex is imported from the generated kb-data.jsx; featuredArticles is hand-maintained */} -
\ No newline at end of file +
From ffa07a90c7da15097c0de9eda05034efedd6f903 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Thu, 10 Sep 2026 21:41:29 +0200 Subject: [PATCH 04/12] Preserve localized support page indentation --- ar/resources/support-center/home.mdx | 2 +- es/resources/support-center/home.mdx | 2 +- fr/resources/support-center/home.mdx | 2 +- ja/resources/support-center/home.mdx | 2 +- ko/resources/support-center/home.mdx | 2 +- pt-BR/resources/support-center/home.mdx | 2 +- ru/resources/support-center/home.mdx | 2 +- zh/resources/support-center/home.mdx | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ar/resources/support-center/home.mdx b/ar/resources/support-center/home.mdx index 93aeae261..19d4e3fe7 100644 --- a/ar/resources/support-center/home.mdx +++ b/ar/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
صورة خلفية للزينة. صورة خلفية للزينة. diff --git a/es/resources/support-center/home.mdx b/es/resources/support-center/home.mdx index f76ae89a3..182779254 100644 --- a/es/resources/support-center/home.mdx +++ b/es/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
Imagen de fondo decorativa. Imagen de fondo decorativa. diff --git a/fr/resources/support-center/home.mdx b/fr/resources/support-center/home.mdx index 06bb8f943..9b5ad423d 100644 --- a/fr/resources/support-center/home.mdx +++ b/fr/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
Image décorative d’arrière-plan. Image décorative d’arrière-plan. diff --git a/ja/resources/support-center/home.mdx b/ja/resources/support-center/home.mdx index 3e0214d41..50c37eeaa 100644 --- a/ja/resources/support-center/home.mdx +++ b/ja/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
装飾用の背景画像。 装飾用の背景画像。 diff --git a/ko/resources/support-center/home.mdx b/ko/resources/support-center/home.mdx index 3678207e0..734da6a2d 100644 --- a/ko/resources/support-center/home.mdx +++ b/ko/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
장식용 배경 이미지. 장식용 배경 이미지. diff --git a/pt-BR/resources/support-center/home.mdx b/pt-BR/resources/support-center/home.mdx index 979c34ad9..67918f315 100644 --- a/pt-BR/resources/support-center/home.mdx +++ b/pt-BR/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
Imagem decorativa de fundo. Imagem decorativa de fundo. diff --git a/ru/resources/support-center/home.mdx b/ru/resources/support-center/home.mdx index 1a697e034..e82f93cda 100644 --- a/ru/resources/support-center/home.mdx +++ b/ru/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
Декоративное фоновое изображение. Декоративное фоновое изображение. diff --git a/zh/resources/support-center/home.mdx b/zh/resources/support-center/home.mdx index 0fab80134..35c59913c 100644 --- a/zh/resources/support-center/home.mdx +++ b/zh/resources/support-center/home.mdx @@ -20,7 +20,7 @@ export const featuredArticles = [ ];
-
+
装饰性背景图。 装饰性背景图。 From 2d4d6a9bed4c78c89cafad24239eb9d8b2b1b73d Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Thu, 10 Sep 2026 23:01:52 +0200 Subject: [PATCH 05/12] Preserve SQL after lexer errors Reported at https://clickhouse-docs-dpkjhqq26-clickhouse.vercel.app/docs/reference/data-types/boolean --- src/plugins/shiki-clickhouse-sql.ts | 37 ++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/plugins/shiki-clickhouse-sql.ts b/src/plugins/shiki-clickhouse-sql.ts index 082ac417e..a6325d5a4 100644 --- a/src/plugins/shiki-clickhouse-sql.ts +++ b/src/plugins/shiki-clickhouse-sql.ts @@ -66,17 +66,8 @@ function codeChildren(code: string): HastNode[] { const tokens = tokenizeSync(code); const lines: HastNode[][] = [[]]; - for (let index = 0; index < tokens.length; index += 1) { - const token = tokens[index]; - let nextSignificantType: number | undefined; - for (let next = index + 1; next < tokens.length; next += 1) { - if (isSignificant(tokens[next].type)) { - nextSignificantType = tokens[next].type; - break; - } - } - const className = tokenClass(token.type, token.text, nextSignificantType); - const parts = token.text.split("\n"); + const appendText = (value: string, className?: string) => { + const parts = value.split("\n"); for (let partIndex = 0; partIndex < parts.length; partIndex += 1) { if (partIndex > 0) lines.push([]); if (!parts[partIndex]) continue; @@ -92,6 +83,30 @@ function codeChildren(code: string): HastNode[] { : text, ); } + }; + + for (let index = 0; index < tokens.length; index += 1) { + const token = tokens[index]; + let nextSignificantType: number | undefined; + for (let next = index + 1; next < tokens.length; next += 1) { + if (isSignificant(tokens[next].type)) { + nextSignificantType = tokens[next].type; + break; + } + } + const className = tokenClass(token.type, token.text, nextSignificantType); + appendText(token.text, className); + } + + // The server lexer stops after its first error token. SQL examples often + // include copied result tables after a query, so preserve the un-tokenized + // suffix as plain text instead of silently truncating the code block. + const tokenizedPrefix = tokens.map((token) => token.text).join(""); + if (!code.startsWith(tokenizedPrefix)) { + throw new Error("ClickHouse lexer returned tokens that do not match the SQL source"); + } + if (tokenizedPrefix.length < code.length) { + appendText(code.slice(tokenizedPrefix.length)); } return lines.flatMap((line, index) => [ From b19b540c13ef49907376dec7674cc0a748ffa40a Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Thu, 10 Sep 2026 23:06:38 +0200 Subject: [PATCH 06/12] Index sidebar group landing pages Reported at https://clickhouse-docs-dpkjhqq26-clickhouse.vercel.app/docs/reference/settings/session-settings --- src/lib/sidebar-lazy.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lib/sidebar-lazy.ts b/src/lib/sidebar-lazy.ts index ae23a83c9..ec7bd2e35 100644 --- a/src/lib/sidebar-lazy.ts +++ b/src/lib/sidebar-lazy.ts @@ -57,8 +57,12 @@ const normPath = (value: string): string => value.replace(/\/+$/, "") || "/"; function internalLinks(nodes: ConfigItem[]): string[] { const links: string[] = []; for (const node of nodes) { - if ("items" in node) links.push(...internalLinks(node.items)); - else if (!/^(https?:)?\/\//.test(node.link)) links.push(normPath(withBase(node.link))); + if ("items" in node) { + if (node.landing) links.push(normPath(withBase(node.landing))); + links.push(...internalLinks(node.items)); + } else if (!/^(https?:)?\/\//.test(node.link)) { + links.push(normPath(withBase(node.link))); + } } return links; } @@ -82,7 +86,7 @@ function navigationIndex(items: ConfigItem[]): NavigationIndex { railItems: topGroup.items, railPath: [topKeys[topIndex]], }; - for (const link of internalLinks(topGroup.items)) locations.set(link, topLocation); + for (const link of internalLinks([topGroup])) locations.set(link, topLocation); // Solutions is the third authored tab. Use its stable position because // GT translates the visible tab label in locale navigation trees. @@ -95,7 +99,7 @@ function navigationIndex(items: ConfigItem[]): NavigationIndex { railItems: productGroup.items, railPath: [topKeys[topIndex], productKeys[productIndex]], }; - for (const link of internalLinks(productGroup.items)) locations.set(link, productLocation); + for (const link of internalLinks([productGroup])) locations.set(link, productLocation); }); }); }); From e4f0abcc3b948b4547aef8b532dee1a68c95942a Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Fri, 11 Sep 2026 13:46:53 +0200 Subject: [PATCH 07/12] Skip translation cleanup for English previews Reported at https://github.com/ClickHouse/mintlify-docs-dev/actions/runs/34595266133/job/103249446036 --- .github/workflows/site-preview.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/site-preview.yml b/.github/workflows/site-preview.yml index 118fc3e20..f836d816b 100644 --- a/.github/workflows/site-preview.yml +++ b/.github/workflows/site-preview.yml @@ -379,7 +379,9 @@ jobs: # replacements. This also covers abrupt runner termination where the # old run's EXIT trap did not execute. cancel_superseded_deployments "$VERCEL_PROJECT_ID" "english-preview" "English" - cancel_superseded_deployments "$VERCEL_TRANSLATIONS_PROJECT_ID" "translations-preview" "translations" + if [[ "$TRANSLATION_SCOPE" == "all" ]]; then + cancel_superseded_deployments "$VERCEL_TRANSLATIONS_PROJECT_ID" "translations-preview" "translations" + fi trap finalize_preview_comment EXIT trap 'exit 130' INT From 833ed0bdfd000c8811783d3103031d26906fde19 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Fri, 11 Sep 2026 13:48:57 +0200 Subject: [PATCH 08/12] Revert "Skip translation cleanup for English previews" This reverts commit e4f0abcc3b948b4547aef8b532dee1a68c95942a. --- .github/workflows/site-preview.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/site-preview.yml b/.github/workflows/site-preview.yml index f836d816b..118fc3e20 100644 --- a/.github/workflows/site-preview.yml +++ b/.github/workflows/site-preview.yml @@ -379,9 +379,7 @@ jobs: # replacements. This also covers abrupt runner termination where the # old run's EXIT trap did not execute. cancel_superseded_deployments "$VERCEL_PROJECT_ID" "english-preview" "English" - if [[ "$TRANSLATION_SCOPE" == "all" ]]; then - cancel_superseded_deployments "$VERCEL_TRANSLATIONS_PROJECT_ID" "translations-preview" "translations" - fi + cancel_superseded_deployments "$VERCEL_TRANSLATIONS_PROJECT_ID" "translations-preview" "translations" trap finalize_preview_comment EXIT trap 'exit 130' INT From fe9391d9e727aac058c49d2015183461ab6c3f0f Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Fri, 11 Sep 2026 14:00:03 +0200 Subject: [PATCH 09/12] Mark sidebar group landing pages current Addresses review feedback on https://github.com/ClickHouse/mintlify-docs-dev/pull/353 --- src/lib/sidebar-lazy.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/sidebar-lazy.ts b/src/lib/sidebar-lazy.ts index ec7bd2e35..1d4ae6296 100644 --- a/src/lib/sidebar-lazy.ts +++ b/src/lib/sidebar-lazy.ts @@ -197,10 +197,12 @@ export function buildRailFromConfig(items: ConfigItem[], currentPath: string, ke if (n.type === "link") { if (normPath(n.href) === target) { (n as { isCurrent?: boolean }).isCurrent = true; any = true; } } else if (n.type === "group") { + const indexHit = Boolean(n.indexHref && normPath(n.indexHref) === target); + if (indexHit) n.indexIsCurrent = true; const hit = mark(n.children); // SidebarGroup uses the active path for the initial server-rendered // state. Do not overwrite the authored collapsed value here. - if (hit) any = true; + if (indexHit || hit) any = true; } } return any; From a66017ebdca3e9b329dc4ef46323a7eae23bcdcd Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Fri, 11 Sep 2026 14:19:26 +0200 Subject: [PATCH 10/12] Invalidate stale sidebar disclosure state The Session Settings landing page could render open and then immediately close when an older deployment had saved the same structural sidebar hash with that group closed. Version the persisted-state hash so the corrected landing-page behavior gets a clean initial state once, while subsequent user disclosure choices remain persistent.\n\nReported at: https://clickhouse-docs-ubnjtonbh-clickhouse.vercel.app/docs/reference/settings/session-settings --- src/components/ui/sidebar/Sidebar.astro | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/ui/sidebar/Sidebar.astro b/src/components/ui/sidebar/Sidebar.astro index 457d94345..3d42cf946 100644 --- a/src/components/ui/sidebar/Sidebar.astro +++ b/src/components/ui/sidebar/Sidebar.astro @@ -19,7 +19,11 @@ interface Props extends HTMLAttributes<"div"> { } const { items, persist = false, currentLocale, class: className, ...attrs } = Astro.props; -const hash = sidebarHash(items); +// Bump this when the meaning of persisted disclosure state changes. The +// structural Nimbus hash is intentionally stable across active routes, so it +// cannot invalidate state written before group landing pages became active. +const SIDEBAR_STATE_VERSION = 2; +const hash = `${SIDEBAR_STATE_VERSION}:${sidebarHash(items)}`; type LazyGroup = Extract & { _lazyKey?: string }; type IconItem = { icon?: string }; --- From 84956ba15073bcd04618ef89443257991c46e889 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Fri, 11 Sep 2026 14:37:39 +0200 Subject: [PATCH 11/12] Align sidebar landing groups with siblings Landing groups received padding from both their shared row and their page link, which indented Session Settings, MergeTree tables settings, and Format Settings beneath Server Settings. Keep the wrapper unpadded and use the same 16px label inset as Mintlify.\n\nCompared:\nhttps://clickhouse-docs-a6wbm0uvo-clickhouse.vercel.app/docs/reference/settings/session-settings\nhttps://clickhouse.com/docs/reference/settings/session-settings --- src/components/ui/sidebar/SidebarGroup.astro | 3 ++- src/styles/globals.css | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/ui/sidebar/SidebarGroup.astro b/src/components/ui/sidebar/SidebarGroup.astro index b4c8b3507..b7cbed67e 100644 --- a/src/components/ui/sidebar/SidebarGroup.astro +++ b/src/components/ui/sidebar/SidebarGroup.astro @@ -136,6 +136,7 @@ const imageIcon = icon?.startsWith("/") ? inlinePublicIcon(icon) : undefined; )} data-nb-state={isOpen ? "open" : "closed"} data-nb-sidebar-group-label + data-nb-sidebar-group-landing > diff --git a/src/styles/globals.css b/src/styles/globals.css index 824c8a9e6..77c23f7a6 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1230,6 +1230,13 @@ body:not(:has([data-mobile-sidebar])) [data-menu-btn] { line-height: 20px; } +/* Landing groups split their row between a page link and a disclosure button. + * Keep padding on those controls, not on their shared wrapper, so their labels + * align with ordinary sibling groups instead of receiving both padding layers. */ +.ch-sidebar-scroll [data-nb-sidebar-group-landing] { + padding: 0; +} + .ch-sidebar-scroll .nb-sidebar-link:hover, .ch-sidebar-scroll .nb-sidebar-row:hover { color: var(--nb-heading); From 452e8cb0dfc007e7f85b99eb32c31b83eb5c963e Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Fri, 11 Sep 2026 15:02:33 +0200 Subject: [PATCH 12/12] Open sidebar groups selected by landing links Treat a click on a group landing page as an explicit request to open that group before Astro preserves disclosure state for navigation. This prevents a default-closed state from immediately collapsing Session Settings on its landing page. Also align landing-group caret padding with ordinary disclosure rows.\n\nCompared:\nhttps://clickhouse-docs-nvneayipx-clickhouse.vercel.app/docs/reference/settings/session-settings\nhttps://clickhouse.com/docs/reference/settings/session-settings --- src/components/ui/sidebar/SidebarGroup.astro | 2 +- src/components/ui/sidebar/sidebar.client.ts | 28 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/components/ui/sidebar/SidebarGroup.astro b/src/components/ui/sidebar/SidebarGroup.astro index b7cbed67e..5aa787abc 100644 --- a/src/components/ui/sidebar/SidebarGroup.astro +++ b/src/components/ui/sidebar/SidebarGroup.astro @@ -167,7 +167,7 @@ const imageIcon = icon?.startsWith("/") ? inlinePublicIcon(icon) : undefined; // `w-auto` overrides CollapsibleTrigger's default `w-full`, // which would otherwise compete with the label-link's // `flex-1` and starve the label's width. - "w-auto flex items-center shrink-0 min-h-[2rem] px-1.5 py-1 rounded-r-lg", + "w-auto flex items-center shrink-0 min-h-[2rem] pl-1.5 pr-[11px] py-1 rounded-r-lg", "hover:bg-accent hover:text-foreground focus-visible:outline-offset-[-2px]", // The chevron icon uses `group-data-[nb-state=open]/expander:rotate-90` // to rotate on toggle. That variant resolves to the nearest diff --git a/src/components/ui/sidebar/sidebar.client.ts b/src/components/ui/sidebar/sidebar.client.ts index c6c52167b..af2015dd5 100644 --- a/src/components/ui/sidebar/sidebar.client.ts +++ b/src/components/ui/sidebar/sidebar.client.ts @@ -157,6 +157,33 @@ function initPersistence(root: HTMLElement): (() => void) | null { root; const hash = root.dataset.nbSidebarHash ?? ""; + function handleLandingPageClick(event: MouseEvent): void { + if ( + event.defaultPrevented || + event.button !== 0 || + event.metaKey || + event.ctrlKey || + event.shiftKey || + event.altKey + ) { + return; + } + + const target = event.target; + if (!(target instanceof Element)) return; + const link = target.closest("[data-nb-sidebar-group-landing] > a"); + if (!link || !root.contains(link) || link.target === "_blank") return; + + // Selecting a group's landing page also selects that group. Open it before + // Astro captures disclosure state for the route swap; unrelated groups + // retain the exact state chosen by the user. + const group = link.closest("[data-nb-sidebar-group]"); + const trigger = group && ownedTrigger(group); + if (trigger?.getAttribute("data-nb-state") === "closed") trigger.click(); + } + + root.addEventListener("click", handleLandingPageClick); + function readState(): SidebarState { const groups = root.querySelectorAll("[data-nb-sidebar-group]"); const open: Record = {}; @@ -200,6 +227,7 @@ function initPersistence(root: HTMLElement): (() => void) | null { return () => { observer.disconnect(); + root.removeEventListener("click", handleLandingPageClick); document.removeEventListener("visibilitychange", handleVisibility); document.removeEventListener("astro:before-swap", save); window.removeEventListener("pagehide", save);