技术:结合了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'}”;
哪项工作正常,但我不必(或遗漏某些东西)并在使指标和维度动态化方面提出了一些挑战。 “用户”确实是一个数字/整数。不禁觉得这是我容易忽略的东西,可以轻松地映射数据中的列。
答案 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./可视化集成的任何人都是有用的。