Amazon redshift 快速将IP地址映射到城市

Amazon redshift 快速将IP地址映射到城市,amazon-redshift,ip-address,derived-table,Amazon Redshift,Ip Address,Derived Table,我有一个事件表,其中包含一列IP地址。我还有一个映射表,它采用0填充的IP地址范围,并有一个相应的城市和国家 我可以编写将IP地址转换为0填充IP地址的查询,然后根据映射表进行连接 但就性能而言,我什么都做不到。events表有40m+行,因此在拔出插头之前,尝试基于字段操作的连接需要30分钟。我尝试映射一个映射表(IP到0填充的IP),但它并没有改善情况。甚至用city构建一个精简的唯一IP地址表也要花很长时间 这里是否有一种方法或策略可以让我更有效地合并这些数据集?您不必每次都在运行中这样做

我有一个事件表,其中包含一列IP地址。我还有一个映射表,它采用0填充的IP地址范围,并有一个相应的城市和国家

我可以编写将IP地址转换为0填充IP地址的查询,然后根据映射表进行连接

但就性能而言,我什么都做不到。events表有40m+行,因此在拔出插头之前,尝试基于字段操作的连接需要30分钟。我尝试映射一个映射表(IP到0填充的IP),但它并没有改善情况。甚至用city构建一个精简的唯一IP地址表也要花很长时间


这里是否有一种方法或策略可以让我更有效地合并这些数据集?

您不必每次都在运行中这样做。一个好的方法是实现。特别是由于您的数据可能是不可变的(记录行中的任何数据后,IP都不会更改),因此您有更多的选项。它们可以是:

  • 每晚运行一个脚本以重新运行整个连接
  • 运行增量追加,以便数据的每个新部分都为进入源表的数据的每个新部分追加联接
  • 如果您有能力存储另一个40m+表的副本,则只需将结果存储为一个新表,该表包含源表中的所有列加上county(可能还有0填充的IP),否则,您可以存储一个具有源表中某些ID的表加上提供比原始查询更快连接的连接结果。
    或者,如果源表是某个ETL/ELT过程的结果,这可能只是另一个步骤。

    每个表上都有索引吗否,Redshift不支持索引。我确实尝试过将IP作为sortkey和distkey,但仍然需要很长的时间数据的大小。。