> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wirespeed.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Requêtes avancées

> Requêtes et filtrage avancés

Utilisez le SQL de [ClickHouse](https://clickhouse.com/) pour examiner les données SIEM normalisées produites par vos intégrations. Wirespeed stocke les champs d’événement courants dans des tables typées `wspd_*` et conserve la charge utile d’origine du fournisseur dans la table `*_logs` propre à chaque source.

> [!TIP]
>
> Commencez par une table normalisée pour les investigations portant sur plusieurs sources, puis interrogez la table source indiquée dans `_wspd_table` lorsque vous avez besoin de champs propres au fournisseur.

## Démarrage rapide

Pour exécuter une requête avancée, accédez à la page **Événements** et sélectionnez l’icône  en haut à droite.

Sélectionnez **Ask Wirespeed** à côté de l’éditeur SQL pour lancer le parcours **Créer une requête avancée**. Ask Wirespeed inspecte vos tables connectées, vérifie les champs sélectionnés, exécute une requête représentative bornée, valide le SQL final et renvoie un bouton **Exécuter** qui ouvre la requête dans Événements avancés.

## Schéma

Bornez toujours les requêtes d’événements avec `_wspd_time`. La page Avancé fournit `{startTime: DateTime64}` et `{endTime: DateTime64}` à partir de son sélecteur de période.

### Tables

* `wspd_events` — index consolidé des événements de toutes les sources de journaux connectées
* `wspd_authentication_events` — activité de connexion et d’authentification normalisée
* `wspd_productivity_events` — activité de messagerie, de fichiers et de collaboration normalisée
* `wspd_dns_events` — activité DNS normalisée
* `*_logs` — tables de journaux bruts propres à chaque source, comme `microsoft_entra_signin_logs`

La table consolidée `wspd_events` comprend :

| Colonne | Description |
| - | - |
| `_wspd_id` | Identifiant de l’événement |
| `_wspd_team_id` | Équipe propriétaire ; périmètre appliqué automatiquement par la sécurité au niveau des lignes |
| `_wspd_integration_id` | Identifiant de l’intégration source |
| `_wspd_integration_slug` | Type de l’intégration source |
| `_wspd_table` | Table source contenant la charge utile du fournisseur |
| `_wspd_event_type` | Type d’événement normalisé |
| `_wspd_time` | Horodatage de l’événement en UTC |
| `_wspd_ingested_at` | Moment où Wirespeed a stocké l’événement |
| `_wspd_observables` | Valeurs normalisées consultables |

**Champs de wspd\_authentication\_events**

| Colonne | Description |
| - | - |
| `status` | Résultat de l’authentification, notamment `SUCCESS` et `FAILURE` |
| `is_mfa` | Indique si l’événement impliquait la MFA |
| `actor_email` | Adresse e-mail de l’utilisateur qui s’authentifie |
| `actor_username` | Nom de l’utilisateur qui s’authentifie |
| `src_ip` | Adresse IP source |
| `src_ip_country` | Pays source enrichi |
| `src_ip_asn_number` | ASN source enrichi |
| `src_ip_asn_name` | Nom du réseau source enrichi |
| `src_ip_vpn` | Indicateur VPN |
| `src_ip_proxy` | Indicateur de proxy |
| `src_ip_tor` | Indicateur Tor |
| `src_ip_relay` | Indicateur de relais |
| `user_agent` | User agent source |
| `session_uid` | Identifiant de la session d’authentification |

### Exemples

**Compter les événements par type normalisé**

```sql theme={null}
SELECT
    _wspd_event_type,
    count(*) AS event_count
FROM wspd_events
WHERE _wspd_time >= {startTime: DateTime64}
    AND _wspd_time < {endTime: DateTime64}
GROUP BY _wspd_event_type
ORDER BY event_count DESC;
```

**Rechercher les échecs d’authentification**

```sql theme={null}
SELECT
    _wspd_time,
    actor_email,
    src_ip,
    src_ip_country,
    user_agent,
    message
FROM wspd_authentication_events
WHERE status = 'FAILURE'
    AND _wspd_time >= {startTime: DateTime64}
    AND _wspd_time < {endTime: DateTime64}
ORDER BY _wspd_time DESC
LIMIT 100;
```

**Rechercher les connexions réussies depuis des pays absents des 30 jours précédents**

```sql theme={null}
WITH historical_locations AS (
    SELECT DISTINCT
        lower(actor_email) AS actor_email,
        upper(src_ip_country) AS country
    FROM wspd_authentication_events
    WHERE status = 'SUCCESS'
        AND src_ip_country != ''
        AND _wspd_time >= toDateTime({startTime: DateTime64}) - INTERVAL 30 DAY
        AND _wspd_time < {startTime: DateTime64}
)
SELECT
    current._wspd_time,
    current.actor_email,
    current.src_ip,
    current.src_ip_country,
    current.user_agent
FROM wspd_authentication_events AS current
WHERE
    current.status = 'SUCCESS'
    AND current.src_ip_country != ''
    AND current._wspd_time >= {startTime: DateTime64}
    AND current._wspd_time < {endTime: DateTime64}
    AND (lower(current.actor_email), upper(current.src_ip_country)) NOT IN (
        SELECT actor_email, country
        FROM historical_locations
    )
ORDER BY current._wspd_time DESC
LIMIT 100;
```

### Valeurs nulles

La plupart des champs normalisés utilisent des types non nullables. Les chaînes manquantes sont représentées par `''`, tandis que les valeurs numériques manquantes utilisent la valeur par défaut de la colonne.

### Horodatages

Tous les horodatages sont stockés et affichés en UTC.

## Limites de ressources

* **2 000** lignes par requête interactive
* **4 Go** de mémoire par requête
* **60 s** de temps d’exécution par requête

Les [détections personnalisées](https://docs.wirespeed.co/fr/events/custom-detections.md) sont créées et vérifiées dans Ask Wirespeed, avec une limite de moins de 100 correspondances au cours de la dernière heure et un plafond d’exécution de 7,5 secondes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.