尝试自动化我在 Python 中在 SSMS 中开始的数据标准化过程

Trying to automate a data standardization process I started in SSMS in Python

我有一堆从各种来源收集的地址点数据。我之前将 SQL 中的这些数据集标准化为以下列:

  1. 地址 1:街道地址
  2. 地址2:单位地址
  3. 城市
  4. 邮编

这些列中的每一列都是根据不同的数据集构建的,并且由于数据是从不同的来源收集的,所以我需要手动构建它。

例如,一个县的标准化可能如下所示:

INSERT INTO Standardized_Addresses_02020 (Address1, Address2, City, State, Zip)
SELECT 
    Address1 = Number + PreDir + Street+ StType
    Address2 = Unit
    City = Postal_Area
    State = StateAbbv
    Zip = ZIP_CODE
FROM Raw_Address_02020

但是对于另一个县,用于构建标准化数据中的列的原始数据中的列是不同的。例如:

INSERT INTO Standardized_Addresses_02100 (Address1, Address2, City, State, Zip)
SELECT 
    Address1 = Add_num+ Prefix + St_name+ PostDir + Type
    Address2 = Suite
    City = POST_COMM
    State = State
    Zip = ZIP
FROM Raw_Address_02100

我正在尝试编写一些 python 代码来自动执行整个过程,但由于原始数据具有不同的列名,因此它开始变得复杂。

我目前正在考虑的方法是使用 INFORMATION_SCHEMA.COLUMNS 中的所有列名 ('Master_Columns') 创建一个 table,并将这些列标记为在 Address1 中,地址 2、城市、州或邮政编码。然后我会创建一个 python 函数来检查原始数据中的列是否存在于 Master_Columns 中,如果存在,则在标准化中使用它们。

虽然这看起来很乱而且冗长,但我很好奇是否有人有更好的想法可以优化它。我希望我的解释很清楚。提前致谢!

您可以创建一个类似于 config.ini 的配置文件,您可以在其中为每个源数据的每个列定义映射。这样你只需要引用配置文件,代码中不需要太多更改。

[source-1]
address1=Number + PreDir + Street+ StType

[source-2]
address=Add_num+ Prefix + St_name+ PostDir + Type