You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 20:20:10