在Power BI中构建报表时如何解决错误,以及如何构建大数据上传系统



漂亮且易于理解的Power BI仪表板的背后通常是数周的准备和数据挖掘。尤其是在一个大型组织中构建有用的BI报告时,该组织每月的访问量为数千万。

在本文中,我想描述在许多公司(俄罗斯电子商务,保险公司等的大代表)基于Web分析系统的数据构建BI报告时遇到的许多负面方面。本文的目的不是要对某些工具或决策的广告进行反广告,反之亦然。本手册旨在帮助避免对其他用户造成负面影响并指出解决方案的选项。

免责声明


我正在谈论大量数据,并展示了从Google Analytics 360上传和采样的示例。在数据量较小的项目中,可能不存在此类困难。我在实践中遇到了所有已确定的问题,在本文中,我仅描述了我在解决问题上的经验-您的可以完全不同。

连接器到Yandex.Metrica


与Google Analytics(分析)相比,Yandex.Metrica具有更温和的采样条件和直观的界面。因此,许多营销人员更喜欢Yandex.Metrica并基于从那里上传数据的BI报告。为此,请使用Maxim Uvarov 连接器。此方法不安全,并且不允许处理复杂的请求。

大型公司需要保证机密信息不会落入批评者的手中,财务指标将仅用于利益相关者,并且仅在公司内部使用。

首先要注意的是,要使用连接器,需要在Power BI中启用“忽略隐私级别”设置,否则将无法使用。



因此,机密数据可能落入任何未授权用户的手中。 Power BI帮助的摘录确认了这一点。



数据连接是匿名的。但是,没有授权或检查是否允许确实允许这些用户使用此数据。



为了使这些连接器正常工作,您需要获取oauth访问令牌。连接器的描述提供了有关如何使应用程序访问您的帐户的链接。



实际上,第三方应用程序将可以访问您的帐户。没有人可以保证您的数据安全。



第二个缺点是Yandex.Metrica API无法处理大型项目上的大量数据,因此,连接器还拒绝对原始Yandex.Metrica数据进行复杂的查询-它不会卸载它们。

例如,您需要上传一年的数据,而无需任何复杂的过滤器。连接器引发错误:“请求太复杂。请减少日期间隔或抽样。”



当然,这是Yandex.Metrica API本身错误的翻译。但是,在这种情况下,我们别无选择下载按月或按天细分的数据-例如,要循环每个月的数据并将它们组合成克服API错误的单个数据集。
如果您显着缩短了周期,则可以使用API​​抽取数据,但这只是我们所需要的一小部分。



要生成大型报告,短期内卸载是不切实际且不便的。实际上,您经常需要通过每天访问次数众多的复杂的开放式网站渠道进行卸载。尤其是在使用复杂的访问细分时,实际上不可能上传必要的数据。

即使您能够加载数据,也不可能将其上传到数据模型以构建报告本身,因为各种加载错误有时会弹出。由于某些原因,即使使用正常加载的表,也会发生错误。


为了使公司内的所有利益相关者都能使用基于Yandex.Metrica API连接器构建的报告,您需要在PowerBI Service中发布报告。在这种情况下,隐私级别也必须被忽略。


配置可视化并将报表发布到Microsoft云后,连接器将显示合并的查询错误,并且不会通过Power BI Service进行更新-您将无法配置报表的计划更新。当构成最终上传表的查询之一包含同时使用外部查询和内部查询的逻辑时,就会发生错误。

在错误中,仅显示“被调用函数”



该表是由于PQYM函数而获得的,该函数可与外部数据源Yandex.Metrica API一起使用。 Power BI中的报告更新机制不起作用,并要求重做查询组合。这是由于一个请求的内部链接连接到外部请求,以及由于函数本身的结构。



我们决定在构建报告时不使用这种连接器,并切换为通过Python脚本从Yandex.Metrica API卸载数据,本文稍后将对此进行更多介绍。

Google Analytics(分析)连接器


为了建立基于Google Analytics(分析)数据的报告(我们正在谈论从分析系统直接下载),还有一个Maxim Uvarov 连接器

在这里,您还必须设置“忽略隐私级别”。可以通过匿名连接访问包含在线销售数据的分析系统的API。



根据说明,您将再次必须仅对Google帐户打开对第三方应用程序的访问权限,该帐户可能会威胁到您数据的隐私。



