BigQuery如何协助网际网路行销商:SQL技巧和Google Data Studio中的报表可视化

Axmor移动开发主管Igor Galichin告诉Netology博客,了解SQL的营销人员(或在其他工程师的帮助下)如何解决在Android应用程序中提供用户行为的问题。



对于那些使用Android应用程序,在其中启动广告系列,分析结果以及对于不再可以使用Google Analytics(分析)的人来说,这篇文章很有用。本文包含有关如何将BigQuery连接到Firebase以及如何在Data Studio中精美呈现的说明。



自2010年以来, Axmor一直在开发移动应用程序。 2016年,俄罗斯最大的航空公司之一向我们订购了其机票销售Android客户应用程序的修订和后续开发。除其他事项外,我们的任务包括开发工具,以收集定期在应用程序内部进行的促销活动的分析数据,并以可视形式提供数据。 



直到2020年,我们出于这些目的以及其他应用程序都使用了Google Analytics(分析)。但是2月4日,该公司关闭了此功能,并建议改用Firebase Analytics。事实证明,该SDK(来自英语软件开发工具包)并未提供前一个工具包提供的所有可能性,特别是,它不允许构建非标准报告。   



Firebase Analytics的局限性是什么以及如何处理



为了描述我们解决此问题的经验,让我们转到出售机票的应用程序。当Google Analytics(分析)关闭并替换Firebase Analytics(Firebase Analytics)时,我们面临的任务是保持对客户的用户行为分析的深度相同,从而能够快速设置新的非标准报告,同时提供美观的可视化视图。 



在Google Analytics(分析)中,我们可以看到用户前往哪个屏幕,他们正在寻找票证的目的地,他们来自哪个城市,在应用程序中被授权的数量以及匿名的数量。另外,我们总是看到每个方向都购买了多少票,促销后某些方向的销售额如何增长,等等。使用Firebase Analytics,统计信息的第二部分(我们可以详细分析转换)仅以原始形式提供,这意味着我们需要一种方法来丰富转换。 



我们可以在Firebase Analytics中执行以下操作: 



  • 设置购买活动;
  • 在参数中,我们指明产品的名称-方向或其标识符和价格;
  • 然后,在网站上的报告中,我们可以看到针对哪个航班售出了多少张机票,平均购买价格,总购买量。 


插图中的信息与实际情况不符,为了商业秘密,所有数字均已更改 这不会影响示例的意义和清晰度,我们基本上只是说明Firebase的功能。






在这里,我们查看多少用户购买了多少票的方向。例如,客户想知道他们为叶卡捷琳堡-莫斯科航线购买了多少门票。Firebase Analytics不提供此类答案。 







报告的信息内容受标准参数集的限制-我们只能看到一般情况。 



数据分析的另一个示例,在我们的案例中无法在Firebase Analytics中完全实现:该应用程序显示有关航班和路线的内部广告。客户想知道随后观看广告的用户数量。当然,还有按商品,股票等分类的收入明细。同样,标准工具没有给我们这个机会。 



如何使用BigQuery分析Android应用内的销售



我们开始寻找一种方法来获取不同部分中的快速可视化报告。如果需要更深入的数据分析,Google建议连接BigQuery Web服务。但是据我们了解,它就像麻雀上的大炮一样,因为该工具据称可用于大数据。但是,在对该工具进行了详细研究后,发现它甚至适用于需要分析相对少量数据但同时又非标准的任务。可以肯定的是,在过去的几年中,大数据的概念已经发生了变化-现在,在Excel中处理所有这些都不方便。



BigQuery连接



将BigQuery连接到Firebase Analytics很简单。 Google建议在几乎每个Firebase Analytics页面上执行此操作。有详细的说明



唯一的警告是,要将BigQuery连接到事件数据,您需要切换到Firebase中的Blaze付款计划。这意味着您将在使用Firebase服务时向其收费。根据我们的经验,BigQuery服务在小型项目上谨慎使用是廉价的。 



在通过BigQuery进行的免费计划中,您只能访问Crashlytics,预测,云消息传递和性能监控数据。 



您需要了解,BigQuery不是Firebase Analytics的一部分。它是一项单独的Google服务,旨在处理大量数据。在这种情况下,Firebase Analytics for BigQuery是可能的数据源之一。连接BigQuery将使您能够找到相关性和更多见解。 



连接后会发生什么 



将BigQuery连接到Firebase Analytics之后,我们可以查看以原始格式收集的数据。我们只能访问BigQuery连接到我们的项目后收集的数据。如果您今天连接BigQuery,则可以处理从今天开始的数据,而昨天的数据则不会。



因此,我们连接了所有内容,然后转到服务的主页。我们在资源中看到了我们的项目。数据中只有一个表- events。 Firebase Analytics的所有数据都在此处收集。 







实际上,这不是一张桌子。每天的数据被放置在一个表中使用一个名称events_<>,例如events_20200308。 



让我们看一下数据本身。Firebase Analytics的所有事件均记录在表中events_*表中的每一行都是一个单独的事件。许多列代表事件参数:日期,设备信息,用户信息等。尽管数据显示在表中,但它并不完全是普通的。它是树结构的表格表示。以下是表格行的JSON结构示例。为简洁起见,并非所有数据都包含在结构中,但可以从中了解整体情况:







