【问题标题】:Correct Way to Use Google Reporting API Headers for Visualization Data Table Headers将 Google Reporting API 标头用于可视化数据表标头的正确方法
【发布时间】:2019-07-26 05:44:30
【问题描述】:

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

问题:Visualization Api 给了我“无效的整数类型”,而这是 Google Reporting API 返回的类型。我知道 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 = "{'type':'number','label':'$mname'}";

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

【问题讨论】:

    标签: google-visualization google-reporting-api


    【解决方案1】:

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

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

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

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

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

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

    有效

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

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

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

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

    • 时间 -> 类型 Date(),格式多种多样(通常为 HH:MM:SS)

    • 字符串明显字符串

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-18
      • 2019-02-28
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多