你可以直接连接到你的数据,并在deltaDNA数据仓库对你的事件和存储的用户运行SQL查询。你应当可以使用任意Postgres ODBC兼容的工具连接。
连接
- 一些工具将带有其内置的Postgres ODBC驱动程序,其他的可能要求你在可以使用它们之前下载一个驱动程序并建立一个连接(DSN)。下面的应用中标有星号(*)的将要求你做这一步。查看我们的Postgres ODBC连接指导(Postgres ODBC Connection Guide)以了解如何做这一步的详情。
- 使用你喜欢的数据库管理器连接到你的数据。下面的链接介绍了如何使用下面的工具连接到你的数据。
- DBeaver:一个免费的通用数据库管理器
- OpenOffice:一个免费的办公软件套件。
- Microsoft Excel(*):微软的一个比较著名的电子表格软件。
- Tableau(*):数据可视化工具
- R:统计学计算和图形编程语言。
数据表。
有三种类型的数据可以被访问,每一种你都有对应你的开发(DEV)和实际(LIVE)环境的分离的表格。
- 原始事件数据(Raw Event Data)。原始事件数据包含按照你的游戏的事件保存规则(通常31天)制定的你的最近事件的所有事件和参数。
表:events_dev和events_live - 用户指标数据。用户指标表包含你的游戏中每个玩家的一行数据,无论这个玩家已经有多长时间没有玩游戏。许多指标是自动跟踪的,并为每个用户添加到表格中,但是你也可以在游戏参数管理器(Game Parameters Manager)工具中定义你的哪个事件参数被作为指标跟踪。吸引活动(Engage Campaigns)和A/B测试(A/B Tests)在运行玩家分段查询时访问一个实时版本的数据,你通过直接访问来访问的用户指标是每个玩家最新了解状态的一个每日的快照,每24小时在深夜更新一次。
表:user_metrics_dev和user_metrics_live - 聚合指标图表数据:剩下的带有fact前缀的表格包含聚合的数据,用于驱动许多指标显示面板图表(Measure Dashboard Charts)。因此,你可以对覆盖你的游戏全部历史的聚合数据运行查询。
表:每个环境有六个表,包含fact_前缀的events,mau,wau,sessions,missions和products。
了解你的数据
如果你熟悉你发送的事件和参数以及其如何存储,你将从你的数据中得到更多。
- 你的事件可以在事件管理工具(Event Management Tool)查看和编辑。建议你先熟悉你的游戏发送的自己的事件。其还可以用于使用事件浏览QA工具(Event Brower QA Tool)查看接收的事件。
- 事件表结构非常简单,你的事件存储在一个非常宽的表中,每个参数都有一列,你可以在游戏参数(Game Parameters)工具配置,且每个事件都有至少一行。复杂的事件可以分在多行中,以后还会更多。当你使用数据挖掘(Data Mining)工具或者下载你的任何每日事件存档文件时,你将访问在这个宽表格式中的数据。
还有一些关于你的事件数据值得一提的事情。- 日期范围:只有最近30天的数据和你的热门数据被保存在数据仓库中。这可以在每个游戏被延长,如果你想要为你的游戏延长日期范围,请联系技术支持。
- 空列:由于在你的游戏中每个参数都有一列被配置,当参数与特定的事件无关时,在某些给定的行将会有许多列没有数据。
- 额外列:你将发现平台自动添加了一些额外的列,这些是非常明显的,而且可以从字面意思直接解释,许多使用ga前缀。
- eventLevel:下面的例子展示了9行,但是这里实际上只有5个事件。你看到的交易事件实际上是两个事件,每个都有在一个数组中发送的两个嵌套的子对象。使用eventLevel和mainEventID参数以理解嵌套事件的“父-子”关系。
- convertedProductAmount:当你添加一个游戏到这个平台时,你要指定一个你想要你的显示面板展示你的收入的货币。productAmount(产品价值)和productType(产品类型)列将总是包括玩家花费的当地货币和convertedProductAmount(转换的产品价值)列将包含转换为在购买时你指定货币的值。
- revenueValidated:如果你使用了deltaDNA的这个功能,revenueValidated标志位展示了应用商店(App Store)收入确认请求的状态。你将看到的值是:
- 0:不进行确认
- 1:收入有效
- 2:收入无效
- 3:确认过程中出错
如果你想要从案例游戏中查看一些其他的列或参数,你可以下载上述的案例事件。
SQL菜单(SQL Cookbook)
SQL菜单(SQL Cookbook)章节包含不断增加的大量有用的查询,如果愿意欢迎将你自己创建的SQL查询分享给我们。
过去7天按照货币的应用购买收益(App Purchase Revenue)。.
1 2 3 4 5 6 7 8 9 10 11 |
SELECT productType "Currency", COUNT(productAmount) "Purchases", COUNT(DISTINCT(userID)) "UniqueUsers", SUM(productAmount) AS "Revenue (Local cents)" , ROUND(SUM(convertedProductAmount) / 100 , 2) AS "Revenue (USD)" FROM events_live WHERE eventName = 'transaction' AND productCategory like 'REAL_CURRENCY' AND eventDate BETWEEN CURRENT_DATE - 7 AND CURRENT_DATE -1 GROUP BY productType ORDER BY SUM(productAmount) DESC ; |
注意事项。
有一些事情在对你的数据执行查询时你应当考虑。
小心SELECT *
- 在像Vertica这类的列仓库中指定哪一列你感兴趣比起使用SELECT *更为有效率。如果你指定了列名,你的查询将会运行的更快。
- 反之,如果你对列计数(COUNTING),你应当总是使用一个COUNT(*),因为这将让Vertica选择最好的列来做计数。
- 你的事件表默认存储过去30天内所有的事件,这可以被延长,请联系 [email protected] 以了解更多信息。
- 事件表包括你的游戏参数列表中每个参数的一列以及一些自动生成的列
- 包含数组或者嵌套对象的事件将在你的事件表中以多行的形式展现。eventLevel(0或1)和mainEventID列被用于将父与子事件联系在一起。其一个案例是在玩家花费真实货币来买虚拟货币的一个交易事件中,这将导致数据表中产生三行,一行是父交易细节,剩下的两行分别是这个交易关联的两类货币。
- 用户表包括你的游戏中每个用户的一行。effective_data列记录了用户指标何时最后更新。因此daysPlayedInLast7Days列的一个记录如果值是3则告诉我们在生效期之前7天中玩过的天数。
- 你不能在你的数据中运行具有潜在破坏性的SQL命令。
- deltaDNA PostgreSQL驱动应当被用于运行临时的分析查询和报告。其不应被用于下载提取的数据,你的保存在Amazon S3(亚马逊S3)的每日数据存档更适合来做这一任务。SQL数据传输被设定为限制10MB以防止SQL驱动被误用。如果其超出传输限制,你的查询将失败,并返回下面的错误信息:“结果设置超出了最大查询数据传输”。
- 任何运行超过2分钟的SQL查询都将自动终止。如果你有一个特别的查询运行时间过长,请让我们知道,我们可能能够对你的SQL提供最优化建议以使其运行的更快。我们监测分析数据库和集群规模以适应数据量和使用量。
- 你的数据存储在一个Vertica分析数据库中,你将在Vertica在线参考手册中找到一个关于其支持的SQL函数的参考手册。
- 你不能在你的SQL查询中使用下述的任何保留字段。
1 |
all_tables, columns, comments, constraint_columns, databases, dual, elastic_cluster, epochs, fault_groups, foreign_keys, grants, license_audits, nodes, odbc_columns, passwords, primary_keys, profile_parameters, profiles, projection_checkpoint_epochs, projection_columns, projection_delete_concerns, projections, resource_pool_defaults, resource_pools, roles, schemata, sequences, storage_locations, system_columns, system_tables, table_constraints, tables, types, user_audits, user_functions, user_procedures, user_transforms, users, view_columns, views, active_events, column_storage, configuration_changes, configuration_parameters, cpu_usage, critical_hosts, critical_nodes, current_session, data_collector, database_backups, database_connections, database_snapshots, delete_vectors, deploy_status, design_status, disk_resource_rejections, disk_storage, error_messages, event_configurations, execution_engine_profiles, host_resources, io_usage, load_streams, lock_usage, locks, login_failures, memory_usage, monitoring_events, network_interfaces, network_usage, node_resources, node_states, partition_reorganize_errors, partition_status, partitions, process_signals, projection_recoveries, projection_refreshes, projection_storage, projection_usage, query_events, query_metrics, query_plan_profiles, query_profiles, query_requests, rebalance_projection_status, rebalance_table_status, recovery_status, resource_acquisitions, resource_pool_status, resource_queues, resource_rejection_details, resource_rejections, resource_usage, session_profiles, sessions, storage_containers, storage_policies, storage_tiers, storage_usage, strata, strata_structures, system, system_resource_usage, system_services, system_sessions, transactions, tuning_recommendations, tuple_mover_operations, udx_fenced_processes, user_libraries, user_library_manifest, user_sessions, wos_container_storage, current_database, current_schema, current_user, dbname, has_table_privilege, session_user |