> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-revert-104359-revert-104251-parquet-single.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Référence

> Détaille les formats, les sources, les garanties de livraison, l'authentification et les fonctionnalités expérimentales pris en charge par Kafka ClickPipes.

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Fonctionnalité expérimentale
        </a>;
};

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<div id="supported-data-sources">
  ## Sources de données prises en charge
</div>

| Nom              | Logo                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Type      | Statut | Description                                                                                                       |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------ | ----------------------------------------------------------------------------------------------------------------- |
| Apache Kafka     | <img src="https://mintcdn.com/private-7c7dfe99-revert-104359-revert-104251-parquet-single/U9_VNNDGYdZRVvSD/images/integrations/logos/kafka.svg?fit=max&auto=format&n=U9_VNNDGYdZRVvSD&q=85&s=85ca7208f9f1ef1221e1c80f0a45aaeb" alt="Logo Apache Kafka" width="32" data-path="images/integrations/logos/kafka.svg" />                                                                                           | Streaming | Stable | Configurez ClickPipes pour commencer à ingérer des données en streaming d’Apache Kafka dans ClickHouse Cloud.     |
| Confluent Cloud  | <img src="https://mintcdn.com/private-7c7dfe99-revert-104359-revert-104251-parquet-single/U9_VNNDGYdZRVvSD/images/integrations/logos/confluent.svg?fit=max&auto=format&n=U9_VNNDGYdZRVvSD&q=85&s=84728442610a17d79925f95fb8fc2559" alt="Logo Confluent Cloud" width="32" data-path="images/integrations/logos/confluent.svg" />                                                          | Streaming | Stable | Exploitez la puissance combinée de Confluent et de ClickHouse Cloud grâce à notre intégration directe.            |
| Redpanda         | <img src="https://mintcdn.com/private-7c7dfe99-revert-104359-revert-104251-parquet-single/Hk5pfykg6Fm_sagb/images/integrations/logos/logo_redpanda.webp?fit=max&auto=format&n=Hk5pfykg6Fm_sagb&q=85&s=9981bebb3d078bc002262773b41cbe52" alt="Logo Redpanda" width="32" data-path="images/integrations/logos/logo_redpanda.webp" />                       | Streaming | Stable | Configurez ClickPipes pour commencer à ingérer des données en streaming de Redpanda dans ClickHouse Cloud.        |
| AWS MSK          | <img src="https://mintcdn.com/private-7c7dfe99-revert-104359-revert-104251-parquet-single/Hk5pfykg6Fm_sagb/images/integrations/logos/msk.svg?fit=max&auto=format&n=Hk5pfykg6Fm_sagb&q=85&s=10510b40f671e813d03d6772aedda829" alt="Logo AWS MSK" width="32" data-path="images/integrations/logos/msk.svg" />                                                                                                                  | Streaming | Stable | Configurez ClickPipes pour commencer à ingérer des données en streaming d’AWS MSK dans ClickHouse Cloud.          |
| Azure Event Hubs | <img src="https://mintcdn.com/private-7c7dfe99-revert-104359-revert-104251-parquet-single/U9_VNNDGYdZRVvSD/images/integrations/logos/azure_event_hubs.svg?fit=max&auto=format&n=U9_VNNDGYdZRVvSD&q=85&s=0f5c6c8b6dd5b5babc75aaf8dfb5edf2" alt="Logo Azure Event Hubs" width="32" data-path="images/integrations/logos/azure_event_hubs.svg" /> | Streaming | Stable | Configurez ClickPipes pour commencer à ingérer des données en streaming d’Azure Event Hubs dans ClickHouse Cloud. |
| WarpStream       | <img src="https://mintcdn.com/private-7c7dfe99-revert-104359-revert-104251-parquet-single/eZ7VVnbgJIbFSXlP/images/integrations/logos/warpstream.svg?fit=max&auto=format&n=eZ7VVnbgJIbFSXlP&q=85&s=526c6921a47bb95430e29a12158ad6de" alt="Logo WarpStream" width="32" data-path="images/integrations/logos/warpstream.svg" />                                                       | Streaming | Stable | Configurez ClickPipes pour commencer à ingérer des données en streaming de WarpStream dans ClickHouse Cloud.      |