您可以在连接器本身中重写一些数据,并开始将其用于自己的应用程序。为此,请在cloud.google.com上注册“ OAuth 2.0客户端ID”,获取访问令牌并在其工作机制中输入必要的访问密钥。但是,即使采取这些措施也无助于对抗抽样和更新报告。

每当您触摸Google Analytics(分析)API的汇总数据时,我们总是会遇到抽样问题。

连接器可以选择一天卸货,但即使这样也不总是可以节省费用。内置在连接器中的采样指示器显示即使在一天之内它也在那里。



例如,如果不对此类数据量进行采样,就不能上传按Shopping Stage细分的会话数据。在生成报告时,这将导致数据和度量的重大错误,尤其是在需要准确计算从一个步骤到另一个步骤的转换的转换,或将数据上传到具有复杂细分结构的渠道中时。

即使数据丢失对您而言并不重要,您仍然无法通过Power BI Service配置报告的计划更新。



相同的工作机制错误只会干扰PQGA功能。


我们也拒绝使用此连接器。

Google Analytics(分析)本机连接器


有时Google和Microsoft会互相让步:开箱即用的Power BI具有标准的Google Analytics(分析)连接器。不幸的是,Yandex.Metrica没有这种选择。


与Maxim Uvarov的连接器相比,此处可更方便地实现与Google Analytics API配合使用的机制,但是在下载大量指标时,数据采样率很高。屏幕截图中的重复数字是采样数据。


如果卸载仅按日期和任何一个指标细分的迷你表,则可以避免抽样。例如,日期,会话数和设备类型。然后从这些表中收集必要的报告。

如果您没有数百万的流量,这可能会有所帮助。但是,报告将不会提供足够的信息,并且会限制可伸缩性:由于数据模型中有许多微型表,因此很难在它们之间建立关系。这对创建过滤器和切片施加了限制。

您可以重写标准连接器并强制其每天上传数据,而数据将接近GA界面中的实数,但是您将无法避免采样。


根据我的观察,在Shopping Stage会话的细分中,没有一个连接器能够正常上载数据而无需对大量数据进行采样。

在标准连接器中,您无法自定义下载日期。只需从文件夹中排列的Google Analytics(分析)API中选择参数和指标即可。


该连接器适用于流量很少的中小型Internet项目。在这里,从Yandex.Metrica获取数据也会出现类似情况。在不损失准确性的前提下,所有必需的信息只能使用脚本或特殊的数据流服务通过API直接下载-有关更多信息,请参见本文稍后。

Google的Sticks in Wheels


最近,我们注意到一个奇怪的锁-尝试为Google Analytics(分析)的“本机”连接器配置更新时,通过Power BI Service界面中的Google帐户出现了授权错误。



我们试图从Google找出在这种情况下该怎么做以及如何“粉饰”该帐户的声誉,但是我们的尝试失败了。我们尝试注册新帐户并通过其他设备登录-Google阻止了任何授权尝试。

封锁大约一个月后,我们仍然设法通过同一帐户登录,但是这样的事件会严重干扰及时发布必要的BI报告,并使客户处于尴尬境地。锁定后,我们立即开始寻找可能的解决方法。为避免意外的锁定,我们决定创建自己的受控环境,其中包含用于BI报告的必要数据。

解决方案选项


为中型和大型组织获取必要的BI报告,甚至可以不进行抽样。但是您需要尝试一下,然后选择几种方法之一。

您可以使用现成的服务来流式传输数据。它们的主要目的是将数据从分析系统,各种广告系统,CRM和其他服务上传到任何存储。方便,快捷,实用,但并非免费。对于大量数据或具有多个来源的数据,数量是有形的。

最著名的服务:


这些系统中的每一个都允许您配置从Web分析系统(Yandex.Metrics和Google Analytics)到数据库(例如,BigQuery,Azure SQL数据库,Microsoft SQL Server或ClickHouse)的非采样数据的日常流传输,以通过Power BI连接并生成报告。

如果列出的工具对公司来说太贵了,您可以尝试实施数据上传系统,并使用Power BI + Python +任何云服务器(或Yandex.Cloud)+ PostgreSQL。这是我们构建BI报表时使用的方法。

系统交互方案:


该工作方案提供了必要的安全性,数据自治性和聚合性。一旦建立了这样的方案,您将不需要花费时间来收集信息-一切都在存储库中,您只需连接并开始在Power BI上进行报告。

