0

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

问题:当 Google Reporting API 返回的类型时,Visualization Api 给了我“invalid type Integer”。我知道可视化 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 = "{'type': 'number' ,'label':'$mname'}";

哪个工作正常,但我不应该(或遗漏一些东西)并且在使指标和维度动态化方面提出了一些挑战。“用户”确实是一个数字/整数。不禁感到这是我忽略的东西,很容易从数据中映射列。

4

1 回答 1

0

经过大量研究和实验后,Sans 的回复认为我可能会发布我的解决方案的大纲(并提供它以供批评/反馈。)

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

Analytics 返回 STRING、INTEGER、PERCENT、TIME、CURRENCY、FLOAT 类型的标头,这些标头确实需要映射到与可视化兼容的字符串、数字、布尔值、日期、日期时间和 timeofday 类型。如果其他应用程序可能使用它,服务器端处理会返回原始 JSON 编码的 Analytics 数据,并且对数据的任何修改都是在 jQuery 中使用 Javascript 执行的。

我遇到的问题是我们“需要知道”给定列的原始数据类型,以便在图表输出上正确格式化。由于没有“类型”的标题维度成员,这进一步复杂化。例如,Analytics 将“日期”维度作为字符串“20190305”返回,该维度需要转换为适当的 Javascript 日期对象以用于图表输出,但在我们的示例中需要显示为字符串“03/05/2019”。

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

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

有效

  • 百分比 -> 输入数字,但使用 % 格式化为百分比。

  • float -> 输入数字,格式为十进制。

  • 货币 -> 类型数字,格式为 $currency。

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

  • time -> type Date(),格式化各种(通常是 HH:MM:SS 用于我们的目的)

  • 字符串显然是字符串

希望这对任何深入研究 GA/可视化集成的人有所帮助。

于 2019-03-18T17:04:04.013 回答