首页 > 解决方案 > 快速将IP地址映射到城市

问题描述

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

我可以编写将 IP 地址转换为 0 填充的 IP 地址的查询,然后加入我的映射表。

但就性能而言,我什么也做不了。事件表有 40m+ 行,因此在我拔掉插头之前尝试基于字段操作的连接需要 30 分钟。我尝试映射一个映射表(IP 到 0 填充的 IP),但它并没有改进。即使是建立一个包含城市的唯一 IP 地址的简化表也需要很长时间。

我应该在这里采取一种方法或策略来尝试更有效地合并这些数据集吗?

标签: amazon-redshiftip-addressderived-table

解决方案


您不必每次都即时执行此操作。一个好的方法是实现。特别是因为您的数据可能是不可变的(IP 在记录后不会更改为行中的任何数据),您有更多选择。他们可以:

  1. 每晚运行一个脚本以重新运行整个连接
  2. 运行增量追加,因此每个新的数据部分,为进入源表的每个新数据部分追加连接

如果您有能力存储 40m+ 表的另一个副本,您可以将结果存储为一个新表,其中包含源表中的所有列加上县(可能还有 0 填充 IP),如果没有,您可以存储一个带有一些 ID 的表源表加上提供比原始查询更快的连接的连接结果。或者,如果源表是某个 ETL/ELT 过程的结果,这可能只是另一个步骤。


推荐阅读