最佳实践和常见问题
在此我们检视一些使用 PlayFab Insights 的最佳实践并解答最常见的问题。PlayFab Insights Management 已于 2026 年 3 月 31 日退役。我们建议使用数据连接以便今后管理你的性能和成本。如果你的标题仍在使用 Insights,请继续查看本文以了解最佳实践详情。有关更多信息,请参阅 PlayFab Digest:3 月功能更新。
最佳实践
- 每个性能级别都附带一定数量的缓存。计算每天的数据占用量并决定希望缓存中保留多少天的数据是一个好主意。较小的缓冲区或已知的数据占用量能让执行查询的任何人都知道何时可以期望获得最佳性能。同时也建议根据预期的性能运行可视化以获得快速的结果。
- 例如,一家工作室每天有 5 GB 的数据占用量。选择 450+ 的缓存大小可以在缓存中保留 90 天的数据。在 90 天滚动窗口内运行所有可视化将会非常高效。联接、并集和高级查询也将高效。另一个选择是让实时可视化主要聚焦于 30 天的窗口,并在工作时间将缓存大小设置为最长 90 天,非工作时间设置为 30 天。这在成本节省方面创造了很大的效率。同时请记住,数据在缓存中是被压缩的。
- 像 Power BI 这样的数据可视化平台通常为单个可视化运行多个查询。建议这些可视化按顺序进行更新。如果负载较重或被大量用户使用,则可能有必要将性能级别提高到具有更高并发查询限制的级别,以便为外部工具和分析师腾出并发查询空间。
- 计划扩缩最常见的用例是在标准工作时间扩容,在下班后和周末缩容。如果性能级别有大幅变化(例如,从 3 级到 8 级),建议你打算在较高性能级别上停留数小时。快速将 TB 级数据加载进出缓存是资源的低效使用。所有其他限制都会立即提升,因此你可以在需要时选择进行扩缩变更。
- 计划扩缩与手动扩缩并不互斥。如果你发现白天中期需要更多资源,你可以进行手动更改,计划扩缩会按预期继续进行。
- 减少数据存储可能导致数据丢失。当你尝试减少存储时,会收到警告消息”Selected retention setting is lower than current setting. Doing so may result in a loss of data.”。由于存储成本较低,建议长期保留。
- Insights 管理命令允许创建和更新自定义表。对于核心报表和常用的表,构建自定义聚合表很有帮助。聚合表通常比源数据具有更小的数据占用量。这样可以提高查询性能,减少对更高性能级别的需求。
- 对于自动化数据聚合,我们建议使用 Azure Data Factory,这是一个低成本且可扩展的自动化选项。有关使用 Azure Data Factory 的更多信息,请参阅连接部分。
- 使用时间戳限制查询是良好的数据管理实践。不要一次性拉取最近几天的所有数据。
FAQ
如何查询数据?
- 最简单的方式是使用我们内置的 Data Explorer。
- 连接部分详细介绍了更多访问数据的方式。
我发送了 Microsoft 身份验证链接(使用 Azure Active Directory),但没有生效,发生了什么?
- 如果你已经拥有 PlayFab 账户,则需要先注销,然后才能使用不同的身份验证方法接受邀请。
为什么我尝试更改性能级别或数据保留时收到错误?
- 如果你未注册付费账户,则更改性能级别、保留、导出和某些管理命令将不可用。
- 如果你的 Insights 集群当前正在更改性能级别,则必须等待更改完成。
我可以在免费和付费性能级别之间切换吗?
- 当然可以!如果你目前不需要任何付费功能,可以恢复到免费层。
如何将数据传入我的 Insights 集群?
- 大多数 PlayFab 服务会自动为你生成数据。
- 你也可以通过 PlayStream 或我们的遥测系统实现自己的遥测。
- 你可以使用管理命令引入自定义数据集。
PlayFab 事件的标准数据架构是什么?
- 在 PlayFab Insights 中,我们将所有事件的所有数据加载到一个表中。此表名为 [‘events.all’]。在该表中,你会看到一个名为 “EventData” 的列,其中包含每个事件的 JSON 信息负载。有关 events.all 表的完整信息,请参阅关于 events.all 表以获取更完整的信息。
为什么我不能写 SQL?
- 到目前为止,在大多数场景下我们只支持 KQL(Kusto 查询语言)查询。我们正在积极探索添加 SQL 支持。虽然 KQL 需要一些时间来适应,但我们认为一旦你适应了就会喜欢它。有关将 SQL 转换为 Kusto 查询的信息,请参阅 SQL 到 Kusto 查询转换。
我 Insights 性能级别中的每秒事件数与发送 PlayStream 事件的成本之间有什么区别?
- 你 Insights 性能级别中的每秒事件数代表通过任何方式向你集群的数据摄取。PlayStream 写入事件和写入遥测事件是独立计费的,代表写入云的成本。
我可以拥有比管理页面上看到的更高的性能级别吗?
- 向我们提交一张支持工单,我们会与你联系以安排满足你需求的方案。
PlayFab Insights 背后的底层技术是什么?
- PlayFab Insights 使用 Azure Data Explorer (Kusto) 的专用变体。
为什么使用自定义查询导出时我的数据架构不同?
- 自定义查询输出包含来自 ETL(提取转换加载)过程的详细信息。包含了一些额外的列。这些列在查询环境中是隐藏的,因为它们没有实际用途。
如果我将保留设置减少到少于我拥有数据的总天数会怎么样?
- 你会收到警告,如果减少保留可能会删除数据。例如,如果你运营了一年并将保留减少到六个月,则只会保存最近六个月的数据,其余数据将被丢弃。
如何增加我查询的超时时间?
- 查询的超时限制与你性能级别中定义的计算能力有关。请参阅性能与保留中计算能力下的计算能力表。
我可以发送多少遥测数据是否有限制?
- 以下限制适用于 WriteTelemetryEvents API 调用:
我尝试运行查询时收到错误 “Query execution has exceeded the allowed limits”
- 当结果集的大小或结果集中的行数超过允许的限制时,会发生此错误。尝试通过使用 where、limit 或 summarize 运算符将查询范围限定为相关数据,从而限制返回的数据量。
- 要导出所有数据,请导航到 PlayFab Game Manager 中 Title Overview 页面上 Data 下的 Event Export Tab。
- 如果你只想拉取部分数据,或者仍然触及查询限制,可以按时间或唯一 ID(例如玩家 ID、Title ID)对数据进行分区,并运行多个较小的查询。以下是基于时间进行分区的示例:
- 查看 Kusto 文档以获取更多信息。
我将 truncationmaxsize 和 truncationmaxrecords 变量设置为更大的值,但仍然收到错误
- PlayFab Insights 目前不支持设置这些变量。有关查询构造的提示,请参阅上方内容。
查询 Insights 数据会阻止事件被摄取吗?
- 不会。PlayFab 事件将流入你标题的数据库,没有性能
- 损失。
我的查询返回 “Partial query failure: Low memory condition” 错误
- 这意味着查询过于复杂,无法适应你性能级别的内存限制。尝试简化你的查询。例如,summarize 调用可能有太多组,或者你可能试图一次操作太多行。你也可以升级你的性能级别,为每个查询分配更多内存。
- 查看 Kusto 文档以获取更多信息。
如果我的事件量高于我的性能级别允许的范围,我会丢失数据吗?
- 不会,但会向你收取超额费用。超额以消耗的 Insights 积分数量衡量。可以在 PlayFab.com/Pricing 找到 Insights 积分价格。
我如何决定性能级别?
- 适合你的性能级别最好根据你标题的使用情况来确定。通过提高性能级别,你将获得对缓存中更多数据和其他查询资源的访问权限,从而使查询运行更快。有关更多信息,请参阅性能级别和保留以详细了解性能级别。
我如何为特定标题授予用户对 Data > Explorer 页面的权限?
- 按照 PlayFab 用户角色指南来访问、创建和授予用户权限。
- 用户需要以下 3 项权限才能访问 Data Explorer:
- Explorer 数据和选项卡(读写权限)
- Analytics 数据读取访问(读取权限)
- Analytics 数据写入访问(写入权限)
