【问题标题】:Analyzing multiple Json with Tableau使用 Tableau 分析多个 Json
【发布时间】:2016-12-29 14:02:58
【问题描述】:

我开始使用 Tableau,我有一个项目涉及存储为 JSON 的多个网站日志。我每天都有一个日志,持续大约一个月,每个日志的重量约为 500-600 Mb。

是否可以在 Tableau 中打开(并加入)多个 JSON 文件?如果是,如何?我可以并行加载它们,但不能加入它们。 编辑:我可以加载多个 JSON 文件并定义它们的关系,所以这没关系。我仍然有内存问题:

我担心加入他们之后,我将没有足够的内存来让它工作。加载的文件是否存储在内部数据库的 RAM 中?

最好的方法是什么?我应该先合并所有 JSON,还是将它们加载到数据库中并使用连接到 Tableau 的连接器?如果是这样,什么是 DB 的好选择?

我知道其中一些问题是基于意见的,但我对此一无所知,我确实需要一些指导才能开始。

【问题讨论】:

  • 你想加入他们还是联合他们?我相信 Tableau 的 JSON 驱动程序的 UNION 功能(还)不可用。对于如此庞大的数据量,您可能希望提前对其进行预处理、过滤、聚合和索引 - 使用数据库,例如 Parquet 和 Spark 和/或 Tableau 数据提取
  • 我每天都有相同的数据,所以我需要一个联合。使用数据库时,tableau 如何使用内存?它是在开始时加载所有内容,还是在需要时检索和聚合?
  • Tableau 向数据库发送查询,然后根据查询结果集呈现可视化。返回的数据量取决于查询,查询取决于您在 Tableau 中指定的内容。 Tableau 会缓存结果,您还可以创建一个提取作为持久的、可能过滤和聚合的缓存。见stackoverflow.com/a/31171086/441979
  • 如果我使用到数据库的连接就是这种情况,但是如果我加载本地文本文件(JSON 或 csv)会发生什么? tableau 是将其存储在数据库中,还是将所有内容加载到内存中?
  • 对于文本文件和数据提取,Tableau 今天通过其数据引擎进程将它们加载到内存中——未来会被新的内存数据库取代。虽然概念是相同的,但 Tableau 向数据源发送一个返回结果集的查询。对于您正在谈论的大小的数据,您可能需要使用某种数据库进行测试,如果它的容量超过了内存中舒适的容量

标签: json tableau-api


【解决方案1】:

对于如此大量的数据,您可能希望提前对其进行预处理、过滤、聚合和索引 - 可以使用数据库,例如 Parquet 和 Spark 和/或 Tableau 数据提取。

如果您使用数据提取,您可能希望为特定目的过滤和聚合它们,请注意,如果您在进行数据提取时聚合数据,则需要注意您在可视化中执行的任何进一步聚合定义明确。 SUM()、MIN() 和 MAX() 等加法函数是安全的。部分和的总和仍然是正确的总和。但是平均数的平均值和 count distincts 的平均数通常不是。

Tableau 向数据库发送查询,然后根据查询结果集呈现可视化。返回的数据量取决于查询,查询取决于您在 Tableau 中指定的内容。 Tableau 会缓存结果,您还可以创建一个提取作为持久的、可能过滤和聚合的缓存。见this related stack overflow answer

对于文本文件和数据提取,Tableau 现在通过其数据引擎进程将它们加载到内存中,未来会被称为 Hyper 的新内存数据库取代。虽然概念是相同的,但 Tableau 向数据源发送一个返回结果集的查询。对于您所说的大小的数据,您可能需要使用某种数据库进行测试,如果它的容量超过了内存中的容量。

JSON 驱动程序对于探索 JSON 数据非常方便,我肯定会从那里开始。如果满足您的需要,您可以避免整个 ETL 步骤。但是在数据量很大的情况下,您可能需要转移到某种外部数据源来处理生产负载。仅供参考,Tableau 的 JSON 驱动程序的 UNION 功能自 10.1 版起(尚未)可用。

【讨论】:

    【解决方案2】:

    我认为没有人给出的答案是不,您不能在 Tableau 中加入两个 JSON 文件。如果我错了,请纠正我。

    【讨论】:

      【解决方案3】:

      我相信我们可以在Tableau 中加入2 个JSON 表。

      首先从JSON数据中提取列名如下--

      select
         get_json_object(JSON_column, '$.Attribute1') as Attribute1,
         get_json_object(line, '$.Attribute2') as Attribute2
         from table_name;
      

      为所需的画面执行上述操作并加入它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 2018-08-13
        • 2019-05-24
        • 1970-01-01
        相关资源
        最近更新 更多