Découvrez comment utiliser le type Map dans ClickHouse pour stocker, interroger et agréger des données clé-valeur dynamiques, en prenant comme exemple pratique les attributs de ressource OTel.
Dans OpenTelemetry, chaque span de trace contient un ensemble d’attributs de ressource — des métadonnées clé-valeur qui décrivent l’entité ayant produit la télémétrie (nom du service, hôte, région cloud, pod Kubernetes, etc.). L’ensemble des clés varie selon les services et les environnements, ce qui en fait un cas d’usage naturel pour le type Map de ClickHouse : les clés sont dynamiques et spécifiques à l’application, mais une ligne donnée n’en contient généralement qu’une poignée.Dans ce guide de démarrage rapide, vous utiliserez clickhouse-local pour charger de vraies données de trace OTel à partir d’un fichier CSV dans une table comportant des colonnes Map(LowCardinality(String), String), et vous apprendrez à interroger, filtrer, agréger et optimiser des données de type map.
1
Télécharger les données d’exemple
Le jeu de données contient 6 120 spans de traces OTel exportés à partir d’une application de microservices de démonstration. Chaque ligne comprend une colonne ResourceAttributes et une colonne SpanAttributes contenant des paires clé-valeur dynamiques sous forme de mappages JSON.
Enregistrez le fichier dans un répertoire facile à retrouver, par exemple ~/data/data-otel-traces.csv.Télécharger data-otel-traces.csv (2,9 Mo)Voici à quoi ressemble une ligne :
Lancez clickhouse-local et créez la table suivante avec un schéma correspondant à celui du CSV.
La colonne de clé est ResourceAttributes Map(LowCardinality(String), String) - LowCardinality est utilisé pour le type de clé, car les clés d’attribut OTel sont tirées d’un ensemble relativement restreint et répétitif.
Chargez maintenant le CSV à l’aide du moteur de table file. Adaptez le chemin à l’emplacement où vous avez enregistré le fichier :
INSERT INTO otel_tracesSELECT * FROM file('~/data/data-otel-traces.csv', CSVWithNames);
Vérifiez que les données ont bien été chargées :
SELECT count() FROM otel_traces;
Vous devriez voir 6 120 lignes.
3
Interroger les données
Accéder à une clé spécifique — utilisez la syntaxe entre crochets pour récupérer une valeur dans la map. Si la clé n’existe pas pour une ligne donnée, vous obtenez la valeur par défaut du type de valeur (chaîne vide pour String) :
SELECT ServiceName, SpanName, ResourceAttributes['host.name'] AS host, ResourceAttributes['k8s.pod.name'] AS pod, ResourceAttributes['deployment.environment'] AS envFROM otel_tracesLIMIT 10;
Filtrer par valeur de map — trouver tous les spans associés à un nom de service donné :
SELECT Timestamp, SpanName, Duration / 1e6 AS duration_msFROM otel_tracesWHERE ResourceAttributes['service.name'] = 'cartservice'ORDER BY TimestampLIMIT 10;
Vérifiez si une clé existe — tous les spans ne contiennent pas de métadonnées Kubernetes. Utilisez mapContains pour repérer ceux qui en ont :
SELECT ServiceName, SpanName, mapContains(ResourceAttributes, 'k8s.node.name') AS has_node_infoFROM otel_tracesLIMIT 10;
Inspectez toutes les clés présentes dans le jeu de données — utile pour comprendre ce que produit l’instrumentation :
SELECT DISTINCT arrayJoin(mapKeys(ResourceAttributes)) AS keyFROM otel_tracesORDER BY key;
Décomposer une map en lignes avec ARRAY JOIN — transformez chaque paire clé-valeur en ligne distincte, ce qui est pratique pour créer des inventaires d’attributs ou alimenter des tableaux de bord :
SELECT ServiceName, key, valueFROM otel_tracesARRAY JOIN mapKeys(ResourceAttributes) AS key, mapValues(ResourceAttributes) AS valueWHERE ServiceName = 'cartservice'LIMIT 20;
Filtrer les maps avec mapFilter — extrayez uniquement les attributs relatifs à Kubernetes de chaque span :
SELECT ServiceName, mapFilter((k, v) -> k LIKE 'k8s.%', ResourceAttributes) AS k8s_attrsFROM otel_tracesWHERE mapContains(ResourceAttributes, 'k8s.pod.name')LIMIT 10;
Repérez les spans d’erreur et leur contexte de ressource — combinez des filtres classiques sur les colonnes avec l’accès à la map :
SELECT Timestamp, ServiceName, SpanName, ResourceAttributes['host.name'] AS host, ResourceAttributes['k8s.pod.name'] AS pod, SpanAttributes['error.type'] AS error_type, SpanAttributes['error.message'] AS error_messageFROM otel_tracesWHERE StatusCode = 'STATUS_CODE_ERROR';
4
Agréger des maps avec le combinateur -Map
Le combinateur d’agrégation -Map de ClickHouse vous permet d’appliquer n’importe quelle fonction d’agrégation à une colonne Map afin qu’elle s’applique indépendamment à chaque clé. Le résultat est lui aussi une Map — une entrée par clé, avec la valeur agrégée. C’est particulièrement utile pour les métriques OTel, où les compteurs ou les gauges sont stockés dans des valeurs de map.Pour le montrer, créez une petite table de métriques dans laquelle chaque ligne enregistre le nombre de codes d’état HTTP sous forme de Map(String, UInt64) :
Utilisez maintenant sumMap pour obtenir le total des occurrences par code d’état pour chaque service :
SELECT ServiceName, sumMap(StatusCounts) AS total_by_statusFROM otel_http_status_countsGROUP BY ServiceName;
Le suffixe -Map fonctionne avec n’importe quelle fonction d’agrégation ; vous pouvez donc utiliser minMap, maxMap ou avgMap tout aussi facilement :
SELECT ServiceName, avgMap(StatusCounts) AS avg_by_status, maxMap(StatusCounts) AS peak_by_statusFROM otel_http_status_countsGROUP BY ServiceName;
Vous pouvez également le combiner avec d’autres combinateurs. Par exemple, sumMapIf permet d’agréger de manière conditionnelle — ici, en additionnant uniquement les fenêtres d’une minute où le service présentait déjà des erreurs :
SELECT ServiceName, sumMapIf(StatusCounts, StatusCounts['5xx'] > 0) AS totals_in_error_windowsFROM otel_http_status_countsGROUP BY ServiceName;
Pourquoi c’est important pour OTel : lorsque votre OTel Collector écrit dans ClickHouse une ventilation par minute des codes de statut, sumMap vous permet de les agréger en totaux horaires ou quotidiens dans une seule requête — sans ARRAY JOIN, sans dé-pivotage, et sans avoir à connaître à l’avance l’ensemble des clés. Toute clé présente dans n’importe quelle ligne est automatiquement incluse dans le résultat.
5
Optimisez les clés fréquemment utilisées dans les requêtes
Si vous constatez que vous filtrez constamment sur la même clé de map — host.name est un cas courant — vous pouvez l’extraire dans une colonne matérialisée. Cela évite de parcourir linéairement la map à chaque requête :
ALTER TABLE otel_traces ADD COLUMN HostName String MATERIALIZED ResourceAttributes['host.name'];
Pour les données existantes, remplissez la colonne rétroactivement :
ALTER TABLE otel_traces MATERIALIZE COLUMN HostName;
Désormais, WHERE HostName = 'prod-cart-01' ne lit qu’une seule colonne dédiée au lieu de l’intégralité de la Map. C’est l’approche recommandée dans le schéma OTel de ClickHouse pour tout attribut que vous interrogez fréquemment.
Map(LowCardinality(String), String) est le type idiomatique pour les attributs OTel — suffisamment flexible pour gérer des ensembles de clés variables, et LowCardinality permet de stocker efficacement les clés.
La syntaxe entre crochets (map['key']) est la façon la plus courante d’accéder aux valeurs, mais gardez à l’esprit qu’elle effectue un balayage linéaire — très bien pour des maps contenant quelques dizaines de clés, moins adapté pour des centaines.
Les colonnes matérialisées sont la solution de secours : lorsqu’une clé de map devient un filtre fréquemment utilisé, faites-en une vraie colonne pour un accès indexé et colonnaire.
mapContains, mapKeys, mapValues, mapFilter et ARRAY JOIN vous offrent une boîte à outils complète pour explorer et transformer des données de type map sans quitter SQL.
Le combinateur d’agrégation -Map (sumMap, avgMap, maxMap, etc.) agrège chaque clé indépendamment d’une ligne à l’autre — idéal pour consolider des compteurs de métriques OTel sans avoir à connaître l’ensemble de clés à l’avance. Il se combine aussi avec d’autres combinateurs (par ex. sumMapIf).
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"ClickHouse Documentation","colors":{"primary":"#1c1c1c","light":"#333431","dark":"#fdff75"},"logo":{"light":"https://mintcdn.com/private-7c7dfe99/h2VHbIjccjT9ClSc/_site/logo/light.svg?fit=max\u0026auto=format\u0026n=h2VHbIjccjT9ClSc\u0026q=85\u0026s=b8a838f982def2b530a95016300bc7ec","dark":"https://mintcdn.com/private-7c7dfe99/h2VHbIjccjT9ClSc/_site/logo/dark.svg?fit=max\u0026auto=format\u0026n=h2VHbIjccjT9ClSc\u0026q=85\u0026s=563dcf3fc5bb3694597dec207c9b4ecf"},"favicon":"https://mintcdn.com/private-7c7dfe99/h2VHbIjccjT9ClSc/_site/favicon.svg?fit=max\u0026auto=format\u0026n=h2VHbIjccjT9ClSc\u0026q=85\u0026s=9a2d9de19e9259c4b5260fa5bfa26851","appearance":{"default":"dark"},"background":{"color":{"light":"#FFFFFF","dark":"#151515"}},"navbar":{},"fonts":{"family":"Inter"},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"clarity":{"projectId":"xgummrwgj9"},"gtm":{"tagId":"GTM-WTNTDT7W"}},"contextual":{"options":["copy","view","download-pdf",{"title":"Set up the ClickHouse documentation MCP server","description":"Setup instructions for the ClickHouse documentation MCP server","icon":"/images/icons/icon-mcp.svg","href":"https://clickhouse.com/docs/resources/support-center/knowledge-base/setup-installation/set-up-clickhouse-documentation-mcp-server"}],"display":"toc"},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"variables":{"airgap_server_tag":"26.4.1.2709","airgap_keeper_tag":"26.2.1.258","airgap_operator_tag":"1.22992.1","airgap_cr_helm_tag":"1.11.11","airgap_api_tag":"1.175.4","airgap_api_helm_tag":"1.175.4","airgap_preflight_chart_tag":"1.38.7","airgap_support_bundle_tag":"1.12.0"},"navigation":{"languages":[{"language":"en","href":""},{"language":"ar","href":"ar"},{"language":"es","href":"es"},{"language":"fr","href":"fr"},{"language":"ja","href":"ja"},{"language":"ko","href":"ko"},{"language":"pt-BR","href":"pt-BR"},{"language":"ru","href":"ru"},{"language":"zh","href":"zh"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"private-7c7dfe99","hasAudioNarration":false,"actualSubdomain":"private-7c7dfe99","customDomains":["clickhouse.com"],"gitSource":{"_id":"6ad7fa91692c7c940ff17a19","type":"github","owner":"clickhouse","repo":"clickhouse","deployBranch":"master","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae8d9fc28a88ed9db40f71c","collectionId":"2dfa09da-3a3e-4782-ad6a-6694be472bd7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae8d9fc28a88ed9db40f71c"},"feedback":{"thumbs":true,"edits":true,"issues":true,"contextualFeedback":{"allowEmail":false},"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED","enabled":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae8d9fc28a88ed9db40f71c","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"en","tag":"Database","count":1751},{"language":"ja","tag":"データベース","count":1737},{"language":"pt-BR","tag":"Banco de dados","count":1737},{"language":"zh","tag":"数据库","count":1737},{"language":"ar","tag":"قاعدة البيانات","count":1736},{"language":"es","tag":"Base de datos","count":1736},{"language":"fr","tag":"Base de données","count":1736},{"language":"ko","tag":"데이터베이스","count":1736},{"language":"ru","tag":"База данных","count":1736},{"language":"en","tag":"Reference","count":1576},{"language":"ar","tag":"المرجع","count":1565},{"language":"es","tag":"Referencia","count":1565},{"language":"fr","tag":"Référence","count":1565},{"language":"ja","tag":"リファレンス","count":1565},{"language":"ko","tag":"참고","count":1565},{"language":"pt-BR","tag":"Referência","count":1565},{"language":"ru","tag":"Справочник","count":1565},{"language":"zh","tag":"参考文档","count":1565},{"language":"en","tag":"Solutions","count":560},{"language":"ar","tag":"الحلول","count":554},{"language":"es","tag":"Soluciones","count":554},{"language":"fr","tag":"Solutions","count":554},{"language":"ja","tag":"ソリューション","count":554},{"language":"ko","tag":"솔루션","count":554},{"language":"pt-BR","tag":"Soluções","count":554},{"language":"ru","tag":"Решения","count":554},{"language":"zh","tag":"解决方案","count":554},{"language":"es","tag":"Configuración","count":531},{"language":"ja","tag":"設定","count":531},{"language":"en","tag":"Settings","count":509},{"language":"ar","tag":"الإعدادات","count":505},{"language":"fr","tag":"Paramètres","count":505},{"language":"ko","tag":"설정","count":505},{"language":"pt-BR","tag":"Configurações","count":505},{"language":"ru","tag":"Настройки","count":505},{"language":"zh","tag":"设置","count":505},{"language":"en","tag":"Functions","count":330},{"language":"ar","tag":"الدوال","count":328},{"language":"es","tag":"Funciones","count":328},{"language":"fr","tag":"Fonctions","count":328},{"language":"ja","tag":"関数","count":328},{"language":"ko","tag":"함수","count":328},{"language":"pt-BR","tag":"Funções","count":328},{"language":"ru","tag":"Функции","count":328},{"language":"zh","tag":"函数","count":328},{"language":"en","tag":"Integrations","count":300},{"language":"ko","tag":"통합","count":296},{"language":"zh","tag":"集成","count":296},{"language":"ar","tag":"التكاملات","count":293},{"language":"es","tag":"Integraciones","count":293},{"language":"fr","tag":"Intégrations","count":293},{"language":"pt-BR","tag":"Integrações","count":293},{"language":"ru","tag":"Интеграции","count":293},{"language":"pt-BR","tag":"Recursos","count":291},{"language":"ja","tag":"インテグレーション","count":268},{"language":"en","tag":"Session Settings","count":261},{"language":"ar","tag":"إعدادات session","count":260},{"language":"es","tag":"Configuración de sesión","count":260},{"language":"fr","tag":"Paramètres de session","count":260},{"language":"ja","tag":"session 設定","count":260},{"language":"ko","tag":"세션 설정","count":260},{"language":"pt-BR","tag":"Configurações de sessão","count":260},{"language":"ru","tag":"Настройки сеанса","count":260},{"language":"zh","tag":"会话设置","count":260},{"language":"en","tag":"ClickHouse Cloud","count":256},{"language":"ar","tag":"ClickHouse Cloud","count":255},{"language":"es","tag":"ClickHouse Cloud","count":255},{"language":"fr","tag":"ClickHouse Cloud","count":255},{"language":"ja","tag":"ClickHouse Cloud","count":255},{"language":"ko","tag":"ClickHouse Cloud","count":255},{"language":"pt-BR","tag":"ClickHouse Cloud","count":255},{"language":"ru","tag":"ClickHouse Cloud","count":255},{"language":"zh","tag":"ClickHouse Cloud","count":255},{"language":"ar","tag":"أدلة إرشادية","count":219},{"language":"en","tag":"Guides","count":219},{"language":"es","tag":"Guías","count":219},{"language":"fr","tag":"Guides","count":219},{"language":"ja","tag":"ガイド","count":219},{"language":"ko","tag":"가이드","count":219},{"language":"pt-BR","tag":"Guias","count":219},{"language":"ru","tag":"Руководства","count":219},{"language":"zh","tag":"指南","count":219},{"language":"ar","tag":"الموارد","count":213},{"language":"en","tag":"Resources","count":213},{"language":"es","tag":"Recursos","count":213},{"language":"fr","tag":"Ressources","count":213},{"language":"ja","tag":"リソース","count":213},{"language":"ko","tag":"자료","count":213},{"language":"ru","tag":"Ресурсы","count":213},{"language":"zh","tag":"资源","count":213},{"language":"default","tag":"Solutions","count":125},{"language":"default","tag":"ClickHouse Cloud","count":125},{"language":"default","tag":"Cloud API","count":83},{"language":"default","tag":"API reference","count":83},{"language":"default","tag":"ClickHouse Private","count":42},{"language":"default","tag":"ClickStack","count":31},{"language":"default","tag":"Service","count":24},{"language":"default","tag":"Organization","count":21},{"language":"default","tag":"Postgres","count":18},{"language":"default","tag":"How-To Guides","count":17}],"searchSettings":{"maxResults":1}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"github-push-net-diff","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"_site/styles.css","href":"/docs/_mintlify/custom/private-7c7dfe99/2a1d0d506d6c7ad1/_site/styles.css"},{"filePath":"snippets/components/Badges/badges_styles.css","content":".ClickHouseSupportedBadge,.betaBadge{background-color:#dbeafe;border-radius:16px;display:flex;align-items:center;padding:5px 12px;color:#1d4ed8;display:inline-flex;margin-right:5px;font-size:.875rem}.betaBadge::before{content:\"β\";flex:0 0 auto;margin-right:8px;font-size:1rem;font-weight:600;line-height:1}.dark a.betaBadge,a.betaBadge{color:#1d4ed8!important;text-decoration:none!important}.dark .betaBadge{background-color:#1e3a6b;color:#93c5fd}.dark a.betaBadge{color:#93c5fd!important}.ClickHouseSupportedBadge{background-color:#faff69;color:#161517}.ClickHouseSupportedIcon{margin-right:8px}.ClickHouseSupportedIcon svg path{fill:#282828}.ClickHouseSupportedBadge a{color:#000}.dark .ClickHouseSupportedBadge{background-color:#faff69;color:#161517}.dark .ClickHouseSupportedBadge a{color:#161517}.dark .ClickHouseSupportedIcon svg path{fill:#161517}.cloudNotSupportedBadge{background-color:#f6e5ff;color:#609;border-radius:16px;display:flex;align-items:center;padding:5px 12px;display:inline-flex;margin-right:5px;font-size:.875rem}.cloudNotSupportedIcon{margin-right:8px}a.cloudNotSupportedBadge{color:#609!important;text-decoration:none!important}.cloudNotSupportedIcon svg path{stroke:#609}.dark .cloudNotSupportedBadge{background-color:#33004d;color:#ecf}.dark a.cloudNotSupportedBadge{color:#ecf!important;text-decoration:none!important}.dark .cloudNotSupportedIcon svg path{stroke:#ecf}.cloudBadge{background-color:#dae6fc;color:#061d48;border-radius:16px;display:flex;align-items:center;padding:5px 12px;display:inline-flex;margin-right:5px;font-size:.875rem}.dark .cloudBadge{background-color:#061d48;color:#dae6fc}.cloudIcon{margin-right:8px}.cloudIcon svg path{stroke:#061d48}.dark .cloudIcon svg path{stroke:#dae6fc}.CommunityMaintainedBadge{background-color:#69afff;border-radius:16px;display:flex;align-items:center;padding:5px 12px;color:#fff;display:inline-flex;margin-right:5px;font-size:.875rem}.CommunityMaintainedIcon{margin-right:8px}.CommunityMaintainedIcon svg path,.dark .CommunityMaintainedIcon svg path{fill:#fff;stroke:none}.CommunityMaintainedBadge a,.CommunityMaintainedBadge svg path{color:#69afff}.dark .CommunityMaintainedBadge{background-color:#69afff;color:#fff}.dark .CommunityMaintainedBadge a{color:#fff}.deprecatedBadge{background-color:#dfdfdf;color:#53575f;border-radius:16px;display:flex;align-items:center;padding:5px 12px;display:inline-flex;margin-right:5px;font-size:.875rem}.deprecatedIcon{margin-right:8px}.dark .deprecatedBadge a,.deprecatedBadge a{color:inherit}.dark .deprecatedBadge{background-color:#414141;color:#e6e7e9}.deprecatedIcon svg path{stroke:#53575f}.dark .deprecatedIcon svg path{stroke:#e6e7e9}.enterprisePlanFeatureContainer{background-color:#f6f7fa;border-radius:4px;border:1px solid #e6e7e9;padding:12px 16px;margin-bottom:8px;font-size:.875rem}.enterprisePlanFeatureContainer p,.scalePlanFeatureContainer p{margin:0;padding:0}.enterprisePlanFeatureBadge,.experimentalBadge{border-radius:16px;display:flex;align-items:center;display:inline-flex;font-size:.875rem}.enterprisePlanFeatureBadge{background-color:#008a0b;border:1px;border-color:#437eef;color:#fff;padding:2px 12px;margin-bottom:8px}.dark .enterprisePlanFeatureContainer{background-color:#1f1f1c;border:1px solid #414141}.dark .enterprisePlanFeatureBadge{background-color:#99ffa1;color:#1f1f1c}.experimentalBadge{background-color:#f3e8ff;color:#6d28d9;padding:5px 12px;margin-right:5px}.experimentalIcon{margin-right:8px}.dark a.experimentalBadge,a.experimentalBadge{color:#6d28d9!important;text-decoration:none!important}.dark .experimentalBadge{background-color:#3b1d6b;color:#d8b4fe}.dark a.experimentalBadge{color:#d8b4fe!important}.experimentalIcon svg path{stroke:#6d28d9}.dark .experimentalIcon svg path{stroke:#d8b4fe}.PartnerBadge{background-color:#990073;border-radius:16px;display:flex;align-items:center;padding:5px 12px;color:#fff;display:inline-flex;margin-right:5px;font-size:.875rem}.PartnerBadgeIcon{margin-right:8px}.PartnerBadgeIcon svg path{fill:#fbc9ef;stroke:#990073}.PartnerBadge a,.PartnerBadge svg path{color:#990073}.dark .PartnerBadge{background-color:#990073;color:#fbeff8}.dark .PartnerBadge a{color:#fbeff8}.dark .PartnerBadgeIcon svg path{fill:#990073;stroke:#fbeff8}.privatePreviewBadge{background-color:#fef3c7;color:#b45309;border-radius:16px;display:flex;align-items:center;padding:5px 12px;display:inline-flex;margin-right:5px;font-size:.875rem}.dark .privatePreviewBadge{background-color:#4b3410;color:#fcd34d}.privatePreviewIcon{margin-right:8px}.privatePreviewIcon svg path{stroke:#b45309}.dark .privatePreviewIcon svg path{stroke:#fcd34d}.publicPreviewBadge{background-color:#dbeafe;border-radius:16px;display:flex;align-items:center;padding:5px 12px;color:#1d4ed8;display:inline-flex;margin-right:5px;font-size:.875rem}.dark .publicPreviewBadge{background-color:#1e3a6b;color:#93c5fd}.scalePlanFeatureContainer{background-color:#f6f7fa;border-radius:4px;border:1px solid #e6e7e9;padding:12px 16px;margin-bottom:8px;font-size:.875rem}.scalePlanFeatureBadge{border-radius:16px;display:flex;align-items:center;display:inline-flex;padding:2px 12px;margin-bottom:8px;font-size:.875rem}.dark .scalePlanFeatureContainer{background-color:#1f1f1c;border:1px solid #414141}.dark .scalePlanFeatureBadge,.scalePlanFeatureBadge{background-color:#1d64ec;color:#fff}"},{"filePath":"snippets/components/ClickStackAnimation/ClickStackAnimation.css","content":"@keyframes fadeInOut{0%,to{opacity:.3}50%{opacity:.8}}.clickstack-animation-wrapper{width:100%;max-width:max-content;transition:opacity .3s ease}.clickstack-animation-inner{transform-origin:top left}.clickstack-grid{display:grid;width:537px;height:537px;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}.clickstack-grid-item{position:relative;display:flex;align-items:center;justify-content:center}.clickstack-grid-column{display:flex;flex-direction:column;align-items:center}.clickstack-icon-box{display:flex;width:4rem;height:4rem;align-items:center;justify-content:center;border-radius:.375rem;padding:1rem;flex-shrink:0;border:1px solid rgba(113,113,122,.8);background-color:#171717}.clickstack-svg-absolute{position:absolute}.clickstack-svg-left-center{left:50%;top:50%;transform:translateY(2rem)}.clickstack-svg-right-center{right:50%;top:50%;transform:translateY(2rem)}.clickstack-svg-bottom-left{bottom:50%;left:50%;transform:translateY(-2rem)}.clickstack-svg-bottom-right{bottom:50%;right:50%;transform:translateY(-2rem)}.clickstack-logo-container{position:relative}.clickstack-logo-glow{position:absolute;inset:0;z-index:0;animation:fadeInOut 3s ease-in-out infinite;background-color:rgba(250,255,105,.6);filter:blur(40px)}.clickstack-logo-box{position:absolute;inset:0;z-index:10;display:flex;border-radius:.5rem;border:2px solid #faff69;background-color:#262626;background-image:linear-gradient(to bottom right,rgba(250,255,105,.2),rgba(250,255,105,.4))}.clickstack-logo-svg{margin:auto}:is(.light) .clickstack-logo-glow{display:none}:is(.light) .clickstack-logo-box{border-color:#faff69;background-color:#000;background-image:none}.clickstack-line-bg{stroke:#414141}.clickstack-line-animated{stroke:#faff69}:is(.light) .clickstack-line-bg{stroke:#d4d4d8}:is(.light) .clickstack-line-animated{stroke:#a1a1aa}@media (max-width:767px){.clickstack-animation-wrapper{max-width:400px}.clickstack-grid{width:400px;height:400px}}"}],"page":{"pagePath":"fr/get-started/quickstarts/working-with-the-map-type","slug":"/fr/get-started/quickstarts/working-with-the-map-type","pageMetadata":{"sidebarTitle":"Utilisation du type Map dans ClickHouse","searchable":true,"title":"Utilisation du type Map dans ClickHouse","useCases":["Observability"],"products":["OSS"],"description":"Découvrez comment utiliser le type Map dans ClickHouse pour stocker, interroger et agréger des données clé-valeur dynamiques, en prenant comme exemple pratique les attributs de ressource OTel.","href":"/fr/get-started/quickstarts/working-with-the-map-type"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Découvrez comment utiliser le type Map dans ClickHouse pour stocker, interroger et agréger des données clé-valeur dynamiques, en prenant comme exemple pratique les attributs de ressource OTel.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const e_1=undefined;const e_0=undefined;function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Badge,CodeBlock,Frame,Heading,Step,Steps}=_components;if(!Badge)_missingMdxReference(`Badge`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.a,{href:`/get-started/quickstarts/home`,onClick:e_0=>{e_0.preventDefault();window.location.href=(window.location.pathname.startsWith(`/docs`)?`/docs`:``)+`/get-started/quickstarts/home`},className:`mint-inline-flex mint-items-center mint-gap-1.5 mint-text-sm mint-text-gray-500 dark:mint-text-zinc-500 hover:mint-text-gray-900 dark:hover:mint-text-[#fdff75] mint-transition-colors mint-font-normal mint-no-underline`,children:[_jsxs(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`mint-shrink-0`,children:[_jsx(`path`,{d:`M19 12H5`}),_jsx(`path`,{d:`M12 19l-7-7 7-7`})]}),`All quickstarts`]}),`\n`,_jsxs(`div`,{className:`mint-mt-2 mint-flex mint-flex-wrap mint-gap-2`,children:[_jsx(Badge,{size:`lg`,color:`blue`,children:`Observability`}),_jsx(Badge,{size:`lg`,color:`orange`,children:`OSS`})]}),`\n`,_jsx(`div`,{id:`prerequisites`,children:_jsx(Heading,{level:`2`,id:`prérequis`,children:`Prérequis`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`clickhouse-local`}),` installé sur votre machine. Consultez le `,_jsx(_components.a,{href:`/fr/concepts/features/tools-and-utilities/clickhouse-local`,children:`guide d’installation de clickhouse-local`}),` pour démarrer.`]}),`\n`]}),`\n`,_jsx(`div`,{id:`what-youll-build`,children:_jsx(Heading,{level:`2`,id:`ce-que-vous-allez-créer`,children:`Ce que vous allez créer`})}),`\n`,_jsxs(_components.p,{children:[`Dans OpenTelemetry, chaque span de trace contient un ensemble d’`,_jsx(_components.strong,{children:`attributs de ressource`}),` — des métadonnées clé-valeur qui décrivent l’entité ayant produit la télémétrie (nom du service, hôte, région cloud, pod Kubernetes, etc.). L’ensemble des clés varie selon les services et les environnements, ce qui en fait un cas d’usage naturel pour le type `,_jsx(_components.code,{children:`Map`}),` de ClickHouse\\xA0: les clés sont dynamiques et spécifiques à l’application, mais une ligne donnée n’en contient généralement qu’une poignée.`]}),`\n`,_jsxs(_components.p,{children:[`Dans ce guide de démarrage rapide, vous utiliserez `,_jsx(_components.code,{children:`clickhouse-local`}),` pour charger de vraies données de trace OTel à partir d’un fichier CSV dans une table comportant des colonnes `,_jsx(_components.code,{children:`Map(LowCardinality(String), String)`}),`, et vous apprendrez à interroger, filtrer, agréger et optimiser des données de type map.`]}),`\n`,_jsxs(Steps,{titleSize:`h3`,children:[_jsxs(Step,{title:`Télécharger les données d’exemple`,id:`download-the-sample-data`,children:[_jsxs(_components.p,{children:[`Le jeu de données contient 6 120 spans de traces OTel exportés à partir d’une application de microservices de démonstration. Chaque ligne comprend une colonne `,_jsx(_components.code,{children:`ResourceAttributes`}),` et une colonne `,_jsx(_components.code,{children:`SpanAttributes`}),` contenant des paires clé-valeur dynamiques sous forme de mappages JSON.\nEnregistrez le fichier dans un répertoire facile à retrouver, par exemple `,_jsx(_components.code,{children:`~/data/data-otel-traces.csv`}),`.`]}),_jsxs(`a`,{href:`https://clickhouse-docs-assets.s3.us-east-1.amazonaws.com/data-otel-traces.csv`,download:true,className:`mint-inline-flex mint-items-center mint-gap-2 mint-px-3 mint-py-1.5 mint-text-sm mint-font-medium mint-rounded-lg mint-border mint-border-gray-300 dark:mint-border-white/20 mint-bg-white dark:mint-bg-[#1B1B18] mint-text-black dark:mint-text-white hover:mint-border-[#FAFF69] mint-transition-all mint-no-underline mint-mb-4`,children:[_jsx(`svg`,{width:`14`,height:`14`,viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:_jsx(`path`,{d:`M8 1v10M8 11L4.5 7.5M8 11l3.5-3.5M2 13h12`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`})}),_jsx(_components.p,{children:`Télécharger data-otel-traces.csv (2,9 Mo)`})]}),_jsx(_components.p,{children:`Voici à quoi ressemble une ligne\\xA0:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`12`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Timestamp: 2025-12-26 00:00:45.759467000`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`TraceId: 0da128e6e3c01bc38b6b43a33e5fa522`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SpanId: 3774f759424e4006`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ParentSpanId: 2fdd1e5b66605098`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SpanName: orders receive`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SpanKind: SPAN_KIND_CONSUMER`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ServiceName: accountingservice`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Duration: 5361`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`StatusCode: STATUS_CODE_UNSET`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ResourceAttributes: {\"host.name\":\"f19476836e47\",\"os.type\":\"linux\",\"process.pid\":\"1\",\"process.command_args\":\"[\\\\\"./accountingservice\\\\\"]\",\"process.executable.path\":\"...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SpanAttributes: {\"network.transport\":\"tcp\",\"messaging.destination.name\":\"orders\",\"messaging.kafka.message.offset\":\"232260\",\"messaging.message.body.size\":\"216\"...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),_jsxs(Step,{title:`Créer la table et charger les données`,id:`create-the-table-and-load-the-data`,children:[_jsxs(_components.p,{children:[`Lancez `,_jsx(_components.code,{children:`clickhouse-local`}),` et créez la table suivante avec un schéma correspondant à celui du CSV.\nLa colonne de clé est `,_jsx(_components.code,{children:`ResourceAttributes Map(LowCardinality(String), String)`}),` - `,_jsx(_components.code,{children:`LowCardinality`}),` est utilisé pour le type de clé, car les clés d’attribut OTel sont tirées d’un ensemble relativement restreint et répétitif.`]}),_jsx(CodeBlock,{filename:``,highlight:`[12]`,numberOfLines:`16`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`16`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`CREATE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TABLE`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` otel_traces`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` Timestamp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` DateTime64(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`9`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` TraceId String,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanId String,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ParentSpanId String,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanName LowCardinality(String),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanKind LowCardinality(String),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName LowCardinality(String),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Duration UInt64,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` StatusCode LowCardinality(String),`})}),`\n`,_jsx(_components.span,{className:`line line-highlight`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ResourceAttributes Map(LowCardinality(String), String),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanAttributes Map(LowCardinality(String), String)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ENGINE `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` MergeTree()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ORDER BY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (ServiceName, SpanName, toUnixTimestamp(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`Timestamp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Chargez maintenant le CSV à l’aide du moteur de table `,_jsx(_components.code,{children:`file`}),`. Adaptez le chemin à l’emplacement où vous avez enregistré le fichier\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`INSERT INTO`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` *`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` FROM`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` file`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'~/data/data-otel-traces.csv'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, CSVWithNames);`})]}),`\n`]})})}),_jsx(_components.p,{children:`Vérifiez que les données ont bien été chargées\\xA0:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` count`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces;`})]}),`\n`]})})}),_jsx(_components.p,{children:`Vous devriez voir 6 120 lignes.`})]}),_jsxs(Step,{title:`Interroger les données`,id:`query-the-data`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Accéder à une clé spécifique`}),` — utilisez la syntaxe entre crochets pour récupérer une valeur dans la map. Si la clé n’existe pas pour une ligne donnée, vous obtenez la valeur par défaut du type de valeur (chaîne vide pour `,_jsx(_components.code,{children:`String`}),`)\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanName,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ResourceAttributes['host.name'] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` host,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ResourceAttributes['k8s.pod.name'] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pod,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ResourceAttributes['deployment.environment'] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` env`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`LIMIT`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 10`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Filtrer par valeur de map`}),` — trouver tous les spans associés à un nom de service donné\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` Timestamp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanName,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Duration `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` 1e6 `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` duration_ms`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WHERE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ResourceAttributes['service.name'] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'cartservice'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ORDER BY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` Timestamp`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`LIMIT`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 10`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Vérifiez si une clé existe`}),` — tous les spans ne contiennent pas de métadonnées Kubernetes. Utilisez `,_jsx(_components.code,{children:`mapContains`}),` pour repérer ceux qui en ont\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanName,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mapContains(ResourceAttributes, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'k8s.node.name'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` has_node_info`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`LIMIT`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 10`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Inspectez toutes les clés présentes dans le jeu de données`}),` — utile pour comprendre ce que produit l’instrumentation\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT DISTINCT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` arrayJoin(mapKeys(ResourceAttributes)) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` key`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ORDER BY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Décomposer une map en lignes avec ARRAY JOIN`}),` — transformez chaque paire clé-valeur en ligne distincte, ce qui est pratique pour créer des inventaires d’attributs ou alimenter des tableaux de bord\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` value`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ARRAY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` JOIN`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mapKeys(ResourceAttributes) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mapValues(ResourceAttributes) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` value`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WHERE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'cartservice'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`LIMIT`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 20`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Filtrer les maps avec mapFilter`}),` — extrayez uniquement les attributs relatifs à Kubernetes de chaque span\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mapFilter((k, v) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` k `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`LIKE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'k8s.%'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, ResourceAttributes) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` k8s_attrs`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WHERE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mapContains(ResourceAttributes, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'k8s.pod.name'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`LIMIT`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 10`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Repérez les spans d’erreur et leur contexte de ressource`}),` — combinez des filtres classiques sur les colonnes avec l’accès à la map\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` Timestamp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanName,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ResourceAttributes['host.name'] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` host,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ResourceAttributes['k8s.pod.name'] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pod,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanAttributes['error.type'] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` error_type,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SpanAttributes['error.message'] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` error_message`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WHERE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` StatusCode `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'STATUS_CODE_ERROR'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})})]}),_jsxs(Step,{title:`Agréger des maps avec le combinateur -Map`,id:`aggregate-across-maps-with-the--map-combinator`,children:[_jsxs(_components.p,{children:[`Le combinateur d’agrégation `,_jsx(_components.code,{children:`-Map`}),` de ClickHouse vous permet d’appliquer n’importe quelle fonction d’agrégation à une colonne `,_jsx(_components.code,{children:`Map`}),` afin qu’elle s’applique indépendamment à chaque clé. Le résultat est lui aussi une `,_jsx(_components.code,{children:`Map`}),` — une entrée par clé, avec la valeur agrégée. C’est particulièrement utile pour les métriques OTel, où les compteurs ou les gauges sont stockés dans des valeurs de map.`]}),_jsxs(_components.p,{children:[`Pour le montrer, créez une petite table de métriques dans laquelle chaque ligne enregistre le nombre de codes d’état HTTP sous forme de `,_jsx(_components.code,{children:`Map(String, UInt64)`}),`\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`16`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`16`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`CREATE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TABLE`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` otel_http_status_counts`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` Timestamp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` DateTime`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName LowCardinality(String),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` StatusCounts Map(String, UInt64)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ENGINE `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` MergeTree()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ORDER BY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (ServiceName, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`Timestamp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`INSERT INTO`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_http_status_counts `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`VALUES`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2025-12-26 10:00:00'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'cart-service'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`150`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'4xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`12`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'5xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2025-12-26 10:01:00'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'cart-service'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`200`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'4xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`8`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'5xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2025-12-26 10:00:00'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'inventory-service'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`90`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'4xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2025-12-26 10:01:00'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'inventory-service'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`110`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'4xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'5xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2025-12-26 10:00:00'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'payment-service'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`50`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'5xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`10`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2025-12-26 10:01:00'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'payment-service'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'2xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`45`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'4xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'5xx'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`15`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Utilisez maintenant `,_jsx(_components.code,{children:`sumMap`}),` pour obtenir le total des occurrences par code d’état pour chaque service\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` sumMap(StatusCounts) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` total_by_status`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_http_status_counts`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`GROUP BY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Le suffixe `,_jsx(_components.code,{children:`-Map`}),` fonctionne avec n’importe quelle fonction d’agrégation ; vous pouvez donc utiliser `,_jsx(_components.code,{children:`minMap`}),`, `,_jsx(_components.code,{children:`maxMap`}),` ou `,_jsx(_components.code,{children:`avgMap`}),` tout aussi facilement\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` avgMap(StatusCounts) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` avg_by_status,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` maxMap(StatusCounts) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` peak_by_status`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_http_status_counts`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`GROUP BY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Vous pouvez également le combiner avec d’autres combinateurs. Par exemple, `,_jsx(_components.code,{children:`sumMapIf`}),` permet d’agréger de manière conditionnelle — ici, en additionnant uniquement les fenêtres d’une minute où le service présentait déjà des erreurs\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` sumMapIf(StatusCounts, StatusCounts['5xx'] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` totals_in_error_windows`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_http_status_counts`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`GROUP BY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ServiceName;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Pourquoi c’est important pour OTel\\xA0:`}),` lorsque votre OTel Collector écrit dans ClickHouse une ventilation par minute des codes de statut, `,_jsx(_components.code,{children:`sumMap`}),` vous permet de les agréger en totaux horaires ou quotidiens dans une seule requête — sans `,_jsx(_components.code,{children:`ARRAY JOIN`}),`, sans dé-pivotage, et sans avoir à connaître à l’avance l’ensemble des clés. Toute clé présente dans n’importe quelle ligne est automatiquement incluse dans le résultat.`]})]}),_jsxs(Step,{title:`Optimisez les clés fréquemment utilisées dans les requêtes`,id:`optimise-for-frequently-queried-keys`,children:[_jsxs(_components.p,{children:[`Si vous constatez que vous filtrez constamment sur la même clé de map — `,_jsx(_components.code,{children:`host.name`}),` est un cas courant — vous pouvez l’extraire dans une colonne matérialisée. Cela évite de parcourir linéairement la map à chaque requête\\xA0:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ALTER`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TABLE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` ADD`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` COLUMN HostName String`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` MATERIALIZED ResourceAttributes['host.name'];`})}),`\n`]})})}),_jsx(_components.p,{children:`Pour les données existantes, remplissez la colonne rétroactivement\\xA0:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ALTER`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TABLE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` otel_traces MATERIALIZE COLUMN HostName;`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Désormais, `,_jsx(_components.code,{children:`WHERE HostName = 'prod-cart-01'`}),` ne lit qu’une seule colonne dédiée au lieu de l’intégralité de la Map. C’est l’approche recommandée dans le schéma OTel de ClickHouse pour tout attribut que vous interrogez fréquemment.`]})]})]}),`\n`,_jsx(`div`,{id:`key-takeaways`,children:_jsx(Heading,{level:`2`,id:`points-clés-à-retenir`,children:`Points clés à retenir`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`Map(LowCardinality(String), String)`})}),` est le type idiomatique pour les attributs OTel — suffisamment flexible pour gérer des ensembles de clés variables, et `,_jsx(_components.code,{children:`LowCardinality`}),` permet de stocker efficacement les clés.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`La syntaxe entre crochets`}),` (`,_jsx(_components.code,{children:`map['key']`}),`) est la façon la plus courante d’accéder aux valeurs, mais gardez à l’esprit qu’elle effectue un balayage linéaire — très bien pour des maps contenant quelques dizaines de clés, moins adapté pour des centaines.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Les colonnes matérialisées`}),` sont la solution de secours\\xA0: lorsqu’une clé de map devient un filtre fréquemment utilisé, faites-en une vraie colonne pour un accès indexé et colonnaire.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`mapContains`}),`, `,_jsx(_components.code,{children:`mapKeys`}),`, `,_jsx(_components.code,{children:`mapValues`}),`, `,_jsx(_components.code,{children:`mapFilter`})]}),` et `,_jsx(_components.code,{children:`ARRAY JOIN`}),` vous offrent une boîte à outils complète pour explorer et transformer des données de type map sans quitter SQL.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Le combinateur d’agrégation `,_jsx(_components.code,{children:`-Map`})]}),` (`,_jsx(_components.code,{children:`sumMap`}),`, `,_jsx(_components.code,{children:`avgMap`}),`, `,_jsx(_components.code,{children:`maxMap`}),`, etc.) agrège chaque clé indépendamment d’une ligne à l’autre — idéal pour consolider des compteurs de métriques OTel sans avoir à connaître l’ensemble de clés à l’avance. Il se combine aussi avec d’autres combinateurs (par ex. `,_jsx(_components.code,{children:`sumMapIf`}),`).`]}),`\n`]}),`\n`,_jsx(`div`,{id:`next-steps`,children:_jsx(Heading,{level:`2`,id:`étapes-suivantes`,children:`Étapes suivantes`})}),`\n`,_jsx(_components.p,{children:`Poursuivez avec les guides de démarrage rapide suivants\\xA0:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/fr/get-started/quickstarts/create-your-first-mergetree-table`,children:`Créer votre première table MergeTree`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/fr/get-started/quickstarts/create-your-first-materialized-view`,children:`Créer votre première vue matérialisée`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/fr/get-started/quickstarts/home`,children:`Problèmes courants de prise en main`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`Ou allez plus loin avec la documentation de référence\\xA0:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/fr/reference/data-types/map`,children:`Référence du type Map`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/clickhouseexporter`,children:`Exporteur OTel ClickHouse`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/fr/reference/functions/aggregate-functions/combinators`,children:`Combinateurs de fonctions d’agrégation`})}),`\n`]}),`\n`,_jsx(Frame,{caption:`Check out the ClickHouse academy for on-demand and live training`,children:_jsx(`a`,{href:`https://learn.clickhouse.com/`,target:`_blank`,children:_jsx(`img`,{src:`https://mintcdn.com/private-7c7dfe99/EDr8ydtGBgFPOQea/images/academy.webp?fit=max\u0026auto=format\u0026n=EDr8ydtGBgFPOQea\u0026q=85\u0026s=27e92fc656183cc2f176211907a7aa49`,alt:`ClickHouse Academy — Master ClickHouse with expert-designed training for every skill level`,width:`560`,noZoom:true,\"data-og-width\":`1280`,\"data-og-height\":`720`,\"data-path\":`images/academy.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/private-7c7dfe99/EDr8ydtGBgFPOQea/images/academy.webp?w=280\u0026fit=max\u0026auto=format\u0026n=EDr8ydtGBgFPOQea\u0026q=85\u0026s=c6475339b9f0b1c411bbcf3bf6d64d34 280w, https://mintcdn.com/private-7c7dfe99/EDr8ydtGBgFPOQea/images/academy.webp?w=560\u0026fit=max\u0026auto=format\u0026n=EDr8ydtGBgFPOQea\u0026q=85\u0026s=ac29270203fad6406e1143c42d11612b 560w, https://mintcdn.com/private-7c7dfe99/EDr8ydtGBgFPOQea/images/academy.webp?w=840\u0026fit=max\u0026auto=format\u0026n=EDr8ydtGBgFPOQea\u0026q=85\u0026s=d35c1a71bc25e4dc029c08244178d09f 840w, https://mintcdn.com/private-7c7dfe99/EDr8ydtGBgFPOQea/images/academy.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=EDr8ydtGBgFPOQea\u0026q=85\u0026s=1d8a3a8917d2363513041143f10b588b 1100w, https://mintcdn.com/private-7c7dfe99/EDr8ydtGBgFPOQea/images/academy.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=EDr8ydtGBgFPOQea\u0026q=85\u0026s=d70048580aaf33d88c0d82f2c3be8c8c 1650w, https://mintcdn.com/private-7c7dfe99/EDr8ydtGBgFPOQea/images/academy.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=EDr8ydtGBgFPOQea\u0026q=85\u0026s=8f2864f7c389302c8a5ef25ba4454f60 2500w`})})}),`\n`,_jsx(`div`,{className:`mint-mt-8`,children:_jsxs(_components.a,{href:`/get-started/quickstarts/home`,onClick:e_1=>{e_1.preventDefault();window.location.href=(window.location.pathname.startsWith(`/docs`)?`/docs`:``)+`/get-started/quickstarts/home`},className:`mint-inline-flex mint-items-center mint-gap-1.5 mint-text-sm mint-text-gray-500 dark:mint-text-zinc-500 hover:mint-text-gray-900 dark:hover:mint-text-[#fdff75] mint-transition-colors mint-font-normal mint-no-underline`,children:[_jsxs(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`mint-shrink-0`,children:[_jsx(`path`,{d:`M19 12H5`}),_jsx(`path`,{d:`M12 19l-7-7 7-7`})]}),`All quickstarts`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{e_1,e_0,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"sidebarTitle":"Utilisation du type Map dans ClickHouse","searchable":true,"title":"Utilisation du type Map dans ClickHouse","useCases":["Observability"],"products":["OSS"],"description":"Découvrez comment utiliser le type Map dans ClickHouse pour stocker, interroger et agréger des données clé-valeur dynamiques, en prenant comme exemple pratique les attributs de ressource OTel.","href":"/fr/get-started/quickstarts/working-with-the-map-type"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[771,918,""],[60672,60819,""]]},"mdxExtracts":{"tableOfContents":[{"title":"Prérequis","slug":"prérequis","depth":2,"children":[]},{"title":"Ce que vous allez créer","slug":"ce-que-vous-allez-créer","depth":2,"children":[{"title":"Télécharger les données d’exemple","slug":"download-the-sample-data","depth":3,"children":[]},{"title":"Créer la table et charger les données","slug":"create-the-table-and-load-the-data","depth":3,"children":[]},{"title":"Interroger les données","slug":"query-the-data","depth":3,"children":[]},{"title":"Agréger des maps avec le combinateur -Map","slug":"aggregate-across-maps-with-the--map-combinator","depth":3,"children":[]},{"title":"Optimisez les clés fréquemment utilisées dans les requêtes","slug":"optimise-for-frequently-queried-keys","depth":3,"children":[]}]},{"title":"Points clés à retenir","slug":"points-clés-à-retenir","depth":2,"children":[]},{"title":"Étapes suivantes","slug":"étapes-suivantes","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/private-7c7dfe99/a0ab956a7a3c7ff5/_site/customizations/ask-ai-button.js","/docs/_mintlify/custom/private-7c7dfe99/39eb0ad87fa3adc8/_site/customizations/clickhouse-sql-highlight.js","/docs/_mintlify/custom/private-7c7dfe99/f2f887f569696d41/_site/customizations/clickhouse-sql-lexer-wasm.js","/docs/_mintlify/custom/private-7c7dfe99/564839e4bb02c38e/_site/customizations/custom-footer.js","/docs/_mintlify/custom/private-7c7dfe99/240e3ba1823c3bae/_site/customizations/galaxy.js","/docs/_mintlify/custom/private-7c7dfe99/38fd3c627bad5620/_site/customizations/inkeep-init.js","/docs/_mintlify/custom/private-7c7dfe99/ad7415752a665282/_site/customizations/kapa-init.js","/docs/_mintlify/custom/private-7c7dfe99/c54d4536629b44db/_site/customizations/nav-icon-preload.js","/docs/_mintlify/custom/private-7c7dfe99/10c01e58e00a0bb5/_site/customizations/navbar-cta.js","/docs/_mintlify/custom/private-7c7dfe99/f75dab9369f45602/_site/customizations/raise-issue-link.js","/docs/_mintlify/custom/private-7c7dfe99/a97e716bfafb62fd/_site/customizations/scroll-reset.js","/docs/_mintlify/custom/private-7c7dfe99/bb66ab6ab59dfc53/_site/customizations/settings-legacy-redirect.js","/docs/_mintlify/custom/private-7c7dfe99/b734912855230cc2/_site/customizations/settings-legacy-routes/format-settings.js","/docs/_mintlify/custom/private-7c7dfe99/e07c37962b288c7e/_site/customizations/settings-legacy-routes/mergetree-settings.js","/docs/_mintlify/custom/private-7c7dfe99/2b8fcba9c043bce4/_site/customizations/settings-legacy-routes/server-settings.js","/docs/_mintlify/custom/private-7c7dfe99/20d8f577c04bd763/_site/customizations/settings-legacy-routes/session-settings.js","/docs/_mintlify/custom/private-7c7dfe99/3bd87f000900d6e2/_site/customizations/tab-nav.js","/docs/_mintlify/custom/private-7c7dfe99/5c7ce50607c95a70/_site/customizations/webterminal.js","/docs/_mintlify/custom/private-7c7dfe99/7b903fec76456ee0/_site/customizations/cloud-sidebar-ad.js","/docs/_mintlify/custom/private-7c7dfe99/346eac2572f9fb1d/_site/customizations/section-ticker.js"],"dynamicCss":".mint-mb-4 {\n margin-bottom: 1rem\n}\n.mint-mt-2 {\n margin-top: 0.5rem\n}\n.mint-mt-8 {\n margin-top: 2rem\n}\n.mint-flex {\n display: flex\n}\n.mint-inline-flex {\n display: inline-flex\n}\n.mint-shrink-0 {\n flex-shrink: 0\n}\n.mint-flex-wrap {\n flex-wrap: wrap\n}\n.mint-items-center {\n align-items: center\n}\n.mint-gap-1\\.5 {\n gap: 0.375rem\n}\n.mint-gap-2 {\n gap: 0.5rem\n}\n.mint-rounded-lg {\n border-radius: 0.5rem\n}\n.mint-border {\n border-width: 1px\n}\n.mint-border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1))\n}\n.mint-bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1))\n}\n.mint-px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem\n}\n.mint-py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem\n}\n.mint-text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem\n}\n.mint-font-medium {\n font-weight: 500\n}\n.mint-font-normal {\n font-weight: 400\n}\n.mint-text-black {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity, 1))\n}\n.mint-text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1))\n}\n.mint-no-underline {\n text-decoration-line: none\n}\n.mint-transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms\n}\n.mint-transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms\n}\n.hover\\:mint-border-\\[\\#FAFF69\\]:hover {\n --tw-border-opacity: 1;\n border-color: rgb(250 255 105 / var(--tw-border-opacity, 1))\n}\n.hover\\:mint-text-gray-900:hover {\n --tw-text-opacity: 1;\n color: rgb(17 24 39 / var(--tw-text-opacity, 1))\n}\n.dark\\:mint-border-white\\/20:is(.dark *) {\n border-color: rgb(255 255 255 / 0.2)\n}\n.dark\\:mint-bg-\\[\\#1B1B18\\]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(27 27 24 / var(--tw-bg-opacity, 1))\n}\n.dark\\:mint-text-white:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1))\n}\n.dark\\:mint-text-zinc-500:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(113 113 122 / var(--tw-text-opacity, 1))\n}\n.dark\\:hover\\:mint-text-\\[\\#fdff75\\]:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(253 255 117 / var(--tw-text-opacity, 1))\n}","subdomain":"private-7c7dfe99","siteName":"ClickHouse Documentation","title":"Utilisation du type Map dans ClickHouse - ClickHouse Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/get-started/quickstarts/working-with-the-map-type","matchLevel":1},"ar":{"href":"/ar/get-started/quickstarts/working-with-the-map-type","matchLevel":1},"es":{"href":"/es/get-started/quickstarts/working-with-the-map-type","matchLevel":1},"fr":{"href":"/fr/get-started/quickstarts/working-with-the-map-type","matchLevel":0},"ja":{"href":"/ja/get-started/quickstarts/working-with-the-map-type","matchLevel":1},"ko":{"href":"/ko/get-started/quickstarts/working-with-the-map-type","matchLevel":1},"pt-BR":{"href":"/pt-BR/get-started/quickstarts/working-with-the-map-type","matchLevel":1},"ru":{"href":"/ru/get-started/quickstarts/working-with-the-map-type","matchLevel":1},"zh":{"href":"/zh/get-started/quickstarts/working-with-the-map-type","matchLevel":1}}},"originalFileLocation":"fr/get-started/quickstarts/working-with-the-map-type.mdx","locale":"fr"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Découvrez comment utiliser le type Map dans ClickHouse pour stocker, interroger et agréger des données clé-valeur dynamiques, en prenant comme exemple pratique les attributs de ressource OTel.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ClickHouse Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Utilisation du type Map dans ClickHouse - ClickHouse Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Découvrez comment utiliser le type Map dans ClickHouse pour stocker, interroger et agréger des données clé-valeur dynamiques, en prenant comme exemple pratique les attributs de ressource OTel.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ClickHouse Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://private-7c7dfe99.mintlify.app/_mintlify/api/og/v2?division=Observabilit%C3%A9\u0026amp;title=Utilisation+du+type+Map+dans+ClickHouse\u0026amp;description=D%C3%A9couvrez+comment+utiliser+le+type+Map+dans+ClickHouse+pour+stocker%2C+interroger+et+agr%C3%A9ger+des+donn%C3%A9es+cl%C3%A9-valeur+dynamiques%2C+en+prenant+comme+exemple+pratique+\u0026amp;theme=de5161c1b5df52f178b39943\u0026amp;signature=44c5282c095890259170de622b0e91b7bbc41b75ddc74f1f88ec82d8ef17e071\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Utilisation du type Map dans ClickHouse - ClickHouse Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Découvrez comment utiliser le type Map dans ClickHouse pour stocker, interroger et agréger des données clé-valeur dynamiques, en prenant comme exemple pratique les attributs de ressource OTel.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://private-7c7dfe99.mintlify.app/_mintlify/api/og/v2?division=Observabilit%C3%A9\u0026amp;title=Utilisation+du+type+Map+dans+ClickHouse\u0026amp;description=D%C3%A9couvrez+comment+utiliser+le+type+Map+dans+ClickHouse+pour+stocker%2C+interroger+et+agr%C3%A9ger+des+donn%C3%A9es+cl%C3%A9-valeur+dynamiques%2C+en+prenant+comme+exemple+pratique+\u0026amp;theme=de5161c1b5df52f178b39943\u0026amp;signature=44c5282c095890259170de622b0e91b7bbc41b75ddc74f1f88ec82d8ef17e071\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ClickHouse Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1c1c1c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/fr/get-started/quickstarts/working-with-the-map-type.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://clickhouse.com/docs/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://clickhouse.com/docs/ar/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://clickhouse.com/docs/es/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://clickhouse.com/docs/ja/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://clickhouse.com/docs/ko/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://clickhouse.com/docs/pt-BR/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://clickhouse.com/docs/ru/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://clickhouse.com/docs/zh/get-started/quickstarts/working-with-the-map-type\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://clickhouse.com/docs/get-started/quickstarts/working-with-the-map-type\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://clickhouse.com/#organization\",\"name\":\"ClickHouse Documentation\",\"url\":\"https://clickhouse.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/private-7c7dfe99/h2VHbIjccjT9ClSc/_site/logo/light.svg?fit=max\u0026auto=format\u0026n=h2VHbIjccjT9ClSc\u0026q=85\u0026s=b8a838f982def2b530a95016300bc7ec\"}},{\"@type\":\"WebSite\",\"@id\":\"https://clickhouse.com/docs#website\",\"name\":\"ClickHouse Documentation\",\"url\":\"https://clickhouse.com/docs\",\"publisher\":{\"@id\":\"https://clickhouse.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type#webpage\",\"url\":\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type\",\"name\":\"Utilisation du type Map dans ClickHouse\",\"description\":\"Découvrez comment utiliser le type Map dans ClickHouse pour stocker, interroger et agréger des données clé-valeur dynamiques, en prenant comme exemple pratique les attributs de ressource OTel.\",\"isPartOf\":{\"@id\":\"https://clickhouse.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Get started\",\"item\":\"https://clickhouse.com/docs/fr/get-started/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guides de démarrage rapide\",\"item\":\"https://clickhouse.com/docs/fr/get-started/quickstarts/home\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Utilisation du type Map dans ClickHouse\",\"item\":\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type#article\",\"headline\":\"Utilisation du type Map dans ClickHouse\",\"name\":\"Utilisation du type Map dans ClickHouse\",\"description\":\"Découvrez comment utiliser le type Map dans ClickHouse pour stocker, interroger et agréger des données clé-valeur dynamiques, en prenant comme exemple pratique les attributs de ressource OTel.\",\"url\":\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type\",\"mainEntityOfPage\":{\"@id\":\"https://clickhouse.com/docs/fr/get-started/quickstarts/working-with-the-map-type#webpage\"},\"publisher\":{\"@id\":\"https://clickhouse.com/#organization\"},\"isPartOf\":{\"@id\":\"https://clickhouse.com/docs#website\"}}]}\u003c/script>","siteName":"ClickHouse Documentation","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/get-started/quickstarts/working-with-the-map-type"}]},{"language":"ar","pages":[{"title":"ar","href":"/ar/get-started/quickstarts/working-with-the-map-type"}]},{"language":"es","pages":[{"title":"es","href":"/es/get-started/quickstarts/working-with-the-map-type"}]},{"language":"fr","tabs":[{"tab":"Accueil","pages":[{"title":"Accueil","href":"/fr"}]},{"tab":"Base de données","menu":[{"item":"Get started","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-get-started.svg","pages":[{"group":"Get started","icon":"/images/menu-icon-lightning.svg","pages":[{"title":"Bien démarrer avec ClickHouse","sidebarTitle":"Vue d’ensemble","href":"/fr/get-started"},{"group":"Guides de démarrage rapide","expanded":false,"pages":[{"sidebarTitle":"Explorer les quickstarts","title":"Explorateur de Quickstarts","mode":"custom","href":"/fr/get-started/quickstarts/home"},{"group":"Tous les cas d’usage","expanded":false,"pages":[{"sidebarTitle":"Démarrage rapide Cloud","title":"Démarrage rapide de ClickHouse Cloud","href":"/fr/get-started/setup/cloud"},{"sidebarTitle":"Obtenez vos informations de connexion Cloud","title":"Obtenez vos informations de connexion Cloud","href":"/fr/get-started/quickstarts/obtain-your-cloud-connection-details"},{"sidebarTitle":"Insérer des données dans ClickHouse Cloud avec clickhouse-client","title":"Insérer des données dans ClickHouse Cloud avec clickhouse-client","href":"/fr/get-started/quickstarts/insert-data-using-clickhouse-client"},{"sidebarTitle":"Créer des tables dans ClickHouse","title":"Créer des tables dans ClickHouse","href":"/fr/get-started/quickstarts/creating-tables"},{"sidebarTitle":"Sélection des données dans ClickHouse","title":"Sélection des données dans ClickHouse","href":"/fr/get-started/quickstarts/writing-queries"},{"sidebarTitle":"Créez votre première table MergeTree","title":"Créez votre première table MergeTree","href":"/fr/get-started/quickstarts/create-your-first-mergetree-table"}]},{"group":"Analytique en temps réel","expanded":false,"pages":[{"sidebarTitle":"Créez votre première vue matérialisée","title":"Créez votre première vue matérialisée","href":"/fr/get-started/quickstarts/create-your-first-materialized-view"},{"sidebarTitle":"Créez votre première projection","title":"Créez votre première projection","href":"/fr/get-started/quickstarts/create-your-first-projection"}]},{"group":"Entrepôt de données","expanded":false,"pages":[{"sidebarTitle":"Comment connecter votre catalogue Iceberg à ClickHouse Cloud","title":"Comment connecter votre catalogue Iceberg à ClickHouse Cloud","href":"/fr/get-started/quickstarts/connect-your-iceberg-catalog"},{"sidebarTitle":"Mettre à jour et supprimer des données ClickHouse","title":"Mettre à jour et supprimer des données ClickHouse","description":"Décrit comment effectuer des opérations de mise à jour et de suppression dans ClickHouse","href":"/fr/get-started/quickstarts/mutations"}]},{"group":"Observabilité","expanded":false,"pages":[{"sidebarTitle":"Utilisation du type Map dans ClickHouse","title":"Utilisation du type Map dans ClickHouse","href":"/fr/get-started/quickstarts/working-with-the-map-type"}]}]},{"group":"Introduction","expanded":true,"pages":[{"sidebarTitle":"Qu’est-ce que ClickHouse ?","description":"ClickHouse® est un système de gestion de base de données SQL orienté colonnes (SGBD) pour le traitement analytique en ligne (OLAP). Il est disponible à la fois en tant que logiciel open source et en tant qu’offre Cloud.","title":"Qu’est-ce que ClickHouse ?","href":"/fr/get-started/about/intro"},{"sidebarTitle":"Pourquoi ClickHouse est-il si rapide ?","title":"Pourquoi ClickHouse est-il si rapide ?","href":"/fr/get-started/about/why-clickhouse-is-so-fast"},{"sidebarTitle":"Pourquoi ClickHouse est-il unique ?","title":"Caractéristiques distinctives de ClickHouse","href":"/fr/get-started/about/distinctive-features"}]},{"group":"Use cases","expanded":true,"pages":[{"title":"Cas d’usage","sidebarTitle":"Vue d’ensemble","href":"/fr/get-started/use-cases/overview"},{"title":"Analytique en temps réel","sidebarTitle":"Analytique en temps réel","href":"/fr/get-started/use-cases/real-time-analytics"},{"title":"Observabilité","sidebarTitle":"Observabilité","href":"/fr/get-started/use-cases/observability"},{"title":"Entrepôt de données","sidebarTitle":"Entrepôt de données","href":"/fr/get-started/use-cases/data-warehousing"},{"title":"Analytics agentique","sidebarTitle":"Analytics agentique","href":"/fr/get-started/use-cases/agentic-analytics"}]},{"sidebarTitle":"Modes de déploiement","title":"Modes de déploiement","href":"/fr/get-started/about/deployment-modes"}]},{"group":"Setup","icon":"/images/menu-icon-gear.svg","expanded":true,"pages":[{"sidebarTitle":"Installer","title":"Instructions d’installation","href":"/fr/get-started/setup/install"},{"sidebarTitle":"Démarrage rapide Cloud","title":"Démarrage rapide de ClickHouse Cloud","href":"/fr/get-started/setup/cloud"},{"group":"Self-managed","expanded":true,"pages":[{"title":"Installation autogérée","sidebarTitle":"Vue d'ensemble","href":"/fr/get-started/setup/self-managed/overview"},{"group":"Local development","pages":[{"sidebarTitle":"Installation rapide","title":"Installation rapide","href":"/fr/get-started/setup/self-managed/quick-install"},{"sidebarTitle":"clickhousectl (CLI)","title":"Installer avec la CLI de ClickHouse","href":"/fr/get-started/setup/self-managed/clickhousectl"},{"sidebarTitle":"Docker","title":"Installer ClickHouse avec Docker","href":"/fr/get-started/setup/self-managed/docker"},{"sidebarTitle":"Builds source et CI","title":"Builds source et CI","href":"/fr/get-started/setup/self-managed/advanced"}]},{"group":"Production server","pages":[{"sidebarTitle":"Debian/Ubuntu","title":"Installer ClickHouse sur Debian/Ubuntu","href":"/fr/get-started/setup/self-managed/debian-ubuntu"},{"sidebarTitle":"Red Hat/CentOS","title":"Installer ClickHouse sur des distributions Linux basées sur RPM","href":"/fr/get-started/setup/self-managed/redhat"},{"sidebarTitle":"NixOS","title":"Installer ClickHouse sur NixOS","href":"/fr/get-started/setup/self-managed/nixos"},{"sidebarTitle":"Autres Linux","title":"Installer ClickHouse avec des archives tgz","href":"/fr/get-started/setup/self-managed/other-linux"}]}]}]},{"group":"Sample datasets","icon":"/images/menu-icon-database.svg","expanded":true,"pages":[{"sidebarTitle":"Vue d’ensemble","title":"Tutoriels et jeux de données d’exemple","href":"/fr/get-started/sample-datasets/index"},{"sidebarTitle":"ClickHouse playground","title":"ClickHouse playground","href":"/fr/get-started/sample-datasets/playground"},{"group":"Benchmarks","pages":[{"sidebarTitle":"Benchmark big data AMPLab","title":"AMPLab Big Data Benchmark","href":"/fr/get-started/sample-datasets/amplab-benchmark"},{"sidebarTitle":"Benchmark de l’université Brown","title":"Benchmark de l’université Brown","href":"/fr/get-started/sample-datasets/brown-benchmark"},{"sidebarTitle":"Logs de clics Criteo (1 To)","title":"Un téraoctet de logs de clics de Criteo","href":"/fr/get-started/sample-datasets/criteo"},{"title":"Join Order Benchmark (JOB)","sidebarTitle":"JOB","href":"/fr/get-started/sample-datasets/job"},{"sidebarTitle":"Star Schema Benchmark","title":"Star Schema Benchmark (SSB, 2009)","href":"/fr/get-started/sample-datasets/star-schema"},{"title":"TPC-DS (2012)","sidebarTitle":"TPC-DS","href":"/fr/get-started/sample-datasets/tpcds"},{"title":"TPC-H (1999)","sidebarTitle":"TPC-H","href":"/fr/get-started/sample-datasets/tpch"}]},{"group":"Vector search \u0026 embeddings","pages":[{"sidebarTitle":"jeu de données dbpedia","title":"jeu de données dbpedia","href":"/fr/get-started/sample-datasets/dbpedia"},{"sidebarTitle":"Jeu de données Hacker News pour la recherche vectorielle","title":"Jeu de données Hacker News pour la recherche vectorielle","href":"/fr/get-started/sample-datasets/hacker-news-vector-search"},{"sidebarTitle":"Jeu de données Laion-400M","title":"Jeu de données Laion-400M","href":"/fr/get-started/sample-datasets/laion"},{"sidebarTitle":"Jeu de données LAION 5B","title":"Jeu de données LAION 5B","href":"/fr/get-started/sample-datasets/laion5b"}]},{"group":"Web \u0026 social analytics","pages":[{"sidebarTitle":"Avis clients Amazon","title":"Avis clients Amazon","href":"/fr/get-started/sample-datasets/amazon-reviews"},{"sidebarTitle":"Analyse web anonymisée","title":"Analyse web anonymisée","href":"/fr/get-started/sample-datasets/anon-web-analytics-metrica"},{"sidebarTitle":"Dépôt GitHub","title":"Écrire des requêtes dans ClickHouse à l’aide des données GitHub","href":"/fr/get-started/sample-datasets/github"},{"sidebarTitle":"Événements GitHub","title":"Jeu de données des événements GitHub","href":"/fr/get-started/sample-datasets/github-events"},{"sidebarTitle":"Hacker News","title":"Jeu de données Hacker News","href":"/fr/get-started/sample-datasets/hacker-news"},{"sidebarTitle":"Stack Overflow","title":"Analyse des données de Stack Overflow avec ClickHouse","href":"/fr/get-started/sample-datasets/stackoverflow"},{"sidebarTitle":"Je n’aime pas YouTube","title":"Jeu de données YouTube sur les Je n’aime pas","href":"/fr/get-started/sample-datasets/youtube-dislikes"}]},{"group":"Geo \u0026 location","pages":[{"sidebarTitle":"Antennes-relais","title":"Analyse géospatiale avec le jeu de données des antennes-relais","href":"/fr/get-started/sample-datasets/cell-towers"},{"sidebarTitle":"Foursquare OS Places","title":"Jeu de données Foursquare OS Places","href":"/fr/get-started/sample-datasets/foursquare-os-places"},{"sidebarTitle":"Données des taxis new-yorkais","title":"Analyse géospatiale avec le jeu de données des taxis new-yorkais","href":"/fr/get-started/sample-datasets/nyc-taxi"}]},{"group":"Time series \u0026 sensors","pages":[{"sidebarTitle":"Données des capteurs environnementaux","title":"Données des capteurs environnementaux","href":"/fr/get-started/sample-datasets/environmental-sensors"},{"sidebarTitle":"Global Historical Climatology Network de la NOAA ","title":"Global Historical Climatology Network de la NOAA","href":"/fr/get-started/sample-datasets/noaa"},{"sidebarTitle":"Jeux de données météorologiques historiques de Taïwan","title":"Jeux de données météorologiques historiques de Taïwan","href":"/fr/get-started/sample-datasets/tw-weather"},{"sidebarTitle":"WikiStat","title":"WikiStat","href":"/fr/get-started/sample-datasets/wikistat"}]},{"group":"Public records \u0026 open data","pages":[{"sidebarTitle":"Données ouvertes sur le COVID-19","title":"Données ouvertes sur le COVID-19","href":"/fr/get-started/sample-datasets/covid19"},{"sidebarTitle":"Jeu de données « What's on the Menu? » de la New York Public Library","title":"Jeu de données « What's on the Menu? » de la New York Public Library","href":"/fr/get-started/sample-datasets/menus"},{"sidebarTitle":"Données de plaintes du NYPD","title":"Données de plaintes du NYPD","href":"/fr/get-started/sample-datasets/nypd-complaint-data"},{"sidebarTitle":"Données OnTime sur les vols aériens","title":"OnTime","href":"/fr/get-started/sample-datasets/ontime"},{"sidebarTitle":"Prix de l’immobilier au Royaume-Uni","title":"Requêtes analytiques sur les données des prix de l’immobilier au Royaume-Uni","href":"/fr/get-started/sample-datasets/uk-price-paid"}]}]},{"group":"Migrate","icon":"/images/caret-double-right.svg","expanded":true,"pages":[{"sidebarTitle":"Vue d’ensemble","title":"Migrer des données vers ClickHouse","href":"/fr/get-started/migrate/overview"},{"group":"PostgreSQL","pages":[{"title":"Comparaison entre PostgreSQL et ClickHouse","sidebarTitle":"Vue d’ensemble","href":"/fr/get-started/migrate/postgres/overview"},{"group":"Migration guide","pages":[{"title":"Migration des données","sidebarTitle":"Partie 1","href":"/fr/get-started/migrate/postgres/migration-guide/migration-guide-part1"},{"title":"Réécriture des requêtes PostgreSQL","sidebarTitle":"Partie 2","href":"/fr/get-started/migrate/postgres/migration-guide/migration-guide-part2"},{"title":"Techniques de modélisation des données","sidebarTitle":"Partie 3","href":"/fr/get-started/migrate/postgres/migration-guide/migration-guide-part3"}]},{"title":"Annexe","href":"/fr/get-started/migrate/postgres/appendix"}]},{"group":"BigQuery","pages":[{"title":"Comparaison de ClickHouse Cloud et de BigQuery","sidebarTitle":"Vue d’ensemble","href":"/fr/get-started/migrate/bigquery/overview"},{"title":"Migrer de BigQuery vers ClickHouse Cloud","sidebarTitle":"Guide de migration","href":"/fr/get-started/migrate/bigquery/migrating-to-clickhouse-cloud"},{"sidebarTitle":"Chargement des données","title":"Chargement des données de BigQuery vers ClickHouse","href":"/fr/get-started/migrate/bigquery/loading-data"}]},{"group":"Snowflake","pages":[{"sidebarTitle":"Présentation","title":"Migration de Snowflake vers ClickHouse","href":"/fr/get-started/migrate/snowflake/overview"},{"sidebarTitle":"Guide de migration","title":"Migrer depuis Snowflake vers ClickHouse","href":"/fr/get-started/migrate/snowflake/migration-guide"},{"sidebarTitle":"Référence de traduction SQL","title":"Migration de Snowflake vers ClickHouse","href":"/fr/get-started/migrate/snowflake/sql-translation-reference"}]},{"group":"Elasticsearch","pages":[{"sidebarTitle":"Vue d’ensemble","title":"Migrer d’Elasticsearch vers ClickHouse","href":"/fr/get-started/migrate/elastic/overview"}]},{"group":"Redshift","pages":[{"sidebarTitle":"Vue d’ensemble","title":"Comparaison entre ClickHouse Cloud et Amazon Redshift","href":"/fr/get-started/migrate/redshift/overview"},{"sidebarTitle":"Guide de migration","title":"Guide de migration d’Amazon Redshift vers ClickHouse","href":"/fr/get-started/migrate/redshift/migration-guide"},{"sidebarTitle":"Référence de traduction SQL","title":"Guide de traduction SQL pour Amazon Redshift","href":"/fr/get-started/migrate/redshift/sql-translation-reference"}]},{"group":"OSS to Cloud","pages":[{"sidebarTitle":"Utiliser remoteSecure","title":"Migration entre un ClickHouse autogéré et ClickHouse Cloud avec remoteSecure","href":"/fr/get-started/migrate/oss-to-cloud/clickhouse-to-cloud"},{"sidebarTitle":"Utiliser BACKUP et RESTORE","title":"Migrer d’un ClickHouse autogéré vers ClickHouse Cloud à l’aide des commandes BACKUP et RESTORE","href":"/fr/get-started/migrate/oss-to-cloud/oss-to-cloud-backup-restore"}]},{"group":"Other methods","pages":[{"sidebarTitle":"Avec clickhouse-local","title":"Migrer vers ClickHouse avec clickhouse-local","href":"/fr/get-started/migrate/other-methods/clickhouse-local-etl"},{"sidebarTitle":"Utiliser un outil ETL tiers","title":"Utiliser un outil ETL tiers","href":"/fr/get-started/migrate/other-methods/etl-tool-to-clickhouse"},{"title":"Transférer des données depuis un stockage objet dans le cloud vers ClickHouse Cloud","href":"/fr/get-started/migrate/other-methods/object-storage-to-clickhouse"}]}]}]},{"item":"Concepts","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-concepts.svg","pages":[{"title":"Concepts","href":"/fr/concepts"}]},{"item":"Guides","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-guides.svg","pages":[{"title":"Guides","href":"/fr/guides/clickhouse"}]},{"item":"Référence","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-reference.svg","pages":[{"title":"Référence","href":"/fr/reference/home"}]}]},{"tab":"Solutions","menu":[{"item":"ClickHouse Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/section-header.svg","href":"#"},{"item":"ClickHouse Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-clickhouse-cloud.svg","pages":[{"title":"ClickHouse Cloud","href":"/fr/products/cloud/getting-started/cloud-get-started"}]},{"item":"ClickHouse Managed Postgres","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-postgres.svg","pages":[{"title":"ClickHouse Managed Postgres","href":"/fr/products/managed-postgres/overview"}]},{"item":"Langfuse","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/logo-langfuse.svg","href":"https://langfuse.com/docs"},{"item":"Open source","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/section-header.svg","href":"#"},{"item":"ClickStack","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-clickstack.svg","pages":[{"title":"ClickStack","href":"/fr/clickstack"}]},{"item":"Agentic Data Stack","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-agentic-data-stack.svg","pages":[{"title":"Agentic Data Stack","href":"/fr/products/agentic-data-stack/overview"}]},{"item":"chDB","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-chdb.svg","pages":[{"title":"chDB","href":"/fr/chdb"}]},{"item":"Opérateur Kubernetes","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-kubernetes-operator.svg","pages":[{"title":"Opérateur Kubernetes","href":"/fr/products/kubernetes-operator/overview"}]}],"pages":[{"title":"Solutions","href":"/fr/products/cloud/getting-started/cloud-get-started"}]},{"tab":"Intégrations","menu":[{"item":"Écosystème","pages":[{"title":"Écosystème","href":"/fr/integrations/home"}]},{"item":"ClickPipes","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-clickpipes.svg","pages":[{"title":"ClickPipes","href":"/fr/integrations/clickpipes/home"}]},{"item":"Clients par langage","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-language-clients.svg","pages":[{"title":"Clients par langage","href":"/fr/integrations/language-clients"}]},{"item":"Connecteurs","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-connectors.svg","pages":[{"title":"Connecteurs","href":"/fr/integrations/connectors/data-sources"}]}],"pages":[{"title":"Intégrations","href":"/fr/integrations/home"}]},{"tab":"Ressources","menu":[{"item":"Centre d’assistance","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-support-center.svg","pages":[{"title":"Centre d’assistance","href":"/fr/resources/support-center/home"}]},{"item":"Développement et contributions","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-contribute.svg","pages":[{"title":"Développement et contributions","href":"/fr/resources/develop-contribute/introduction/developer-instruction"}]},{"item":"Journaux des modifications","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-changelogs.svg","dropdowns":[{"dropdown":"Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-clickhouse-cloud.svg","pages":[{"title":"Cloud","href":"/fr/resources/changelogs/cloud"}]},{"dropdown":"Open source","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-server.svg","pages":[{"title":"Open source","href":"/fr/resources/changelogs/oss/2026"}]}]},{"item":"À propos","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-about.svg","pages":[{"title":"À propos","href":"/fr/resources/about"}]}],"pages":[{"title":"Ressources","href":"/fr/resources/support-center/home"}]}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/get-started/quickstarts/working-with-the-map-type"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/get-started/quickstarts/working-with-the-map-type"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/pt-BR/get-started/quickstarts/working-with-the-map-type"}]},{"language":"ru","pages":[{"title":"ru","href":"/ru/get-started/quickstarts/working-with-the-map-type"}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/get-started/quickstarts/working-with-the-map-type"}]}]},"basePath":"","title":"Utilisation du type Map dans ClickHouse - ClickHouse Documentation","buildId":"dpl_Acry4NrQAgjcikyFgVE2eJ7XQCAv","deploymentId":"dpl_Acry4NrQAgjcikyFgVE2eJ7XQCAv","dynamics":["07c022d89b"],"chunks":["Frame-D9VvKFqQ.js","DynamicMarkdown-BCpKo5ib.js"]}