> ## 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.

# Estadísticas con metadatos

> Adjunte metadatos a las estadísticas de PlayFab para incorporar detalles contextuales junto con los valores numéricos, enriqueciendo las entradas de las tablas de clasificación y los datos de progresión de los jugadores.

# Adición de datos contextuales a las estadísticas

En este tutorial, vamos a explicar cómo agregar información contextual cada vez que se actualiza una estadística. Hay casos en los que
guardar solo las estadísticas no es suficiente. El estudio de juegos podría agregar algunos detalles sobre cómo un jugador realizó una acción específica,
o podría haber una característica dentro del juego relacionada con la estadística.

Vamos a continuar con nuestro juego de disparos competitivo. En este ejemplo, el juego tiene un éxito tremendo, pero se
enfrenta a un desafío. Hay demasiadas quejas sobre personas que "hackean" el juego con componentes
externos que eliminan el retroceso de las armas y mejoran la asistencia de apuntado. Así que ahora se nos encarga registrar más información sobre todos
los componentes usados y la información de red en nuestro juego.

## Creación de una estadística

Para mostrar cómo abordar este escenario, vamos a tomar la definición de estadística de la página
[Más operaciones con estadísticas](/services/playfab/player-progression/statistics/doing-more-statistics). A partir de esta definición, vamos
a ver cómo agregar metadatos a cada fila agregada a la estadística.

```C# theme={null}
public static async Task CreateStatisticDefinitionAsync(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
    {
        Name = statName,
        AuthenticationContext = context,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<StatisticColumn>()
        {
            new StatisticColumn()
            {
                Name = "Distance",
                AggregationMethod = StatisticAggregationMethod.Max,
            },
             new StatisticColumn()
            {
                Name = "Caliber",
                AggregationMethod = StatisticAggregationMethod.Min,
            }
        },
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
}
```

Para este tutorial, el elemento importante que hay que extraer de este ejemplo es la estructura de la estadística. Como puede ver,
tiene varias columnas que permiten varios valores. Pero nuestro objetivo es ver cómo podemos agregar información
contextual a cada una de estas filas.

### Adición de metadatos a cada estadística

Queremos saber si el jugador tiene algún hardware no autorizado que afecte al juego o cualquier otro software malintencionado que pueda
mejorar el rendimiento del jugador. El sistema antitrampas es capaz de obtener toda esta información. Solo necesitamos adjuntar
esta información para la estadística de tiros a larga distancia.

Para realizar esta acción, vamos a usar la API UpdateStatistics. Aquí podemos ver el ejemplo del SDK:

```C# theme={null}
public static async Task UpdateStatisticForPlayer(PlayFabAuthenticationContext context, string statName, string entityId, int score)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateStatisticsRequest updateStatRequest = new UpdateStatisticsRequest()
    {
        Entity = new PlayFab.LeaderboardsModels.EntityKey()
        {
            Id = entityId,
            Type = EntityType
        },
        AuthenticationContext = context,
        Statistics = new List<PlayFab.LeaderboardsModels.StatisticUpdate>() 
        {
            new PlayFab.LeaderboardsModels.StatisticUpdate() 
            {
                Name = statName,
                Scores = new List<string> { score.ToString()},
                Metadata = "Anticheat data"
            }
        }
    };

    PlayFabResult<UpdateStatisticsResponse> updateResult = await statsAPI.UpdateStatisticsAsync(updateStatRequest);
}
```

El concepto principal que podemos ver aquí es el uso del parámetro `Metadata` dentro de `StatisticUpdate`, que hace referencia
a datos contextuales que se van a actualizar además del propio valor. Aquí podemos agregar cualquier información que pueda ser significativa para un desarrollador,
en este caso, los datos antitrampas.

Con estos ejemplos, ya estamos preparados para registrar toda la información relevante de nuestros mejores jugadores, lo que permite a los moderadores del juego
tomar mejores decisiones sobre a quién expulsar.

## Conclusiones

En este tutorial, aprendimos a realizar las siguientes operaciones:

* Crear una estadística de varias columnas.
* Agregar metadatos a la estadística.

## Consulte también

* [Creación de estadísticas básicas](/services/playfab/player-progression/statistics/create-basic-statistics).
* [Más operaciones con estadísticas](/services/playfab/player-progression/statistics/doing-more-statistics).
* [Estadísticas de temporada](/services/playfab/player-progression/statistics/seasonal-statistics).
* [Escrituras transaccionales](/services/playfab/player-progression/statistics/transactional-writes)
* [Referencia de API](/services/playfab/player-progression/statistics/api-reference).
* [Límites](/services/playfab/player-progression/statistics/limits-statistics).
* [Cuota](/services/playfab/player-progression/statistics/quota-statistics)


## Related topics

- [Más operaciones con estadísticas](/es/services/playfab/player-progression/statistics/doing-more-statistics.md)
- [Estadísticas basadas en eventos frente a estadísticas administradas por el título](/es/services/xbox-services/player-data/stats-leaderboards/live-stats-eb-vs-tm.md)
- [Estadísticas con PlayStream y telemetría](/es/services/playfab/player-progression/statistics/statistics-with-playstream-and-telemetry.md)
- [Información general sobre las estadísticas de PlayFab](/es/services/playfab/player-progression/statistics/index.md)
- [Documentación de progresión del jugador de PlayFab](/es/services/playfab/player-progression/index.md)
