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

# Prise en main du mode avancé de Data Explorer

> Apprenez à écrire des requêtes personnalisées dans PlayFab Data Explorer en mode avancé à l'aide du langage de requête Kusto sur la table events.all pour des analyses plus approfondies.

<Info>
  La fonctionnalité Data Explorer est en préversion publique. Nous prévoyons des modifications continues à mesure que nous recueillons des commentaires
</Info>

et que nous l'optimisons pour l'utilisation par les clients.

Le mode avancé de Data Explorer est conçu pour des requêtes plus complexes et des informations plus approfondies à l'aide du [langage de requête Azure Data Explorer](https://learn.microsoft.com/en-us/azure/data-explorer/write-queries), un langage de type SQL optimisé pour l'exploration ad hoc des données. Pour apprendre à écrire des requêtes non techniques, consultez le tutoriel [Prise en main du mode de base de Data Explorer](/fr/services/playfab/data-analytics/learn-data/data-explorer/getting-started-with-data-explorer-basic).

## Création de requêtes personnalisées

Pour commencer à créer vos propres requêtes en mode avancé, il est important de comprendre d'abord la forme des données auxquelles vous accédez.

### La table events.all

La table `events.all` est la destination par défaut de tous les événements entrants. Il s'agit d'une table unique semi-structurée avec des colonnes pour les valeurs courantes, comme l'heure et le nom de l'événement. Vous vous familiariserez rapidement avec la colonne EventData, qui contient la charge utile JSON d'origine complète et qui est utile dans presque toutes les requêtes. Vous pouvez lire la documentation suivante sur la [table events.all](/fr/services/playfab/data-analytics/acting-data/schemas-events-all).

### Anatomie d'une requête

Une expression de requête commence le plus souvent par le nom de la table. Celui-ci est suivi du délimiteur barre verticale (|).
Viennent ensuite un ou plusieurs opérateurs. Chaque opérateur est séparé par le délimiteur barre verticale.

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer4-02.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=d5e7d0ee878b379a5394c91503848ae5" alt="Expression" width="1893" height="530" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer4-02.png" />

Selon vos préférences, une requête peut être exprimée sur une seule ligne ou avec un retour à la ligne avant chaque délimiteur barre verticale. Cela ne change rien à la requête elle-même.

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer5-02.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=35e6290c6672fcc5d4213851e8bb77a0" alt="Volet de requête" width="1893" height="530" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer5-02.png" />

Le volet Query peut contenir plusieurs requêtes. Il est ainsi facile de commencer par une expression simple, de vérifier qu'elle s'exécute, puis de la développer.

Une ligne vide sépare une requête d'une autre. La position de votre curseur détermine quelle requête s'exécute lorsque vous appuyez sur le bouton « Run ». Vous pouvez également mettre en surbrillance une partie de la requête pour n'exécuter que cette expression.

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer6-02.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=8dc281806663ec24ce18194a630a6f6a" alt="Exécuter" width="1893" height="530" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer6-02.png" />

### Création de votre première requête

Créons maintenant votre première requête de toutes pièces. Vous pouvez taper le nom de la table dans le volet Query. Mais nous allons utiliser un petit raccourci. Recherchez la table `events.all` dans le volet Resources. Vous devrez peut-être développer la base de données de votre ID de titre en cliquant sur la flèche.

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer7-01.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=402ea5610105562cc10521a401070380" alt="Table events.all" width="3000" height="1673" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer7-01.png" />

Une fois que vous avez trouvé la table `events.all`, double-cliquez sur son nom. Vous remarquerez que cette expression a été ajoutée au volet Query.

<Note>
  En préversion, vous devrez ajouter manuellement les crochets et les guillemets simples autour du nom de la table. Un correctif pour cet inconvénient est en cours.
</Note>

```json theme={null}
['events.all']
| 
```

Notez les crochets et les guillemets simples autour du nom. Ils sont obligatoires chaque fois que le nom de la table ou de la colonne contient un « . ». Votre curseur est maintenant à la bonne position pour créer votre premier opérateur. Commençons par utiliser l'opérateur take.

```json theme={null}
['events.all']
| take 100
```

Exécutez cette requête. Notez que le volet Results affiche maintenant 100 lignes de données brutes.

Dans le volet Results, sélectionnez la première ligne. À l'aide de la flèche droite, accédez à la colonne FullName\_Name. Il s'agit du nom de l'événement. Descendez avec la flèche jusqu'à trouver un événement `player_logged_in`. Une fois que vous en avez trouvé un, déplacez-vous avec la flèche droite jusqu'à la colonne EventData et double-cliquez. Vous devriez maintenant voir ceci :

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer8-01.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=c8ace0436fb553607c012902fdeb7a79" alt="Colonne EventData" width="3000" height="1673" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer8-01.png" />

Votre requête peut référencer n'importe quelle propriété du JSON EventData à l'aide de la notation pointée (.). Vous pouvez l'essayer dès maintenant en modifiant votre requête pour ne renvoyer que les événements player\_logged\_in d'un seul joueur. Double-cliquez sur le GUID EntityID et copiez-le dans le Presse-papiers.