Python脚本根据API从必要的来源“拉”所有数据,将其写入数据库或进行卸载(例如,以csv格式)。从API上传并加载到数据库的脚本值得单独写一篇文章,有一天我会写它。

当然,Internet上有很多模板和现成的解决方案,但是要进一步扩展,必须了解在其下创建卸载脚本的系统的各个需求。

数据被写入预先创建和配置的数据库中(在本例中为PostgreSQL)。脚本每天抽取数据,并根据计划将其写入表中。它们位于我们控制下或客户的IT安全服务控制下的云服务器上。

有大量提供云存储服务的公司。根据个人喜好,选择了Yandex.Cloud

Yandex.Cloud的优势:

  • 预先安装的PostgreSQL便于配置和租用服务器。
  • 大量的俄语文档,其中有明确说明,使您可以快速学习如何使用该服务。
  • 方便的服务器管理。
  • 快速的专家支持。
  • 各种设备设置和费率的灵活性:没有人强加任何现成的配置包,您可以自己选择设备的配置,还可以立即订购任何数据库的预设。



生成的上载将写入PostgreSQL数据库。选择该数据库是因为它是一个对象关系型DBMS(“多维数据集”中使用多维数组和JSON支持-必须具有复杂的数据结构)。它是灵活,可靠,免费的,并且拥有庞大的支持社区。

Power BI在PostgreSQL中具有内置的直接连接器。在第一个连接中,您需要安装其他NpgsqlPower BI会通知您,并提供一个链接。


要在使用云存储时配置报告更新,必须配置Power BI Gateway。需要配置更新的BI报告并确保从数据库传输机密数据时的机密数据的安全性,该数据库应位于组织的内部IT电路中或安全的云服务器上。

网关提供了位于组织内部网络上的数据存储与Microsoft云服务之间的快速安全数据传输。 Power BI和网关之间的数据传输是安全的,并且网关管理员提供的所有凭据都经过加密以保护云中的信息,并且仅在网关计算机上解密。


下载并启动Power BI Gateway后,将出现一个对话框。


要注册和操作网关,需要Power BI Service云服务的凭据。


完成所有设置后,将出现有关工作网关的窗口。接下来,您需要进行其他设置。


自定义PostgreSQL的一种更简单的选择是Google BigQuery。Power BI在Google BigQuery中具有内置的连接器。在这种情况下,必须遵循“七次计算成本,一次满足要求”的原则。


只需同意使用该服务即可绑银行卡,即可免费使用BigQuery一年。在您不知情的情况下,截止日期后的款项将不会被扣除。进一步收费-根据系统本身的收费,但带有一些令人愉悦的“加号”。

如果从您的系统下载的数据每月达不到10 GB(!),则无需下载。


如果每月数据处理量不超过1 TB,则也不收取任何费用。如果更多,则每次治疗1 TB 5美元。


如果您每月需要存储10 GB以上的存储空间,则随后每GB的成本为0.010美元。


这些费率在BigQuery页面更详细的描述

摘要


如果您需要来自各种分析系统的数据,并且同时,安全性,安全性,连续聚合,可用性和缺乏采样对您至关重要,那么您有两种方法。

首先是流服务。它们易于使用,具有持续的技术支持以及与数据仓库的现成集成。

缺点:

  • 大量数据的有形成本。
  • 提供的集成类型有限。
  • 流服务提供商方面不受控制的流程可用于处理您的信息。

第二个是它自己的数据上传和聚合流。可扩展,受控制且具有数据安全性。实施起来似乎很复杂并且很耗时。如果公司需要有效的BI报告组织,进一步的可扩展性和数据安全性,那么此选项是最可接受的。

所有只考虑全面的BI报告的人都需要在企业文化中加入“座右铭,收集,构建并保护这些数据,防止青年遭受攻击”的座右铭。没有什么比拥有定期备份并且具有针对不同类别的涉众使用该数据库的不同权限的成熟的容错数据库更好的了。

必须从分析系统,移动应用程序和其他客户端服务中累积,构建和聚合数据。将来,所有这些都将有助于在任何部分中分析您的受众和产品。信息和数据现在统治着整个世界,有时花费的成本超过金钱。

如何实现本文中描述的使用Python脚本和实现细节将分析数据传输到PostgreSQL数据库的方法,我将在以下文章中进行讨论。

All Articles