最佳做法和常见问题解答

这里,我们检查了一些使用 PlayFab Insights 的最佳实践,并解决最常见的问题。

最佳做法

  • 每个性能级别都带有一定的缓存量。 计算每日数据占用量并决定要缓存的数据天数是个不错的想法。 小型缓冲或众所周知的数据占用允许执行查询的任何用户了解何时获得最优性能。 建议针对预期性能运行可视化效果,以便快速获得结果。

    • 例如,一个 studio 每天具有 5 GB 的数据占用。 选择 450 以上的缓存大小允许缓存中 90 天的数据。 在 90 天的运行窗口中运行所有可视化效果将十分高效。 联接、联合和高级查询也将十分高效。 另一种选择是主要针对 30 天窗口实时可视化,将缓存大小设置为工作期间最多 90 天,非工作时间为 30 天。 这样可以节省大量成本。 另请注意,数据在缓存中经过压缩。
  • Power BI 等数据可视化平台常针对单个可视化对象运行多个查询。 建议定期更新可视化效果。 如果负载较重或许多用户正在使用,将性能级别提高至允许进行更多并发查询的级别,以向外部工具和分析员释放同时查询,这一点很有意义。

  • 计划缩放的最常见用例是在标准工作时间进行扩展,以及缩小工作外时间及周末。 如果对性能级别(例如级别 3 到 8)进行较大更改,建议你在几个小时内保持较高性能级别。 快速加载缓存中和缓存中的数据是一种对资源的充分利用。 所有其他限制将立即增加,因此如果需要,可以选择进行缩放更改。

  • 计划缩放与手动缩放不互斥。 如果在一天中发现需要的资源更多,可手动更改,计划缩放将按预期继续。

  • 减少数据存储可能会导致数据丢失。 你将在尝试减少存储时被警告显示“所选保留设置低于当前设置。 这样做可能会导致数据丢失。“消息。 由于存储空间较低,建议进行长期保留。

  • 见解管理命令允许创建和更新自定义表。 对于核心报表和通常使用的表,构建自定义聚合表很有帮助。 聚合表的数据占用空间通常比源数据少。 这将提高查询性能,并减少对更高性能级别需求。

    • 对于自动化数据聚合,我们建议使用 Azure 数据工厂,这是一个成本和可伸缩的自动化选项。 有关使用 Azure 数据工厂的信息,请参阅连接部分。
  • 使用时间戳限制查询是一种很好的数据管理做法。 你不会一次性提取过去几天中的所有数据。

常见问题解答

如何查询数据?

  1. 最简单的方法就是使用内置数据资源管理器
  2. 连接部分详细介绍了访问数据的更多方法。
  • 如果已有 PlayFab 帐户,则需要在采用其他身份验证方法接受邀请之前注销。

为什么在尝试更改性能级别或数据保留时出现错误?

  1. 如果尚未注册付费帐户,则更改性能级别、保留、导出和某些管理命令将不可用。
  2. 如果 Insights 群集当前正在更改性能级别,必须等到更改完成。

我可以在免费和付费的性能级别之间更改吗?

  • 当然! 如果当前不需要任何付费功能,可以还原回免费层。

如何将数据进入"见解"群集?

  1. 大多数 PlayFab 服务都会自动生成数据。
  2. 您还可以通过 PlayStream 或我们的遥测系统实现您自己的遥测。
  3. 可使用" 管理命令 ,以输入自定义数据集。

