![Hero background image](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fb7c669741200cc78168700089f7c85bb2118c4c9-1920x1080.jpg&w=3840&q=100)
开始探索你的数据
使用 Unity Gaming Services (UGS) 数据浏览器根据指标或事件过滤和使用数据,并按平台、国家/地区或版本对数据进行分组。
凭借 SQL(结构化查询语言)的基本知识,您可以使用UGS内的 SQL 数据资源管理器提升分析水平并深入挖掘数据。使用此功能可以构建和执行查询,将结果绘制成不同类型的可视化效果,将可视化效果添加到自定义仪表板,以及导出数据以供其他分析工具使用。在 Unity Dashboard的UGS Analytics面板中找到 SQL Data Explorer。
Unity 的Analytics顾问之一 Russell Young 为您提供了一些建议和想法,帮助您开始 SQL 数据探索之旅。
请参阅 SQL Cookbook 中的食谱集合,探索UGS中的丰富数据。请注意, UGS使用了 Snowflake 风格的 SQL。
其中一个食谱查询查看任务统计数据。让我们调整该代码来快速查看我们模拟游戏中的任务失败率。这使用我们创建的自定义事件来跟踪玩家对任务的参与度,以及我们的 missionID 参数。
![使用默认的 EVENTS 表](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fcd8cf450e29f6d2cb75496297c4898da3d1f67b3-800x196.jpg&w=3840&q=75)
对于此查询,我们将使用默认的 EVENTS 表。该表包含我们游戏中记录的每个事件的详细信息。
![限制查询以提高效率](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F5d1edac9008bb52d7acada91dab46e177fd91775-800x109.jpg&w=3840&q=75)
请注意,我们在这里使用日期过滤器来限制查询并保持其高效。如果没有此限制,查询将会覆盖 SQL 数据资源管理器中默认可查询的全部 365 天的数据。此外,指定您感兴趣的列总是比使用 SELECT * 更有效。
EVENT_JSON:missionID::INTEGER 等短语看起来令人生畏,但如果您输入“missionID”并使用自动完成功能,SQL 数据资源管理器就会为您生成 JSON 语法 - 假设您已在自己的游戏中设置了该参数。
![绘制结果](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F2349fb1fd5acc56cf7a599d1a3bb320f7805d9d1-800x353.jpg&w=3840&q=75)
运行查询后,我们可以绘制结果来查看数据中的故事。图表目前最多支持两个 Y 轴和一个 X 轴。可以使用 SQL 查询中的“as”表达式轻松重命名轴标签;在本例中,我们的 Y 轴采用了我们定义的名称:“玩家失败 %”。
我们发现超过三分之一的玩家在我们的第一次任务(任务ID 0)中失败了,因此我们可以微调任务难度,为用户提供更积极的首次体验。
提示:如果您的数据中有一些 NULL 值,并且发现这导致轴看起来很奇怪,请使用 coalesce(yourParameter, 0) 来填充空白。
![使用枢轴工具](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fcd9f67b3439ac69233068c11663b8ff576925085-800x285.jpg&w=3840&q=75)
当我们运行查询时,我们会得到结果表。将 PLATFORM 添加到我们的查询中;在上图中,您将看到表格现在的样子。注意右侧的‘枢轴’按钮。这对于重塑我们的数据很有用,而无需重写我们的查询。
![调整数据](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F3f69a1ca4be9ddfcd9f5bbebe26b53f8a1d59816-800x759.jpg&w=3840&q=75)
在我们的示例中,我们可以使用数据透视工具来调整我们的数据,以在行中获取 PLATFORM 并以 MISSIONID 作为列。
![看到结果](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F74476a1d426e93ad68f86dcb0b8233067e4c7ee4-800x123.jpg&w=3840&q=75)
调整表格后我们发现,不同平台之间的任务失败率差别不大。
随着您的游戏变得越来越成功并且玩家群不断增长,您可能会发现即使是简单的查询也需要花费相当长的时间才能运行。
假设您想针对数据运行以下基本查询:
您可能期望它运行得相当快,但对于大型数据集来说情况并非总是如此。利用我们仓库的形状以及user_ids以哈希形式存储的事实,使用快速的方法减少包含的用户数量,以提高查询速度。
在这里,我们将用户分成 100 个伪随机分配和编号的存储桶,并查看存储桶编号 63。
将此代码添加到简单查询中不会产生太大区别,但随着计算复杂性的增加,以这种方式过滤数据变得越来越重要。即使在我们的假装游戏中,我们也发现这个修改版本的查询比原始版本运行速度快 75%。这节省了时间和金钱,无需处理整个数据集即可了解用户的样本子集。
在上述查询中,我们使用 count(distinct…) 来计算个人玩家和事件组合的数量。如果我们不需要 100% 准确的结果,那么提高查询速度的一种方法是使用 approximate_count_distinct。我们之前的查询变成:
![打开词汇表面板](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F28ee5db39f7b4439fc953a9e8b08c3570a432104-800x303.jpg&w=3840&q=75)
到目前为止,我们仅使用主 EVENTS 表。由于该表保存了我们游戏中每个事件的详细信息,因此它是最全面的表。为了改进我们的查询,我们可以使用更小的对象来更有效地运行我们的查询。
让我们看一下词汇表面板,探索可供查询的表格。
除了事件之外,我们在这里还可以找到所有可供查询的聚合表。这些都是通过UGS开箱即用的。
- USERS 表为每个玩家保留一行,并记录他们在游戏中的终身指标,例如事件计数、总游戏时间、总花费等。
- FACT_USER_SESSIONS_DAY 包含每个玩家每次会话的数据。
- FACT_EVENT_TYPE_USERS_DAY 包含玩家每天发送的每个事件的一行以及总数。
- FACT_WAU_USERS 和 FACT_MAU_USERS 包含前一周或前一个月某一天玩过游戏的用户的个人资料数据。
在 FACT_EVENT_TYPE_USERS_DAY 和 FACT_USER_SESSIONS_DAY 之间,您大概可以回答针对较小对象的大多数查询的 80% 以上。
例如,在我们的第一个查询中,我们正在查看任务失败率。我们还可以使用 FACT_EVENT_TYPE_USERS_DAY 来计算每天的总体故障率,并将 NUMBER_OF_EVENTS 计数存储在此表中。
我们还将在下一个查询中使用其中一个表:
![根据特定标准识别球员](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F183169b1d147e19e9fdfbde647c1c330a23f34e4-800x218.jpg&w=3840&q=75)
使用此查询查看符合特定条件的玩家的事件流。它对于 QA 和调试很有用,因为 - 通过使用上面提到的 USERS 表 - 您每次运行时都会获得不同的用户。
例如,如果您怀疑安装了特定版本游戏的玩家的事件没有被正确记录,您可以运行以下查询。返回的是随机玩家运行似乎遇到问题的游戏版本的事件流。重复几次,您就可以快速开始发现数据中的模式。
提示:如果要注释掉多行,请使用键盘快捷键 CTRL+/
您可能习惯使用 Snowflake 以外的语言编写 SQL 查询 - 例如,如果您使用以前的 deltaDNA 数据挖掘工具,则很可能在 Vertica 中编写查询。
您现在可以引用新定义的变量,而无需先将它们包含在通用表表达式 (CTE) 中。例如,此查询在 SQL 数据资源管理器中成功运行 - 但在原始 deltaDNA 中,它会引发“列‘rice’不存在”错误:
SQL Explorer 具有很大的潜力。UGS Analytics中还有更多内容有待发现,包括饼图和堆积条形图等许多图表选项。直接访问使您可以通过 Snowflake 直接访问您的Analytics数据。
为了快速获得您的见解并获得构建查询和仪表板的支持, 请联系我们。
进一步阅读