如何在Python中基于键值和日期过滤合并Teradata与ODBC表
Python实现Teradata问卷表与ODBC客户表的条件合并
核心需求
将Teradata问卷表与ODBC客户表按客户ID匹配,仅保留ODBC表中客户更新日期在问卷起止日期之间的记录,最终整合为可用于报表分析的数据集。
步骤实现
1. 安装依赖库
先安装所需Python包:
pip install pandas teradatasql pyodbc
2. 读取数据源
替换以下代码中的连接参数为你的实际配置,分别读取两张表:
读取Teradata问卷表
import pandas as pd import teradatasql # Teradata连接配置 td_conn = teradatasql.connect( host="你的Teradata主机地址", username="用户名", password="密码" ) # 读取问卷表数据 query_td = """ SELECT custID, Question, Answer, StartDate, EndDate FROM 你的问卷表名 """ df_td = pd.read_sql(query_td, td_conn) td_conn.close()
读取ODBC客户表
import pyodbc # ODBC连接配置(根据数据源调整驱动、地址等参数) odbc_conn = pyodbc.connect( "DRIVER={你的ODBC驱动};SERVER=服务器地址;DATABASE=数据库名;UID=用户名;PWD=密码" ) # 读取客户表数据 query_odbc = """ SELECT CustomerID, Name, Age, Gender, Date FROM 你的客户表名 """ df_odbc = pd.read_sql(query_odbc, odbc_conn) odbc_conn.close()
3. 数据预处理:日期格式转换
日期字段需转为datetime类型才能进行区间比较:
# 转换Teradata表的日期列(格式匹配示例中的"July 4 2022") df_td['StartDate'] = pd.to_datetime(df_td['StartDate'], format='%B %d %Y') df_td['EndDate'] = pd.to_datetime(df_td['EndDate'], format='%B %d %Y') # 转换ODBC表的日期列 df_odbc['Date'] = pd.to_datetime(df_odbc['Date'], format='%B %d %Y')
注:如果你的日期格式不同,需调整format参数,比如%Y-%m-%d
4. 条件合并数据
先按客户ID关联两张表,再筛选符合日期区间的记录:
# 按客户ID关联(custID与CustomerID为同一标识) merged_df = pd.merge( df_td, df_odbc, left_on='custID', right_on='CustomerID', how='inner' # 仅保留双方都存在的客户记录 ) # 筛选满足日期条件的记录:问卷开始日期 < 客户更新日期 < 问卷结束日期 filtered_df = merged_df[ (merged_df['Date'] > merged_df['StartDate']) & (merged_df['Date'] < merged_df['EndDate']) ] # 可选:清理冗余列(删除重复的客户ID列) filtered_df = filtered_df.drop(columns=['CustomerID'])
5. 输出与分析
将整合后的数据保存或直接用于报表分析:
# 保存为CSV文件供后续使用 filtered_df.to_csv('整合后的客户问卷数据.csv', index=False) # 按维度统计示例(比如按年龄、性别分组) age_group_count = filtered_df.groupby('Age')['Question'].count() gender_answer_stats = filtered_df.groupby('Gender')['Answer'].value_counts()
示例数据验证
针对你提供的示例数据:
- Teradata表中客户225的问卷起止日期为
2022-07-04至2022-07-05 - ODBC表中客户225的两条记录日期分别为
2021-06-04(早于问卷开始日期)和2022-09-06(晚于问卷结束日期) - 因此最终筛选结果为空,符合逻辑
内容的提问来源于stack exchange,提问作者idlatva
相关产品推荐
相关产品推荐