Mettez maintenant à jour votre requête comme suit et insérez le GUID que vous avez copié :

```json theme={null}
['events.all']
| where FullName_Name == 'player_logged_in'
| where Entity_Id == 'paste from clipboard here'
```

<Tip>
  Le double signe égal est utilisé pour évaluer l'égalité de chaînes. Les guillemets simples au début et à la fin délimitent une chaîne.
</Tip>

Exécutez la requête : le volet Results affiche les événements player\_logged\_in uniquement pour le joueur sélectionné. Vous pouvez utiliser la notation pointée pour référencer plusieurs niveaux imbriqués de la hiérarchie JSON en ajoutant simplement un point entre chaque niveau.

Créons maintenant une deuxième requête pour regrouper les connexions des joueurs par région. Sans supprimer ce que vous avez écrit, appuyez deux fois sur Entrée. Ajoutons un commentaire à notre prochaine requête à l'aide de « // ». Les commentaires ne sont pas exécutés et sont utiles pour garder une trace de l'intention derrière chaque requête.

```json theme={null}
//Player logins by platform
```

Une fois encore, double-cliquez sur la table events.all dans le volet Resources. Cette fois, ajoutons un délimiteur temporel à notre expression pour limiter notre requête aux trois derniers jours.

```json theme={null}
//Player logins by platform
['events.all']
| where Timestamp > ago(30d)
| where FullName_Name == 'player_logged_in'
```

Exécutez cette requête pour obtenir la liste complète de tous les événements de connexion des trois derniers jours. Cependant, nous voulons savoir combien de joueurs distincts se sont connectés, et non le nombre d'événements. Pour ce faire, nous allons utiliser l'opérateur distinct sur l'ID d'entité.

```json theme={null}
['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| distinct Entity_Id
```

Cette requête renvoie la liste des ID d'entité qui se sont connectés au cours des trois derniers jours. Le volet Results affiche le nombre d'enregistrements, ce qui nous permet de voir le total.

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer9-03.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=4b92787156e8ca61006503aa4edeb049" alt="Enregistrements" width="1888" height="509" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer9-03.png" />

Obtenons maintenant le nombre de joueurs qui se sont connectés depuis chaque plateforme. Pour ce faire, nous avons besoin du nombre distinct d'ID d'entité regroupés par la propriété platform du JSON EventData. Cela nécessite l'opérateur `summarize`. Comme `summarize` ne prend pas en charge les types dynamiques, nous devons également convertir platform en chaîne.

```json theme={null}
['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| summarize dcount(Entity_Id) by tostring(EventData.Platform)
```

Terminons en beauté. En ajoutant une seule expression supplémentaire, nous pouvons afficher nos résultats sous forme d'histogramme.

```json theme={null}
['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| summarize dcount(Entity_Id) by tostring(EventData.Platform)
| render columnchart
```

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer10-01.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=3d0e560318ada4b6f18f158aeff7d5f6" alt="Requêtes" width="3000" height="1673" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer10-01.png" />

## Exemples de requêtes

Nous n'avons fait qu'effleurer la surface des types de requêtes qui peuvent être créées dans Explorer. D'autres exemples de requêtes peuvent être chargés depuis la page Explorer en appuyant sur « What's This ». Chacun de ces exemples de requêtes est choisi pour illustrer certains des différents opérateurs disponibles et la manière dont ils peuvent être appliqués à des questions concrètes.

<Note>
  Comme la forme de vos données peut différer de celle de notre jeu de données de démonstration, vous devrez peut-être modifier l'exemple de requête pour l'exécuter dans votre scénario.
</Note>

## Limites

Deux limites régissent l'utilisation des requêtes dans Explorer :

1. Durée d'exécution maximale d'une requête : une requête individuelle ne peut pas s'exécuter plus de 30 secondes. Si cette limite est dépassée, la requête est arrêtée et vous recevez un message d'erreur.

2. Utilisation par intervalle : chaque titre dispose d'une durée d'exécution cumulée totale de trois minutes sur tout intervalle de 10 minutes. Si cette limite est dépassée, vous recevez un message d'erreur et devez attendre avant d'exécuter d'autres requêtes.

## Rétention des données

Par défaut, les requêtes Data Explorer s'exécutent sur le stockage à chaud, qui peut être configuré dans l'outil Management. Les requêtes qui portent sur des données au-delà de celles stockées dans le stockage à chaud ont des durées d'exécution nettement plus longues et peuvent expirer.


## Related topics

- [Démarrage rapide de Data Explorer](/fr/services/playfab/data-analytics/learn-data/data-explorer/quickstart.md)
- [Prise en main du mode de base de Data Explorer](/fr/services/playfab/data-analytics/learn-data/data-explorer/getting-started-with-data-explorer-basic.md)
- [Prise en main de PlayFab Explorer](/fr/services/playfab/data-analytics/acting-data/schemas-events-all.md)
- [Data Explorer](/fr/services/playfab/data-analytics/learn-data/data-explorer/index.md)
- [Prise en main de l'entrée tactile](/fr/build/core-features/common/game-streaming/game-streaming-getting-started-with-touch.md)
