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

# 元数据统计

> 将元数据附加到 PlayFab 统计数据，以在数值旁边携带上下文详细信息，丰富排行榜条目和玩家进程数据。

# 向统计数据添加上下文数据

在本教程中，我们将介绍如何在每次更新统计数据时添加上下文信息。在某些情况下，仅保存统计数据是不够的。游戏工作室可能想添加有关玩家如何执行特定操作的一些详细信息，或者游戏中可能有与统计数据相关的功能。

我们继续以竞争激烈的射击游戏为例。在此示例中，游戏取得了巨大的成功，但面临着挑战。有太多关于人们使用外部组件"作弊"的投诉，这些组件可以消除武器的后坐力并改善瞄准辅助。因此，现在我们的任务是跟踪游戏中使用的所有组件和网络信息。

## 创建统计数据

为了说明如何处理这种情况，我们将采用[使用统计数据做更多](/services/playfab/player-progression/statistics/doing-more-statistics)页面中的统计数据定义。从此定义开始，我们将了解如何为添加到统计数据的每一行添加元数据。

```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);
}
```

对于本教程，此示例中要注意的重要元素是统计数据的结构。如您所见，它有多列允许多个值。但我们的重点是如何为每一行添加上下文信息。

### 向每个统计数据添加元数据

我们想知道玩家是否有任何未经授权的硬件影响游戏玩法，或者是否有任何其他可能提高玩家性能的恶意软件。反作弊系统能够获取所有这些信息。我们只需要为远距离射击统计数据附加这些信息。

要执行此操作，我们将使用 UpdateStatistics API。这里我们可以查看 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);
}
```

我们可以在这里看到的主要概念是在 `StatisticUpdate` 中使用 `Metadata` 参数，它指的是将与值本身一起更新的上下文数据。在这里我们可以添加对开发者有意义的任何信息，在此例中为反作弊数据。

有了这些示例，我们现在可以跟踪来自顶级玩家的所有相关信息，使游戏审核者能够更好地决定要禁止谁。

## 结论

在本教程中，我们学习了如何执行以下操作：

* 创建多列统计数据。
* 向统计数据添加元数据。

## 另请参阅

* [创建基本统计数据](/services/playfab/player-progression/statistics/create-basic-statistics)。
* [使用统计数据做更多](/services/playfab/player-progression/statistics/doing-more-statistics)。
* [季节性统计数据](/services/playfab/player-progression/statistics/seasonal-statistics)。
* [事务性写入](/services/playfab/player-progression/statistics/transactional-writes)
* [API 参考](/services/playfab/player-progression/statistics/api-reference)。
* [限制](/services/playfab/player-progression/statistics/limits-statistics)。
* [配额](/services/playfab/player-progression/statistics/quota-statistics)


## Related topics

- [根据统计信息为玩家排名](/zh-CN/services/playfab/community/leaderboards/leaderboards-linked-to-stats.md)
- [PlayFab 统计信息概览](/zh-CN/services/playfab/player-progression/statistics/index.md)
- [使用统计数据做更多](/zh-CN/services/playfab/player-progression/statistics/doing-more-statistics.md)
- [基于事件的统计数据初览](/zh-CN/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-stats-first-glance.md)
- [PlayFab 玩家进程文档](/zh-CN/services/playfab/player-progression/index.md)