<div id="isolation-level">
  ## Niveau d’isolation
</div>

Le niveau d’isolation du consommateur Kafka détermine si un ClickPipe lit et insère uniquement les messages validés par une transaction Kafka. Activez le paramètre `kafka_read_committed` pour utiliser `read_committed` et ignorer les messages provenant de transactions Kafka abandonnées. Désactivez-le pour utiliser `read_uncommitted` et lire tous les messages. Vous pouvez configurer ce paramètre dans **Paramètres avancés**.

<div id="supported-data-formats">
  ## Formats de données pris en charge
</div>

Les formats pris en charge sont :

* [JSON](/fr/guides/clickhouse/data-formats/json/intro)
* [AvroConfluent](/fr/reference/formats/Avro/AvroConfluent)
* [Protobuf](/fr/reference/formats/Protobuf/Protobuf)

<div id="supported-data-types">
  ## Types de données pris en charge
</div>

<div id="standard-types-support">
  ### Types standard
</div>

Les types de données ClickHouse standard suivants sont actuellement pris en charge dans ClickPipes :

* Types numériques de base - \[U]Int8/16/32/64, Float32/64 et BFloat16
* Types entiers de grande taille - \[U]Int128/256
* Types Decimal
* Boolean
* String
* FixedString
* Date, Date32
* DateTime, DateTime64 (fuseaux horaires UTC uniquement)
* Enum8/Enum16
* UUID
* IPv4
* IPv6
* Time, Time64
* JSON
* tous les types LowCardinality de ClickHouse
* Map avec des clés et des valeurs utilisant l’un des types ci-dessus (y compris Nullable)
* Tuple et Array avec des éléments utilisant l’un des types ci-dessus (y compris Nullable, profondeur d’un seul niveau uniquement)
* Types SimpleAggregateFunction (pour les destinations AggregatingMergeTree ou SummingMergeTree)

<div id="variant-type-support">
  ### Prise en charge du type Variant
</div>

ClickPipes prend en charge le type Variant dans les cas suivants :

* Unions Avro.  Si votre schéma Avro contient une union avec plusieurs types non NULL, ClickPipes inférera le type Variant approprié.  Les types Variant ne sont pas pris en charge autrement pour les données Avro.
* Champs JSON.  Vous pouvez spécifier manuellement un type Variant (tel que `Variant(String, Int64, DateTime)`) pour n’importe quel champ JSON dans le flux de données source.  Les sous-types complexes (arrays/maps/tuples) ne sont pas pris en charge.  De plus, en raison de la façon dont ClickPipes détermine le sous-type Variant approprié à utiliser, un seul type entier ou DateTime peut être utilisé dans la définition de Variant - par exemple, `Variant(Int64, UInt32)` n’est pas pris en charge.

<div id="json-type-support">
  ### Prise en charge du type JSON
</div>

ClickPipes prend en charge le type JSON dans les cas suivants :

* Les champs record Avro et message Protobuf peuvent toujours être affectés à une colonne JSON.
* Les champs Avro String et Bytes peuvent être affectés à une colonne JSON si le champ Avro contient réellement des objets JSON String.
* Les types Protobuf String et Bytes peuvent être affectés à une colonne JSON si le champ Protobuf contient réellement des objets JSON String.
* Les champs JSON qui sont toujours des objets JSON peuvent être affectés à une colonne JSON de destination.

Notez que vous devrez modifier manuellement la colonne de destination pour lui attribuer le type JSON souhaité, y compris les chemins fixés ou ignorés.

<div id="avro">
  ### Avro
</div>

<div id="supported-avro-data-types">
  #### Types de données Avro pris en charge
</div>

