网站建设_qq服务器_速度快

时间:2022-01-02 20:08       来源: 微辰云

网站建设_qq服务器_速度快

如果您的Business Objects环境中有大量的报表,并且希望合并它们,那么首先想到的问题是哪些报表彼此非常相似?虽然答案往往是主观的,但这篇文章将为你提供一种方法,旨在以尽可能客观的方式衡量相似性。虽然在进行任何类型的合并之前都需要对个别报表进行进一步的审查,但这种方法至少应该帮助您在系统中确定一个良好的起点。

此分析假设您可以获得每个报表及其维度/度量的列表,您应该能够使用适当的SDK提取这些列表为了你的环境。在本例中,移动物联网,我选择只看这两个表达式,因为其他表达式(比如过滤器)中的细微变化可能不足以证明有一个单独的报告。但是,如果您愿意的话,您可以扩展此方法来考虑过滤器和其他表达式。

本文假设您对Python有一定的了解,这里使用的代码在Python3.X中是受支持的。如果您选择运行Python2.X,您可能需要更改一些示例以使其正常工作。此外,您还需要安装以下所有软件包:

熊猫努比SciPy

如果您是新来的或者对Python和管理软件包相对缺乏经验,那么您可能只需要安装Anaconda,它将包含上述所有软件包。

如简介中所述,您还需要拉一个报表列表以及它们正在使用的表达式(即维度/度量值)。如何做到这一点将取决于您的环境,但通常您可以:

在4.X环境中使用RESTfulWebServiceSDK,或者如果在3.X环境中,

没有什么能阻止您比较不同类型的报告,那么利用Java报告引擎也是毫无价值的。如果您的企业愿意将Deski报表与具有类似表达式的Webi报表合并,那么下面的分析中没有任何内容会阻止您这样做,前提是您可以获得两种类型报表中使用的表达式列表。

如引言中所述,您要做的第一件事是按报表列出存储库中的每个维度和度量。对于这个博客条目,请随意使用以下数据并将其保存为CSV文件(假定为"report_元数据.csv"):

有数据在手,继续并开始一个交互式的Python会话,通过导入所有相关的包开始:

导入这些包后,从将数据读入DataFrame开始。

调用测向头()检查前5行数据。如果到目前为止一切都很好,那么您的数据应该如下所示:

接下来,我们将使用get\u dummies函数为表达式列中的每个分类生成列,并使用二进制指示符显示该分类是否被特定行引用。

继续运行假人头部()查看数据。您应该注意到名为"Dimension\u A"、"Dimension\u B"等的列,每列的值应为0或1,指示数据框中的特定行是否使用该表达式。

继续并将这些记录沿行合并到数据框:

接下来,按Report Name列分组并聚合所有度量使用"和"功能

运行玻璃钢封头()将显示您现在为每个报表创建了一个唯一的条目,所有虚拟分类列将为0或1,表示该报表是否使用给定的维度或度量:

现在我们可以继续计算每个报表之间的"Jaccard距离"。如果愿意,可以选择其他二进制距离度量值,但这种特定度量值在处理二进制数据时很流行,云服务器哪个好,因为它在计算两个项的距离时不考虑对这两个项都为False的变量。因此,如果你只看上面的报告1和报告2,只考虑尺寸A到E,这两个之间的距离将被计算为.25。这是因为这两个维度的维数都是0("假"),在考虑的其余维度中,大数据平台,它们只在4个维度中的一个维度上变化,因此为.25.

我们将使用pdist函数计算这些距离,然后使用squareform将这些距离转换为nxn矩阵,大数据存储技术,其中n是被分析的报告数量,大数据分析软件有哪些,矩阵中每个点的值是这些报告之间的距离。考虑到任何报表与自身的距离始终为0,我们还将用np.nan公司在这一点上,我们有一个包含每个报告的距离的矩阵,但我们正在寻找相似之处。值得庆幸的是,我们可以通过从1中减去距离来获得相似性:

继续并将此信息转换回数据帧,使用沿x轴和y轴的报表名称以便于参考:

此时,您可以检查您的数据并查看每个报表彼此计算的相似性。这里的数字是从0到1的比例,0表示它们没有共同点,1表示它们相同:

根据提供的样本数据,您可以看到报告1和报告2最为相似,尺寸和度量值重叠了87.5%。另一方面,报告4与报告1和报告2没有任何共同之处。