正确使用Google Reporting API标头显示可视化数据表标头的正确方法

时间:2019-03-04 20:46:25

标签: google-visualization google-reporting-api

技术:结合了PHP和Javascript的Google Reporting API V4和Google Visualization API。出于某些特定原因,我们无法安装和使用Google客户端库。

问题:当Google Reporting API返回的类型时,可视化Api给我“无效类型Integer”。我知道Visualization API不支持整数类型,

https://developers.google.com/chart/interactive/docs/reference#DataTable_addColumn

问题是,动态使用Reporting API标头构造图表表标头的正确方法是什么?我们是否需要每次都映射数据类型?

简而言之:我查询Analytics数据并获得以下标头结构:

            [columnHeader] => Array
                (
                    [dimensions] => Array
                        (
                            [0] => ga:date
                        )

                    [metricHeader] => Array
                        (
                            [metricHeaderEntries] => Array
                                (
                                    [0] => Array
                                        (
                                            [name] => ga:users
                                            [type] => INTEGER
                                        )

                                    [1] => Array
                                        (
                                            [name] => ga:sessions
                                            [type] => INTEGER
                                        )

                                )

                        )

                )

当我尝试创建列时,

...
$mtype = $headers['metricHeader']['metricHeaderEntries'][0]['type'];
...
$column_object = "{'type':'$mtype','label':'$mname'}";
// produces {'type':'INTEGER','label':'ga:users'}
...
data.addColumn($column_object);

(Firefox)控制台日志“对于“用户”列,无效类型INTEGER。”

我可以在此处通过硬编码类型的“数字”来“欺骗”

$ column_object =“ {'类型':'数字','标签':'$ mname'}”;

哪项工作正常,但我不必(或遗漏某些东西)并在使指标和维度动态化方面提出了一些挑战。 “用户”确实是一个数字/整数。不禁觉得这是我容易忽略的东西,可以轻松地映射数据中的列。

1 个答案:

答案 0 :(得分:0)

在经过大量研究和实验后,Sans的回应认为我可能会发布我的解决方案的概述(并提出批评/反馈。)

请记住,这是多种图表类型和多种维度/指标选择之间的图表“选择器”,硬编码的一次性功能不起作用。它必须是动态的,并且必须执行所有转换才能使所有图表类型正常工作。

Analytics返回类型为STRING,INTEGER,PERCENT,TIME,CURRENCY,FLOAT的标头,的确需要将其映射为与可视化兼容的字符串,数字,布尔值,日期,日期时间和timeofday类型。服务器端处理会在其他应用可能会消耗原始JSON编码的Analytics数据的情况下返回该数据,并且对数据的任何mod均使用Javascript执行,而与jQuery无关。

我遇到的问题是我们“需要知道”给定列的原始数据类型,以便在图表输出上进行正确的格式化。标题尺寸成员不具有“类型”,这使情况更加复杂。例如,Google Analytics(分析)以字符串“ 20190305”返回维度“ date”,该维度需要转换为适当的Javascript Date对象以用于图表输出,但在本例中,则需要显示为字符串“ 03/05/2019”。 / p>

收到Analytics(分析)数据后,我运行一个函数,将来自Analytics(分析)的原始数据类型添加到所有标题列作为自定义字段。图表未触及这些内容,因此不会影响功能。然后,我映射GA类型转换为可视化类型,以便它们正确地输出图表,并引用我的“自定义类型成员”,其中包含要在图表中设置格式的原始数据类型。

使用原始类型引用原始类型,以使用hAxis选项的hAxis选项正确格式化数据,并使用Visualization [Date | Number] Formatter设置列数据(工具提示值等)

有效

  • percent->类型号,但格式为百分比,带有%。

  • float->类型编号,格式为小数。

  • currency->类型编号,格式为$ currency。

  • 日期->类型Date(),格式为MM / DD / YYY

  • time->类型Date(),设置各种格式(出于我们的目的,通常是HH:MM:SS)

  • 字符串显然是字符串

希望这对涉足G.A./可视化集成的任何人都是有用的。