查看数据结构,您可以看到它包含:



  • . , - . : event_date, event_timestamp, event_name.
  • -. , , event_params user_properties. — . . — --. ,
  • -. — device. . — device.category, device.operating_system device.operating_system_version.


尽管数据结构乍一看似乎很复杂,但仔细检查会变得更加容易。最终,我们掌握了Firebase Analytics中所有事件的信息。我们只需要从中提取所需的数据即可。 

让我们尝试提出一些请求。例如,让我们显示事件的所有日期:

    

SELECT event_date

FROM `project_name.data_set.events_20200202`


我们将看到结果:







project_name.data_set.events_20200202在这种情况下,是特定表的名称,该表由项目名称,数据集的名称以及包含Firebase Analytics中事件的每日表组成。也就是说,在此查询中,我们从具有2月2日事件的表中获取了事件的日期:)不是很有用,但是它将作为查询的示例。实际上,从所有可用数据中采样更为有用。在这种情况下,可以指定而不是指定table project_name.data_set.events_*让我们为请求添加有用性,并找出名称为的事件的日期和城市"booking_purchase"

    

SELECT geo.city, event_date

FROM `project_name.data_set.events_*`

WHERE event_name = "booking_purchase" and geo.city != ""


我们得到:







感兴趣的只是表中的特殊字段-数组。例如event_params建议使用UNNEST运算符来处理此类字段该运算符采用数组字段并将其转换为表。 

让我们改进查询并显示参数值"direction"

    

SELECT 
geo.city, 
event_date,
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = "direction") AS direction,
    	
FROM
`project_name.data_set.events_*`
    	
WHERE
event_name = "booking_purchase" and geo.city != ""


结果:







所以我们添加了什么。我们已经将UNNEST运算符应用于该领域event_params结果,我们得到了一个表格,其中的行是事件的参数,而列是这些参数的属性。参数具有两个属性:键和值。值-与4个字段的对象:string_valueint_valuefloat_valuedouble_value这些字段对于不同的数据类型是必需的,因为参数值可以是字符串,int,float,double。然后,通过子查询,我们取出了具有key等于字段的参数的字符串值direction这就是处理表中数组字段的方式。



让我们了解一下Firebase Analytics无法提供的功能-应用中出售的每种产品的收入明细:



  1. 在Firebase Analytics中,我们传递了购买事件"booking_purchase"。 
  2. 在其中,我们传递了两个参数:"direction""price"方向-产品标识符,价格-其价格。


我想知道售出了多少产品,金额是多少。查找请求的请求看起来像这样:



SELECT
  	
direction,
  	
count(direction) as count,
  	
sum(price) as total_sum
FROM
(
    	
SELECT
      	
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = "direction") AS direction,
      	
(SELECT value.double_value FROM UNNEST(event_params) WHERE key = "price") AS price
    	
FROM
        	
`project_name.data_set.events_*`
    	
WHERE
      	
event_name = "booking_purchase"
      	
)
group by direction
order by total_sum desc


结果:







我们获得了所需的数据。 



如何在Data Studio中呈现报表



假设某个客户想要随时进入并查看销售统计信息。您可以保存查询,并告诉客户他们可以转到BigQuery控制台,运行查询并查看结果。但是Google提供了更好的解决方案。 



可以在Data Studio服务中可视化查询结果。该服务使您能够以表格,图形,图表,美观和功能的形式呈现数据,这些数据不亚于Firebase Analytics的数据。让我们看看如何做到这一点。



要创建报告,您需要转到服务的主页并创建一个新文档。选择BigQuery作为数据源:







可以从表,保存的视图或直接通过查询构建报告。后一个选项允许您使用日期参数。使用这些参数,可以按日期限制数据选择,从而优化处理的数据量。结果类似于Google Analytics(分析)和Firebase的界面-具有相同的形式和功能。该公司似乎采用了可视化方面的最佳实践,并将其公开发布: 







我们添加了一个条件,以便仅针对在参数DS_START_DATE之间发生的事件进行选择DS_END_DATE这些参数将直接从报表中传递给请求。我们创建一个报告,然后立即看到以下内容:







接下来,您可以添加日期范围选择。为此,将适当的

组件添加到表单中







在此组件中选择的日期将直接作为参数DS_START_DATE进入查询DS_END_DATE结果,在查看模式下,报告将如下所示:







同样,您可以在表单上添加和自定义其他组件-图形,图表,图像,文本等。之后,可以通过链接共享或提供对所需帐户的访问权限来共享报告。  



BiqQuery是一个不用担心的有效工具



移动应用程序是强大的销售和营销工具,尤其是当它们采用数据驱动的方法时。您不必担心BiqQuery,并认为此工具很复杂,并且通常来说,大数据对您来说太酷了。BigQuery将您的分析部门提升到Spotify,Delivery Food和其他数据巨头的水平,并以成本的一小部分,提供每位进阶分析师在营销或营销中必须掌握的最简单的SQL,以提供其享受的相同性能。在产品中。 



BigQuery的优势:



  • 它配置迅速,可让您在几秒钟内处理数据。没有服务器,没有昂贵的基础架构,也没有管理员。 
  • , , , : , , -, CRM.
  • , — .  
  • SQL — . 
  • Data Studio, .







All Articles