104 lines
3.3 KiB
Plaintext
104 lines
3.3 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"id": "initial_id",
|
|
"metadata": {
|
|
"collapsed": true,
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-04T09:43:46.485266Z",
|
|
"start_time": "2025-12-04T09:43:15.261034Z"
|
|
}
|
|
},
|
|
"source": [
|
|
"from datetime import datetime, timezone, timedelta, date, UTC\n",
|
|
"import holidays\n",
|
|
"from config import Config\n",
|
|
"import psycopg2\n",
|
|
"import pandas as pd\n",
|
|
"import pymysql\n",
|
|
"from api import API\n",
|
|
"from log_config import configure_task_logger, configure_error_task_logger\n",
|
|
"import time\n",
|
|
"\n",
|
|
"def get_ngv_details(days_back=1):\n",
|
|
" \"\"\"\n",
|
|
" 从固定的数据库中获取前几天的NGV明细。\n",
|
|
" 参数 `days_back` 表示相对于今天的天数偏移量,默认为1(即前一天)。\n",
|
|
" 返回包含NGV明细的pandas DataFrame。\n",
|
|
" \"\"\"\n",
|
|
" try:\n",
|
|
" # 获得连接\n",
|
|
" conn = Config.CONN_INFO\n",
|
|
" conn = psycopg2.connect(**conn)\n",
|
|
" cursor = conn.cursor()\n",
|
|
"\n",
|
|
" # 获取指定天数前的日期\n",
|
|
" now_time = datetime.now()\n",
|
|
" target_time = now_time + timedelta(days=-days_back)\n",
|
|
" target_date_id = int(target_time.strftime('%Y%m%d')) # 获取目标日期\n",
|
|
"\n",
|
|
" # sql语句查询\n",
|
|
" sql = f\"\"\"\n",
|
|
" SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{target_date_id}' ;\n",
|
|
" \"\"\"\n",
|
|
"\n",
|
|
" # 执行语句并获取结果集\n",
|
|
" cursor.execute(sql)\n",
|
|
" rows = cursor.fetchall()\n",
|
|
" all_fields = cursor.description\n",
|
|
"\n",
|
|
" # 执行结果转化为dataframe\n",
|
|
" col = [i[0] for i in all_fields]\n",
|
|
" data_NGV = pd.DataFrame(rows, columns=col)\n",
|
|
"\n",
|
|
" # 尝试自动解析日期时间字符串\n",
|
|
" time_format = \"%Y-%m-%d %H:%M:%S\"\n",
|
|
" if 'saas_create_time' in data_NGV.columns:\n",
|
|
" data_NGV['saas_create_time'] = pd.to_datetime(data_NGV['saas_create_time'], format=time_format,\n",
|
|
" errors='coerce')\n",
|
|
" data_NGV['saas_create_time'] = data_NGV['saas_create_time'].dt.strftime('%Y-%m-%d')\n",
|
|
"\n",
|
|
" # 关闭游标和连接\n",
|
|
" cursor.close()\n",
|
|
" conn.close()\n",
|
|
"\n",
|
|
" return data_NGV\n",
|
|
"\n",
|
|
" except Exception as e:\n",
|
|
" print(e)\n",
|
|
" return None\n",
|
|
"\n",
|
|
"data_NGV_j = get_ngv_details(days_back=1)\n",
|
|
"data_NGV_j1 = get_ngv_details(days_back=2)\n",
|
|
"\n",
|
|
"data_NGV_j.to_csv('data_NGV_j.csv', index=False)\n",
|
|
"data_NGV_j1.to_csv('data_NGV_j1.csv', index=False)"
|
|
],
|
|
"outputs": [],
|
|
"execution_count": 6
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 2
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython2",
|
|
"version": "2.7.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|