PlayFab 事件的标准数据架构是什么?

  • 在 PlayFab Insights 中,我们将所有事件的所有数据加载到单个表中。 此表命名为 ['events.all]。 在该表内,你将看到一个名为“EventData”的列,其中包含每个事件的 JSON 信息的有效负载。 有关事件的完整信息.all 表,请参阅 "关于事件".所有表 了解有关完整信息的信息。

为什么我无法编写 SQL?

  • 目前仅支持多数情况下的 KQL(查询语言)查询。 我们正在积极探索添加 SQL 支持。 虽然 KQL 已入门,但我们希望你一旦喜欢。 有关将 SQL 转换为 Kusto 查询的信息,请参阅 SQL 到 Kusto 查询转换

我的见解性能级别中每秒事件数与发送 PlayStream 事件的成本之间有什么区别?

  • 见解性能级别中的每秒事件数表示通过任意方式向群集提供数据。 PlayStream 编写事件和编写遥测事件单独计费,表示写入云的成本。

我能否比管理页面看到的性能级别更高?

  • 向我们提交支持票,我们将与您联系以安排满足您需求的事情。

PlayFab Insights 背后的基础技术是什么?

  • PlayFab Insights 使用 Azure 数据资源管理器 (Kusto) 的专用变体。

为什么我的数据架构在使用自定义查询进行导出时有不同?

  • 自定义查询输出包含 ETL(提取转换加载)过程的详细信息。 将包含一些额外的列。 这些列隐藏在查询环境中,因为它们没有用途。

如果将保留设置减少为小于具有数据的总天数的天数,会发生什么情况?

  • 你警告,如果减少保留可能会删除数据。 例如,如果已运行一年,将保留期缩短到六个月,则仅保存最近六个月的数据,其余部分将丢弃。

如何增加查询的超时时间?

  • 查询的省时限制相对于性能级别中定义的计算能力。 请参阅计算能力下的性能和保留中的计算能力表。

可发送的遥测数量是否有所限制?

  • WriteTelemetryEvents API 调用存在以下限制:

    限制名称 限制值 说明
    每个请求事件 每个请求 200 个事件 超过此限制将导致 BadRequest 错误。
    每个实体的事件 8,000/秒 超过此限制将导致 PerEntityEventRateLimitExceeded 错误。 实体通常代表单个播放器,但也可以是播放器组或标题。
    最大负载大小 10240 字节 (10 KB)

    如果遇到任何这些限制,请联系 Playfab 支持团队寻求帮助。 在 Game Manager 右上角选择问号图标,然后选择 联系我们

当我尝试运行查询时,我收到错误"查询执行已超出允许限制"。

  • 当结果集的大小或结果集的行数超过允许的限制时,会出现此错误。 尝试通过使用 wherelimitsummary 运算符将查询范围限定为相关数据来限制返回的数据量
  • 若要导出所有数据,请导航到 PlayFab 游戏管理器中标题概述页面上数据下的事件导出选项卡
  • 如果只想拉取数据段,或者仍达到查询限制,可以按时间或唯一 ID(例如玩家 ID、游戏 ID)将数据分区,并运行多个更小的查询。 下面的示例演示了如何基于时间进行分区:

其中

let start = datetime(2020-08-03);
let end = datetime(2020-08-07);
['events.all'] | where Timestamp between(start .. end)

限制

['events.all'] | limit 1000

总结

['events.all'] | summarize count() by FullName_Name, bin(Timestamp, 1d)

我将 truncationmaxsize 和 truncationmaxrecords 变量设置为更大的值,但仍然出现错误。

  • PlayFab Insights 目前不支持设置这些变量。 请参阅上述内容获取查询提示。

查询见解数据是否可防止事件被使用?

  • 否。 PlayFab 事件将流入标题的数据库中,性能将降低
  • 处罚。

我的查询返回"部分查询失败:内存条件低"错误

  • 这意味着查询过于复杂,无法符合"性能级别"的内存限制。 尝试简化查询。 例如,汇总调用可能拥有过多组,或者可能尝试一次操作过多行。 还可以升级性能级别,以允许向每个查询分配更多内存。
  • 查看 Kusto 文档了解更多信息。

如果事件数超过性能级别允许的数量,会丢失数据吗?

  • 不会,但将为过度讨论负责。 存储量以使用的见解信用数为度量单位。 有关见解,可在上找到"信用 PlayFab.com/Pricing

如何按性能级别进行决定?

  • 最适合你的性能级别取决于标题的使用情况。 通过提高性能级别,您将获得对缓存和其他查询资源中的更多数据的访问权限,从而生成更快地运行查询。 有关详细信息,请参阅性能级别和保留,了解有关性能级别的详细信息。

如何针对特定标题向用户授予数据 > 资源管理器页面的权限?

  • 按照 PlayFab 用户角色 指南,访问、创建和授予用户权限。

  • 用户需要以下 3 种权限才能访问数据资源管理器:

    • 资源管理器数据&选项卡(读取和写入权限)
    • 分析数据读取访问权限(读取权限)
    • 分析数据写入访问权限(写入权限)