【问题标题】:How can I reduce complexity? Data preparation, SQL + Tableau如何降低复杂性?数据准备,SQL + Tableau
【发布时间】:2020-11-16 16:41:16
【问题描述】:

我需要准备一些数据来连接到 tableau,我正在苦苦挣扎,因为数据量太大,tableau 无法处理,所以我正在寻找用 SQL 高效编码的想法。

设置:

  • 我有 200 万用户
  • 有 30 个不同的类别,每个用户都可以分为很多。例如:
    • 用户 1 - A、B 和 C 类
    • 用户 2 - F 类
    • 用户 3 - 类别 A、B

我想要什么:

  • 选择三个类别并分配优先级 1、优先级 2 和优先级 3
  • 这些选择不是静态的,所以今天我可能会选择 A、B、C,但明天这些类别可以是 D、G、A

如果我有:

  • 优先级 1:A
  • 优先级 2:B
  • 优先级 3:C

  • 我想要属于 A 类的用户数
  • 我想要属于 B 类且不属于 A 类的用户数
  • 我想要属于 C 类且不属于 A 类或 B 类的用户数

我最初的想法是创建一个表,每个用户一行,每个类别一个是/否列,然后聚合,但最终表的大小仍然太大,无法处理。

有什么想法吗?

更新:我的想法是准备一个包含汇总数字和最多几千行的表格,以便可以使用 tableau 处理它

【问题讨论】:

  • 你能给我们更多关于尺寸的信息吗?您甚至可以加载 2M 用户吗?因为您可能需要先更新您的 tablaeu 配置和环境
  • 我的想法是准备一个包含汇总数字和最多几千行的表格,以便可以使用 tableau 进行处理

标签: sql tableau-api


【解决方案1】:

您可以为 30 个类别中的每一个分配一个唯一的占位符 1 到 30。此后,每个用户将根据他所属于的类别分配一个 30 位的二进制数。然后可以将该二进制数转换为最大的十进制数其中可以是 2^31-1 即 10 位数字,可以不使用 exp 格式存储。

当您必须查看用户所属的类别时,可以通过应用反向转换来完成,即十进制到二进制,然后再转换为左侧填充零的字符串。从此字符串中,您可以在所需位置搜索 1 的位置。

我想你可以试试这个方法。

【讨论】:

  • 谢谢,但是这样排列的数量不会减少,对吧?所以最终的行数不会改变。我的目标是获得一个包含汇总数字和几千行的表格,以便可以使用 tableau 进行处理
猜你喜欢
  • 1970-01-01
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
  • 2013-11-26
相关资源
最近更新 更多