ClickPipes prend en charge tous les types primitifs et complexes d’Avro, ainsi que tous les types logiques d’Avro, à l’exception de `local-timestamp-millis` et `local_timestamp-micros`.  Les types Avro `record` sont convertis en Tuple, les types `array` en Array, et `map` en Map (clés de type chaîne uniquement).  De manière générale, les conversions répertoriées [ici](/fr/concepts/features/interfaces/schema-inference#avro) sont disponibles.  Nous recommandons d’utiliser une correspondance exacte des types pour les types numériques Avro, car ClickPipes ne vérifie pas les dépassements de capacité ni les pertes de précision lors des conversions de type. Sinon, tous les types Avro peuvent être insérés dans une colonne `String` et seront alors représentés sous la forme d’une chaîne JSON valide.

<div id="nullable-types-and-avro-unions">
  #### Types Nullable et unions Avro
</div>

Dans Avro, les types Nullable sont définis à l’aide d’un schéma Union de `(T, null)` ou `(null, T)`, où T est le type Avro de base. Lors de l’inférence de schéma, ces unions sont mappées sur une colonne ClickHouse « Nullable ». Notez que ClickHouse ne prend pas en charge les types `Nullable(Array)`, `Nullable(Map)` ou `Nullable(Tuple)`. Les unions Avro avec null pour ces types seront mappées sur des versions non Nullable (les types record Avro sont mappés sur un named Tuple ClickHouse). Les valeurs « null » Avro pour ces types seront insérées comme suit :

* Un Array vide pour un tableau Avro null
* Une Map vide pour une Map Avro null
* Un named Tuple avec toutes les valeurs par défaut/à zéro pour un record Avro null

<div id="protobuf">
  ### Protobuf
</div>

<div id="supported-protobuf-data-types">
  #### Types de données Protobuf pris en charge
</div>

ClickPipes prend en charge tous les types Protobuf 2 et 3, à l’exception du type `group` de proto 2, obsolète de longue date. Les conversions de types de base utilisent les correspondances suivantes :

<Note>
  Les variantes `Array`, `Map` et `Nullable` de tous les types de base sont également prises en charge.
</Note>

| Type Protobuf                 | Type ClickHouse |
| ----------------------------- | --------------- |
| `bool`                        | `UInt8`         |
| `float`                       | `Float32`       |
| `double`                      | `Float64`       |
| `int32`, `sint32`, `sfixed32` | `Int32`         |
| `int64`, `sint64`, `sfixed64` | `Int64`         |
| `uint32`, `fixed32`           | `UInt32`        |
| `uint64`, `fixed64`           | `UInt64`        |
| `string`, `bytes`             | `String`        |
| `enum`                        | `Enum`          |
| `repeated T`                  | `Array(T)`      |
| `message`                     | `Tuple`         |

<Tip>
  Pour les types numériques, une correspondance exacte est recommandée afin d’éviter tout dépassement de capacité ou toute perte de précision.
</Tip>

Les [types bien connus](https://protobuf.dev/reference/protobuf/google.protobuf/) suivants sont également pris en charge :

| Type bien connu                                                                              | Type ClickHouse          |
| -------------------------------------------------------------------------------------------- | ------------------------ |
| `google.protobuf.Timestamp`                                                                  | `DateTime`, `DateTime64` |
| `google.protobuf.Duration`                                                                   | `Time`, `Time64`         |
| `google.protobuf.StringValue`, `google.protobuf.BytesValue`                                  | `Nullable(String)`       |
| `google.protobuf.Int32Value`, `google.protobuf.SInt32Value`, `google.protobuf.SFixed32Value` | `Nullable(Int32)`        |
| `google.protobuf.Int64Value`, `google.protobuf.SInt64Value`, `google.protobuf.SFixed64Value` | `Nullable(Int64)`        |
| `google.protobuf.UInt32Value`, `google.protobuf.Fixed32Value`                                | `Nullable(UInt32)`       |
| `google.protobuf.UInt64Value`, `google.protobuf.Fixed64Value`                                | `Nullable(UInt64)`       |
| `google.protobuf.FloatValue`                                                                 | `Nullable(Float32)`      |
| `google.protobuf.DoubleValue`                                                                | `Nullable(Float64)`      |
| `google.protobuf.BoolValue`                                                                  | `Nullable(UInt8)`        |

<div id="protobuf-one-ofs">
  #### Protobuf `oneof`
</div>

Lors de l’inférence de schéma, les champs Protobuf `oneof` sont, par défaut, mappés sur un `Tuple` nommé, dans lequel un seul champ au maximum contient une valeur autre que la valeur par défaut. Ces champs peuvent également être automatiquement mappés sur une colonne `Variant`, où la valeur active prend le type du champ constitutif qui est défini. Autrement, chaque champ constitutif peut être mappé manuellement à sa propre colonne ClickHouse ; comme les champs `oneof` sont mutuellement exclusifs, une seule colonne sera renseignée pour chaque enregistrement.

<div id="protobuf-message-lists">
  #### Listes de messages
</div>

Si le schéma Protobuf de niveau supérieur défini pour le ClickPipe contient un seul champ répété qui est lui-même un message Protobuf, l’inférence de schéma et la mise en correspondance des colonnes seront basées sur le champ de message « contenu ». Le message Kafka sera traité comme une liste de tels messages, et un seul message Kafka sera décomposé en plusieurs lignes ClickHouse.

<div id="kafka-virtual-columns">
  ## Colonnes virtuelles Kafka
</div>

Les colonnes virtuelles suivantes sont prises en charge pour les sources de données de streaming compatibles avec Kafka. Lors de la création d’une nouvelle destination, des colonnes virtuelles peuvent être ajoutées à la table cible à l’aide du bouton `Add Column`.

| Nom              | Description                                                                   | Type de données recommandé |
| ---------------- | ----------------------------------------------------------------------------- | -------------------------- |
| `_key`           | Clé du message Kafka                                                          | `String`                   |
| `_timestamp`     | Horodatage Kafka (précision à la milliseconde)                                | `DateTime64(3)`            |
| `_partition`     | Partition Kafka                                                               | `Int32`                    |
| `_offset`        | Offset Kafka                                                                  | `Int64`                    |
| `_topic`         | Topic Kafka                                                                   | `String`                   |
| `_header_keys`   | Tableau parallèle des clés dans les en-têtes de l’enregistrement              | `Array(String)`            |
| `_header_values` | Tableau parallèle des valeurs d’en-tête dans les en-têtes de l’enregistrement | `Array(String)`            |
| `_raw_message`   | Message Kafka complet                                                         | `String`                   |

Notez que la colonne `_raw_message` n’est recommandée que pour les données JSON.
Pour les cas d’usage où seule la chaîne JSON est requise (par exemple, lors de l’utilisation des fonctions ClickHouse [`JsonExtract*`](/fr/reference/functions/regular-functions/json-functions#jsonextract-functions) pour
alimenter une vue matérialisée en aval), la suppression de toutes les colonnes « non virtuelles » peut améliorer les performances de ClickPipes.

<div id="structured-message-keys">
  ### Clés de messages structurées
</div>

La mise en correspondance de `_key` vers une colonne `String` stocke la clé du message Kafka d’origine. Cette mise en correspondance contourne le décodage de la clé et la recherche de schéma. Pour extraire des champs d’une clé structurée, mettez les champs source commençant par `_key.` en correspondance. Par exemple, pour la clé JSON `{"customer":{"id":42}}`, mettez `_key.customer.id` en correspondance avec une colonne de destination telle que `customer_id`.

Pour les mises en correspondance `_key.*` ou une mise en correspondance directe de `_key` vers un type autre que `String`, ClickPipes vérifie d’abord si la clé a été encodée à l’aide du registre de schémas configuré. Si ce n’est pas le cas, ClickPipes vérifie si la clé est un objet JSON. Une clé encodée à l’aide d’un registre doit utiliser le même format et la même famille de registres que la valeur de l’enregistrement, mais peut utiliser un ID de schéma différent. Les modifications du schéma de la clé sont détectées automatiquement.

Lorsque le décodage est activé, les clés brutes, les scalaires ou tableaux JSON et les JSON mal formés ne renseignent pas les champs de clé imbriqués ; leurs colonnes de destination reçoivent les valeurs par défaut de leur type. Si ClickPipes reconnaît une clé encodée à l’aide d’un registre, mais ne peut pas récupérer ou appliquer son schéma, il écrit l’enregistrement Kafka dans la table d’erreurs de ClickPipes.

Une clé Avro peut également avoir un schéma racine autre qu’un enregistrement, tel qu’un type primitif, un tableau, une map ou un type fixe. Pour la décoder, mettez `_key` directement en correspondance avec un type de destination compatible autre que `String`. Les schémas qui ne sont pas des enregistrements ne peuvent pas renseigner les champs de clé imbriqués.
