尝试自动化我在 Python 中在 SSMS 中开始的数据标准化过程
Trying to automate a data standardization process I started in SSMS in Python
我有一堆从各种来源收集的地址点数据。我之前将 SQL 中的这些数据集标准化为以下列:
- 地址 1:街道地址
- 地址2:单位地址
- 城市
- 州
- 邮编
这些列中的每一列都是根据不同的数据集构建的,并且由于数据是从不同的来源收集的,所以我需要手动构建它。
例如,一个县的标准化可能如下所示:
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
我有一堆从各种来源收集的地址点数据。我之前将 SQL 中的这些数据集标准化为以下列:
- 地址 1:街道地址
- 地址2:单位地址
- 城市
- 州
- 邮编
这些列中的每一列都是根据不同的数据集构建的,并且由于数据是从不同的来源收集的,所以我需要手动构建它。
例如,一个县的标准化可能如下所示:
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