staran 0.6.1__py3-none-any.whl → 1.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- staran/__init__.py +10 -0
- staran/tools/__init__.py +6 -6
- staran/tools/date.py +327 -222
- staran/tools/tests/__init__.py +119 -0
- staran/tools/tests/run_tests.py +241 -0
- staran/tools/tests/test_api_compatibility.py +319 -0
- staran/tools/tests/test_date.py +565 -0
- staran/tools/tests/test_logging.py +402 -0
- staran-1.0.1.dist-info/METADATA +37 -0
- staran-1.0.1.dist-info/RECORD +13 -0
- staran/banks/__init__.py +0 -30
- staran/banks/xinjiang_icbc/__init__.py +0 -90
- staran/engines/__init__.py +0 -65
- staran/engines/base.py +0 -255
- staran/engines/hive.py +0 -163
- staran/engines/spark.py +0 -252
- staran/engines/turing.py +0 -439
- staran/features/__init__.py +0 -59
- staran/features/engines.py +0 -284
- staran/features/generator.py +0 -603
- staran/features/manager.py +0 -155
- staran/features/schema.py +0 -193
- staran/models/__init__.py +0 -72
- staran/models/config.py +0 -271
- staran/models/daifa_models.py +0 -361
- staran/models/registry.py +0 -281
- staran/models/target.py +0 -321
- staran/schemas/__init__.py +0 -27
- staran/schemas/aum/__init__.py +0 -210
- staran/tools/document_generator.py +0 -350
- staran-0.6.1.dist-info/METADATA +0 -586
- staran-0.6.1.dist-info/RECORD +0 -28
- {staran-0.6.1.dist-info → staran-1.0.1.dist-info}/WHEEL +0 -0
- {staran-0.6.1.dist-info → staran-1.0.1.dist-info}/licenses/LICENSE +0 -0
- {staran-0.6.1.dist-info → staran-1.0.1.dist-info}/top_level.txt +0 -0
staran-0.6.1.dist-info/METADATA
DELETED
@@ -1,586 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.4
|
2
|
-
Name: staran
|
3
|
-
Version: 0.6.1
|
4
|
-
Summary: staran - 高性能Python工具库
|
5
|
-
Home-page: https://github.com/starlxa/staran
|
6
|
-
Author: StarAn
|
7
|
-
Author-email: StarAn <starlxa@icloud.com>
|
8
|
-
License: MIT
|
9
|
-
Project-URL: Homepage, https://github.com/starlxa/staran
|
10
|
-
Project-URL: Bug Reports, https://github.com/starlxa/staran/issues
|
11
|
-
Project-URL: Source, https://github.com/starlxa/staran
|
12
|
-
Keywords: machine-learning,feature-engineering,data-processing,sql-generation
|
13
|
-
Classifier: Development Status :: 4 - Beta
|
14
|
-
Classifier: Intended Audience :: Developers
|
15
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
16
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
17
|
-
Classifier: Programming Language :: Python :: 3
|
18
|
-
Classifier: Programming Language :: Python :: 3.7
|
19
|
-
Classifier: Programming Language :: Python :: 3.8
|
20
|
-
Classifier: Programming Language :: Python :: 3.9
|
21
|
-
Classifier: Programming Language :: Python :: 3.10
|
22
|
-
Classifier: Programming Language :: Python :: 3.11
|
23
|
-
Classifier: Programming Language :: Python :: 3.12
|
24
|
-
Classifier: Operating System :: OS Independent
|
25
|
-
Requires-Python: >=3.7
|
26
|
-
Description-Content-Type: text/markdown
|
27
|
-
License-File: LICENSE
|
28
|
-
Dynamic: author
|
29
|
-
Dynamic: home-page
|
30
|
-
Dynamic: license-file
|
31
|
-
Dynamic: requires-python
|
32
|
-
|
33
|
-
# Star## Staran ✨ v0.6.1 新特性
|
34
|
-
|
35
|
-
- � **完善的包管理** - 优化setup.py配置,移除不必要的标准库依赖
|
36
|
-
- �📋 **独立Schema模块** - 专门的表结构定义和管理模块
|
37
|
-
- 📄 **文档自动生成** - 支持Markdown/PDF/HTML格式的技术文档生成
|
38
|
-
- 🏢 **业务域支持** - AUM等业务领域的标准表结构定义
|
39
|
-
- 🔗 **无缝集成** - Schema与特征工程模块完美集成
|
40
|
-
- 🛠️ **模块化引擎架构** - 独立的引擎模块,支持Spark、Hive、图灵平台
|
41
|
-
- 🔧 **统一接口设计** - 所有引擎提供一致的SQL生成、执行和下载接口
|
42
|
-
- 🎯 **继承复用架构** - TuringEngine继承SparkEngine,复用SQL生成逻辑
|
43
|
-
- 📦 **清晰代码分离** - SQL生成与平台特定执行逻辑完全分离
|
44
|
-
- 🚀 **易于扩展** - 新增数据库支持只需实现BaseEngine接口
|
45
|
-
- 📁 **独立引擎存储** - engines/文件夹专门存放所有数据库引擎
|
46
|
-
- 🔄 **向后兼容** - 保持对原有API的完全兼容
|
47
|
-
|
48
|
-
## 🎯 专为机器学习设计的Python工具包
|
49
|
-
|
50
|
-
Staran是一个强大的特征工程和数据处理工具包,提供从数据到模型的完整解决方案。特别针对工银图灵平台优化,让特征工程和模型训练变得前所未有的简单。
|
51
|
-
|
52
|
-
## ✨ v0.6.1 新特性
|
53
|
-
|
54
|
-
- 🔧 **完善的包管理** - 优化setup.py配置,移除不必要的标准库依赖
|
55
|
-
- 🛠️ **模块化引擎架构** - 独立的引擎模块,支持Spark、Hive、图灵平台
|
56
|
-
- 🔧 **统一接口设计** - 所有引擎提供一致的SQL生成、执行和下载接口
|
57
|
-
- 🎯 **继承复用架构** - TuringEngine继承SparkEngine,复用SQL生成逻辑
|
58
|
-
- 📦 **清晰代码分离** - SQL生成与平台特定执行逻辑完全分离
|
59
|
-
- 🚀 **易于扩展** - 新增数据库支持只需实现BaseEngine接口
|
60
|
-
- 📁 **独立引擎存储** - engines/文件夹专门存放所有数据库引擎
|
61
|
-
- 🔄 **向后兼容** - 保持对原有API的完全兼容
|
62
|
-
|
63
|
-
## � 专为机器学习设计的Python工具包
|
64
|
-
|
65
|
-
Staran是一个强大的特征工程和数据处理工具包,提供从数据到模型的完整解决方案。特别针对工银图灵平台优化,让特征工程和模型训练变得前所未有的简单。
|
66
|
-
|
67
|
-
## ✨ v0.6.0 新特性
|
68
|
-
|
69
|
-
- �️ **模块化引擎架构** - 独立的引擎模块,支持Spark、Hive、图灵平台
|
70
|
-
- 🔧 **统一接口设计** - 所有引擎提供一致的SQL生成、执行和下载接口
|
71
|
-
- 🎯 **继承复用架构** - TuringEngine继承SparkEngine,复用SQL生成逻辑
|
72
|
-
- 📦 **清晰代码分离** - SQL生成与平台特定执行逻辑完全分离
|
73
|
-
- � **易于扩展** - 新增数据库支持只需实现BaseEngine接口
|
74
|
-
- � **独立引擎存储** - engines/文件夹专门存放所有数据库引擎
|
75
|
-
- 🔄 **向后兼容** - 保持对原有API的完全兼容
|
76
|
-
|
77
|
-
## 🚀 快速开始
|
78
|
-
|
79
|
-
### 安装
|
80
|
-
```bash
|
81
|
-
pip install staran
|
82
|
-
# 或在图灵平台中直接使用
|
83
|
-
```
|
84
|
-
|
85
|
-
### 基础用法 - 日期处理
|
86
|
-
|
87
|
-
```python
|
88
|
-
from staran import Date
|
89
|
-
|
90
|
-
# 创建日期 - 智能格式记忆
|
91
|
-
date1 = Date('202504') # 输出: 202504 (记住年月格式)
|
92
|
-
date2 = Date('20250415') # 输出: 20250415 (记住完整格式)
|
93
|
-
date3 = Date(2025, 4, 15) # 输出: 2025-04-15
|
94
|
-
|
95
|
-
# 日期运算保持格式
|
96
|
-
new_date = date1.add_months(2) # 输出: 202506 (保持YYYYMM格式)
|
97
|
-
```
|
98
|
-
|
99
|
-
### 引擎架构 - 多平台支持
|
100
|
-
|
101
|
-
```python
|
102
|
-
from staran.engines import create_engine, create_turing_engine
|
103
|
-
|
104
|
-
# 1. 使用Spark引擎
|
105
|
-
spark_engine = create_engine('spark', 'analytics_db')
|
106
|
-
|
107
|
-
# 2. 使用Hive引擎
|
108
|
-
hive_engine = create_engine('hive', 'warehouse_db')
|
109
|
-
|
110
|
-
# 3. 使用图灵平台引擎 (继承Spark + turingPythonLib)
|
111
|
-
turing_engine = create_turing_engine('analytics_db')
|
112
|
-
|
113
|
-
# 统一接口 - 所有引擎都支持相同方法
|
114
|
-
sql = spark_engine.generate_aggregation_sql(schema, 2025, 7, ['sum', 'avg'])
|
115
|
-
result = turing_engine.create_table('my_table', sql, execute=True)
|
116
|
-
download = turing_engine.download_table_data('my_table', 'file:///nfsHome/data.parquet')
|
117
|
-
```
|
118
|
-
|
119
|
-
### Schema模块 - 表结构管理与文档生成
|
120
|
-
|
121
|
-
```python
|
122
|
-
from staran import get_aum_schemas, export_aum_docs, SchemaDocumentGenerator
|
123
|
-
|
124
|
-
# 1. 获取预定义业务表结构
|
125
|
-
schemas = get_aum_schemas() # 获取AUM业务域的所有表结构
|
126
|
-
|
127
|
-
for table_type, schema in schemas.items():
|
128
|
-
print(f"{table_type}: {schema.table_name} ({len(schema.fields)}个字段)")
|
129
|
-
|
130
|
-
# 2. 生成业务文档
|
131
|
-
docs = export_aum_docs('./docs', 'markdown') # 生成Markdown格式文档
|
132
|
-
|
133
|
-
# 3. 自定义文档生成
|
134
|
-
generator = SchemaDocumentGenerator()
|
135
|
-
doc_path = generator.export_schema_doc(
|
136
|
-
schema=schemas['behavior'],
|
137
|
-
business_domain="AUM",
|
138
|
-
table_type="behavior",
|
139
|
-
format_type="markdown"
|
140
|
-
)
|
141
|
-
|
142
|
-
# 4. 与特征工程集成
|
143
|
-
from staran import create_aum_example, run_aum_example
|
144
|
-
|
145
|
-
# 基于预定义schema创建特征工程示例
|
146
|
-
example = create_aum_example()
|
147
|
-
summary = example.get_summary() # 获取特征统计信息
|
148
|
-
|
149
|
-
# 一键运行完整流程
|
150
|
-
results = run_aum_example('202507') # 生成916个特征
|
151
|
-
```
|
152
|
-
|
153
|
-
### 特征工程 - SQL自动生成
|
154
|
-
|
155
|
-
```python
|
156
|
-
from staran import TableSchema, FeatureGenerator, FeatureManager
|
157
|
-
|
158
|
-
# 1. 定义表结构
|
159
|
-
schema = TableSchema('user_behavior')
|
160
|
-
schema.add_primary_key('user_id', 'string')
|
161
|
-
schema.add_date_field('date', 'date')
|
162
|
-
schema.add_field('amount', 'decimal', aggregatable=True)
|
163
|
-
schema.add_field('category', 'string')
|
164
|
-
schema.set_monthly_unique(True)
|
165
|
-
|
166
|
-
# 2. 创建特征管理器 (基于引擎架构)
|
167
|
-
manager = FeatureManager('analytics_db', engine_type='spark')
|
168
|
-
|
169
|
-
# 3. 生成特征SQL
|
170
|
-
generator = FeatureGenerator(schema, manager)
|
171
|
-
result = generator.generate_feature_by_type('aggregation', 2025, 7)
|
172
|
-
print(result['sql']) # 自动生成的聚合特征SQL
|
173
|
-
```
|
174
|
-
|
175
|
-
### 🏦 图灵平台集成 - 一键ML流程
|
176
|
-
|
177
|
-
```python
|
178
|
-
from staran.engines import create_turing_engine
|
179
|
-
|
180
|
-
# 1. 创建图灵引擎
|
181
|
-
turing = create_turing_engine("ml_analytics")
|
182
|
-
|
183
|
-
# 2. 创建特征表
|
184
|
-
create_result = turing.create_table(
|
185
|
-
table_name="user_features_2025_07_raw",
|
186
|
-
select_sql="SELECT user_id, sum(amount) as total_amount FROM user_behavior GROUP BY user_id",
|
187
|
-
execute=True,
|
188
|
-
mode="cluster"
|
189
|
-
)
|
190
|
-
|
191
|
-
# 3. 下载特征数据
|
192
|
-
download_result = turing.download_table_data(
|
193
|
-
table_name="user_features_2025_07_raw",
|
194
|
-
output_path="file:///nfsHome/ml_features/user_features.parquet",
|
195
|
-
mode="cluster"
|
196
|
-
)
|
197
|
-
|
198
|
-
# 4. 批量下载查询结果
|
199
|
-
query_result = turing.download_query_result(
|
200
|
-
sql="SELECT user_id, label FROM ml.training_labels WHERE dt='2025-07-28'",
|
201
|
-
output_path="file:///nfsHome/ml_labels/labels.parquet"
|
202
|
-
)
|
203
|
-
|
204
|
-
print(f"特征表创建: {create_result['status']}")
|
205
|
-
print(f"数据下载: {download_result['status']}")
|
206
|
-
```
|
207
|
-
|
208
|
-
## 📖 核心功能
|
209
|
-
|
210
|
-
### �️ 引擎架构设计
|
211
|
-
|
212
|
-
**模块化引擎架构,清晰分离关注点:**
|
213
|
-
|
214
|
-
```
|
215
|
-
BaseEngine (抽象基类)
|
216
|
-
├── SparkEngine (Spark SQL实现)
|
217
|
-
│ └── TuringEngine (继承Spark + turingPythonLib)
|
218
|
-
└── HiveEngine (Hive SQL实现)
|
219
|
-
```
|
220
|
-
|
221
|
-
| 引擎类型 | SQL生成 | 执行方式 | 下载方式 | 适用场景 |
|
222
|
-
|---------|---------|---------|---------|---------|
|
223
|
-
| SparkEngine | Spark SQL | 本地执行器 | DataFrame保存 | 本地开发、测试 |
|
224
|
-
| HiveEngine | Hive SQL | 本地执行器 | 目录导出 | 传统Hive环境 |
|
225
|
-
| TuringEngine | Spark SQL | turingPythonLib | tp.download() | 工银图灵平台 |
|
226
|
-
|
227
|
-
| 功能对比 | 原生turingPythonLib | Staran集成 |
|
228
|
-
|---------|-------------------|------------|
|
229
|
-
| 参数管理 | 手动构建完整参数字典 | 简化API,智能默认值 |
|
230
|
-
| 特征工程 | 手写SQL,手动管理表名 | 自动生成SQL,智能表名管理 |
|
231
|
-
| 批量操作 | 循环调用,手动错误处理 | 一键批量,完整错误处理 |
|
232
|
-
| 代码量 | 100+ 行样板代码 | 5-10行核心代码 |
|
233
|
-
|
234
|
-
```python
|
235
|
-
# 🚀 完整ML工作流示例
|
236
|
-
from staran.sql.turing_integration import create_turing_integration
|
237
|
-
|
238
|
-
turing = create_turing_integration("production_analytics")
|
239
|
-
|
240
|
-
# 步骤1: 读取原始数据
|
241
|
-
raw_data = turing.read_hive_table(
|
242
|
-
table_name="dwh.user_behavior_detail",
|
243
|
-
condition='pt_dt="2025-07-28" limit 500000',
|
244
|
-
local_path="/nfsHome/raw_data.csv"
|
245
|
-
)
|
246
|
-
|
247
|
-
# 步骤2: 一键特征工程
|
248
|
-
pipeline_result = turing.create_and_download_features(
|
249
|
-
feature_sqls=auto_generated_feature_sqls,
|
250
|
-
base_table="ml_user_features",
|
251
|
-
output_dir="file:///nfsHome/features/",
|
252
|
-
mode="cluster"
|
253
|
-
)
|
254
|
-
|
255
|
-
# 步骤3: 批量下载训练数据
|
256
|
-
batch_result = turing.feature_manager.batch_download_features(
|
257
|
-
base_table="ml_user_features",
|
258
|
-
year=2025, month=7,
|
259
|
-
output_dir="file:///nfsHome/training_data/",
|
260
|
-
mode="cluster"
|
261
|
-
)
|
262
|
-
|
263
|
-
# 现在可以直接用于模型训练!
|
264
|
-
```
|
265
|
-
|
266
|
-
### 🔧 智能特征工程 - 自动SQL生成
|
267
|
-
|
268
|
-
**支持4种特征类型的自动化生成:**
|
269
|
-
|
270
|
-
1. **原始特征拷贝** (Raw Copy) - 非聚合字段智能拷贝
|
271
|
-
2. **聚合统计特征** (Aggregation) - sum/avg/count/min/max等
|
272
|
-
3. **环比特征** (MoM) - 月度差分对比分析
|
273
|
-
4. **同比特征** (YoY) - 年度差分对比分析
|
274
|
-
|
275
|
-
```python
|
276
|
-
from staran import TableSchema, FeatureGenerator, FeatureConfig
|
277
|
-
|
278
|
-
# 定义表结构
|
279
|
-
schema = TableSchema('user_monthly_behavior')
|
280
|
-
schema.add_primary_key('user_id', 'string')
|
281
|
-
schema.add_date_field('month_date', 'date')
|
282
|
-
schema.add_field('purchase_amount', 'decimal', aggregatable=True)
|
283
|
-
schema.add_field('order_count', 'int', aggregatable=True)
|
284
|
-
schema.add_field('user_level', 'string')
|
285
|
-
|
286
|
-
# 配置特征生成策略
|
287
|
-
config = FeatureConfig()
|
288
|
-
config.enable_feature('aggregation') # 启用聚合特征
|
289
|
-
config.enable_feature('mom') # 启用环比特征
|
290
|
-
config.aggregation_types = ['sum', 'avg', 'count']
|
291
|
-
config.mom_periods = [1, 3] # 1月和3月环比
|
292
|
-
|
293
|
-
# 生成特征
|
294
|
-
generator = FeatureGenerator(schema)
|
295
|
-
generator.config = config
|
296
|
-
|
297
|
-
# 查看特征摘要
|
298
|
-
summary = generator.get_feature_summary()
|
299
|
-
print(f"将生成 {summary['total']} 个特征")
|
300
|
-
|
301
|
-
# 生成特定类型的SQL
|
302
|
-
agg_result = generator.generate_feature_by_type('aggregation', 2025, 7)
|
303
|
-
print("聚合特征SQL:", agg_result['sql'])
|
304
|
-
```
|
305
|
-
|
306
|
-
### 📥 智能数据下载 - 兼容turingPythonLib
|
307
|
-
|
308
|
-
**3种下载方式,满足不同需求:**
|
309
|
-
|
310
|
-
```python
|
311
|
-
from staran import SQLManager, FeatureTableManager
|
312
|
-
|
313
|
-
manager = SQLManager("analytics_db")
|
314
|
-
|
315
|
-
# 1. 基础数据下载
|
316
|
-
result = manager.download_data(
|
317
|
-
sql="SELECT * FROM user_behavior WHERE year=2025 AND month=7",
|
318
|
-
output_path="file:///nfsHome/data/user_behavior_202507/",
|
319
|
-
mode="cluster",
|
320
|
-
spark_resource={
|
321
|
-
'num_executors': '8',
|
322
|
-
'driver_memory': '8G',
|
323
|
-
'executor_memory': '8G'
|
324
|
-
}
|
325
|
-
)
|
326
|
-
|
327
|
-
# 2. 单个特征表下载
|
328
|
-
feature_manager = FeatureTableManager(manager)
|
329
|
-
single_result = feature_manager.download_feature_table(
|
330
|
-
table_name="analytics_db.user_features_2025_07_f001",
|
331
|
-
output_path="file:///nfsHome/features/agg_features/",
|
332
|
-
condition="WHERE purchase_amount > 1000"
|
333
|
-
)
|
334
|
-
|
335
|
-
# 3. 批量特征表下载
|
336
|
-
batch_result = feature_manager.batch_download_features(
|
337
|
-
base_table="user_features",
|
338
|
-
year=2025, month=7,
|
339
|
-
output_dir="file:///nfsHome/batch_features/",
|
340
|
-
feature_nums=[1, 2, 3] # 指定下载的特征编号
|
341
|
-
)
|
342
|
-
```
|
343
|
-
|
344
|
-
### 🗓️ Date工具 - 智能格式记忆
|
345
|
-
|
346
|
-
**Date类会根据输入格式自动设置默认输出格式:**
|
347
|
-
|
348
|
-
| 输入方式 | 默认输出 | 说明 |
|
349
|
-
|---------|---------|------|
|
350
|
-
| `Date('202504')` | `202504` | 年月紧凑格式 |
|
351
|
-
| `Date('20250415')` | `20250415` | 完整紧凑格式 |
|
352
|
-
| `Date(2025, 4)` | `2025-04` | 年月格式 |
|
353
|
-
| `Date(2025, 4, 15)` | `2025-04-15` | 完整格式 |
|
354
|
-
|
355
|
-
```python
|
356
|
-
date = Date('202504')
|
357
|
-
|
358
|
-
# 默认格式(保持输入风格)
|
359
|
-
print(date) # 202504
|
360
|
-
|
361
|
-
# 多种输出格式
|
362
|
-
print(date.format_full()) # 2025-04-01
|
363
|
-
print(date.format_chinese()) # 2025年04月01日
|
364
|
-
print(date.format_year_month()) # 2025-04
|
365
|
-
print(date.format_compact()) # 20250401
|
366
|
-
|
367
|
-
# 日期运算保持格式
|
368
|
-
next_month = date.add_months(1) # 202505
|
369
|
-
tomorrow = date.add_days(1) # 202504 (智能处理)
|
370
|
-
```
|
371
|
-
|
372
|
-
## 🎯 设计特色
|
373
|
-
|
374
|
-
- **🏦 图灵平台专用** - 深度集成turingPythonLib,简化95%代码
|
375
|
-
- **🚀 端到端自动化** - 从特征工程到模型训练数据的完整流程
|
376
|
-
- **📊 智能特征工程** - 自动生成4类特征SQL,无需手写复杂查询
|
377
|
-
- **📥 智能数据下载** - 兼容turingPythonLib格式,支持批量操作
|
378
|
-
- **🔄 智能表管理** - 自动生成规范表名,版本控制和生命周期管理
|
379
|
-
- **⚡ 简化API设计** - 直观易用,符合Python习惯
|
380
|
-
- **🛡️ 完整错误处理** - 智能重试、详细日志和操作报告
|
381
|
-
|
382
|
-
## 📁 项目结构
|
383
|
-
|
384
|
-
```
|
385
|
-
staran/
|
386
|
-
├── __init__.py # 主包入口,v0.6.0功能导出
|
387
|
-
├── schemas/ # 🆕 表结构定义与文档生成模块
|
388
|
-
│ ├── __init__.py # Schema模块入口
|
389
|
-
│ ├── document_generator.py # 文档生成器 (MD/PDF/HTML)
|
390
|
-
│ └── aum/ # AUM业务域表结构
|
391
|
-
│ └── __init__.py # AUM表结构定义
|
392
|
-
├── engines/ # 🆕 模块化引擎架构
|
393
|
-
│ ├── __init__.py # 引擎模块入口
|
394
|
-
│ ├── base.py # BaseEngine抽象基类
|
395
|
-
│ ├── spark.py # SparkEngine实现
|
396
|
-
│ ├── hive.py # HiveEngine实现
|
397
|
-
│ └── turing.py # TuringEngine (继承SparkEngine)
|
398
|
-
├── features/ # 🆕 特征工程模块
|
399
|
-
│ ├── __init__.py # 特征模块入口
|
400
|
-
│ ├── manager.py # FeatureManager (使用引擎架构)
|
401
|
-
│ ├── schema.py # 表结构定义
|
402
|
-
│ └── generator.py # 特征生成器
|
403
|
-
├── examples/ # 🆕 完整示例模块
|
404
|
-
│ ├── __init__.py # 示例模块入口
|
405
|
-
│ └── aum_longtail.py # AUM代发长尾模型示例
|
406
|
-
├── tools/
|
407
|
-
│ ├── __init__.py # 工具模块
|
408
|
-
│ └── date.py # Date类实现
|
409
|
-
├── setup.py # 安装配置
|
410
|
-
├── README.md # 本文档 v0.6.0
|
411
|
-
└── quick-upload.sh # 快速部署脚本
|
412
|
-
```
|
413
|
-
|
414
|
-
## 🧪 快速测试
|
415
|
-
|
416
|
-
### 引擎架构测试
|
417
|
-
```python
|
418
|
-
from staran import create_engine, create_turing_engine
|
419
|
-
|
420
|
-
# 测试SparkEngine
|
421
|
-
spark = create_engine('spark')
|
422
|
-
print(f"Spark引擎: {spark.__class__.__name__}")
|
423
|
-
|
424
|
-
# 测试TuringEngine继承
|
425
|
-
turing = create_turing_engine("test_analytics")
|
426
|
-
print(f"Turing引擎父类: {turing.__class__.__bases__[0].__name__}")
|
427
|
-
print(f"是否为SparkEngine子类: {isinstance(turing, spark.__class__)}")
|
428
|
-
|
429
|
-
# 测试引擎功能
|
430
|
-
sql = turing.generate_sql("SELECT user_id, amount FROM users", {"table": "test"})
|
431
|
-
print(f"SQL生成测试: {'success' if sql else 'failed'}")
|
432
|
-
```
|
433
|
-
|
434
|
-
### AUM示例测试
|
435
|
-
```python
|
436
|
-
from staran import create_aum_example
|
437
|
-
|
438
|
-
# 创建示例并查看摘要
|
439
|
-
example = create_aum_example("dwegdata03000")
|
440
|
-
example.print_summary()
|
441
|
-
|
442
|
-
# 快速运行(测试模式,不执行实际SQL)
|
443
|
-
print("🎯 AUM长尾模型示例已准备就绪")
|
444
|
-
print("📊 包含4张业务表的完整特征工程流程")
|
445
|
-
```
|
446
|
-
|
447
|
-
### 一键运行示例
|
448
|
-
```python
|
449
|
-
from staran import run_aum_example
|
450
|
-
|
451
|
-
# 最简单的使用方式
|
452
|
-
results = run_aum_example("202507") # 指定特征月份
|
453
|
-
print(f"✅ 处理完成: {len(results)} 个表")
|
454
|
-
```
|
455
|
-
|
456
|
-
### Date工具测试
|
457
|
-
```python
|
458
|
-
from staran import Date
|
459
|
-
|
460
|
-
# 测试格式记忆
|
461
|
-
date = Date('202504')
|
462
|
-
print(f"原始: {date}") # 202504
|
463
|
-
print(f"加2月: {date.add_months(2)}") # 202506
|
464
|
-
|
465
|
-
# 测试多格式输出
|
466
|
-
print(f"中文: {date.format_chinese()}") # 2025年04月01日
|
467
|
-
print(f"完整: {date.format_full()}") # 2025-04-01
|
468
|
-
```
|
469
|
-
|
470
|
-
## 🚀 在图灵NoteBook中开始使用
|
471
|
-
|
472
|
-
### 1. 环境准备
|
473
|
-
```python
|
474
|
-
# 在图灵NoteBook中执行
|
475
|
-
import sys
|
476
|
-
sys.path.append("/nfsHome/staran") # 假设已上传staran包
|
477
|
-
|
478
|
-
# 检查新引擎架构
|
479
|
-
from staran import create_turing_engine
|
480
|
-
turing = create_turing_engine("your_analytics_db")
|
481
|
-
print(f"✅ 引擎类型: {turing.__class__.__name__}")
|
482
|
-
print(f"✅ 继承关系: 继承自{turing.__class__.__bases__[0].__name__}")
|
483
|
-
print("🚀 环境就绪!开始特征工程之旅")
|
484
|
-
```
|
485
|
-
|
486
|
-
### 2. 运行AUM示例
|
487
|
-
```python
|
488
|
-
# 最简单的方式 - 一行代码完成复杂特征工程
|
489
|
-
from staran import run_aum_example
|
490
|
-
|
491
|
-
results = run_aum_example(
|
492
|
-
feature_date="202507", # 特征月份
|
493
|
-
database="dwegdata03000", # 数据库名
|
494
|
-
output_path="file:///nfsHome/aum_features" # 输出路径
|
495
|
-
)
|
496
|
-
|
497
|
-
print(f"✅ 成功!处理了4张表,生成了完整的特征数据集")
|
498
|
-
print("📂 数据已保存到 /nfsHome/aum_features/ 目录")
|
499
|
-
```
|
500
|
-
|
501
|
-
### 3. 自定义特征工程
|
502
|
-
```python
|
503
|
-
# 如需更多控制,使用详细API
|
504
|
-
from staran import create_aum_example
|
505
|
-
|
506
|
-
example = create_aum_example("dwegdata03000")
|
507
|
-
|
508
|
-
# 查看会生成哪些特征
|
509
|
-
example.print_summary()
|
510
|
-
|
511
|
-
# 运行特征工程
|
512
|
-
results = example.run("202507")
|
513
|
-
|
514
|
-
# 查看结果
|
515
|
-
for table_type, result in results.items():
|
516
|
-
if 'table_name' in result:
|
517
|
-
print(f"{table_type}: {result['table_name']}")
|
518
|
-
```
|
519
|
-
|
520
|
-
## 📊 性能优势
|
521
|
-
|
522
|
-
### 开发效率提升
|
523
|
-
- **代码减少**: 从100+行样板代码降至5-10行核心逻辑
|
524
|
-
- **开发时间**: 特征工程时间减少80%
|
525
|
-
- **维护成本**: 自动化管理减少手动错误
|
526
|
-
|
527
|
-
### 运行性能优化
|
528
|
-
- **集群资源**: 智能Spark资源分配和优化
|
529
|
-
- **批量处理**: 并行下载和增量处理
|
530
|
-
- **错误恢复**: 自动重试和断点续传
|
531
|
-
|
532
|
-
## 🎯 完整示例
|
533
|
-
|
534
|
-
### AUM代发长尾模型 - 简化API
|
535
|
-
位置:`staran.examples` 模块
|
536
|
-
|
537
|
-
基于真实金融业务场景的完整特征工程示例,展示了新的引擎架构优势:
|
538
|
-
|
539
|
-
```python
|
540
|
-
# 最简单的使用方式
|
541
|
-
from staran import run_aum_example
|
542
|
-
|
543
|
-
# 一键运行完整特征工程流程
|
544
|
-
results = run_aum_example(
|
545
|
-
feature_date="202507", # 可选,默认当前月
|
546
|
-
database="dwegdata03000",
|
547
|
-
output_path="file:///nfsHome/aum_longtail"
|
548
|
-
)
|
549
|
-
|
550
|
-
print(f"✅ 特征工程完成!处理了 {len(results)} 个表")
|
551
|
-
```
|
552
|
-
|
553
|
-
**更多控制的方式:**
|
554
|
-
```python
|
555
|
-
from staran import create_aum_example
|
556
|
-
|
557
|
-
# 创建示例实例
|
558
|
-
example = create_aum_example("dwegdata03000")
|
559
|
-
|
560
|
-
# 查看特征摘要
|
561
|
-
example.print_summary()
|
562
|
-
|
563
|
-
# 运行特征工程
|
564
|
-
results = example.run("202507")
|
565
|
-
```
|
566
|
-
|
567
|
-
**示例特点:**
|
568
|
-
- 🏦 **真实业务场景** - 4张银行核心业务表的完整处理
|
569
|
-
- 🔧 **智能特征配置** - A表(源表+聚合),其他表(全特征:环比5个月+同比1年)
|
570
|
-
- 📊 **多维度特征** - 客户行为、资产配置、交易统计、境外交易等
|
571
|
-
- 🚀 **简化API** - 一行代码完成复杂特征工程
|
572
|
-
- 📋 **完整文档** - 每个字段都有详细的业务含义说明
|
573
|
-
|
574
|
-
**数据表说明:**
|
575
|
-
- **A表** (`bi_hlwj_dfcw_f1_f4_wy`): 客户行为特征 → 仅生成原始拷贝+聚合特征
|
576
|
-
- **B表** (`bi_hlwj_zi_chan_avg_wy`): 资产平均余额 → 生成全部特征(聚合+环比5个月+同比1年)
|
577
|
-
- **C表** (`bi_hlwj_zi_chang_month_total_zb`): 月度资产配置 → 生成全部特征
|
578
|
-
- **D表** (`bi_hlwj_realy_month_stat_wy`): 月度实际统计 → 生成全部特征
|
579
|
-
|
580
|
-
## 📄 许可证
|
581
|
-
|
582
|
-
MIT License
|
583
|
-
|
584
|
-
---
|
585
|
-
|
586
|
-
**Staran v0.6.0** - 模块化引擎架构,让机器学习特征工程变得前所未有的简单 🌟
|
staran-0.6.1.dist-info/RECORD
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
staran/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
staran/banks/__init__.py,sha256=m4IUdFLXvNtgpmxDhKptCtALyaGkF1-T9hbNqdXczLI,544
|
3
|
-
staran/banks/xinjiang_icbc/__init__.py,sha256=Ql3gQFh1h4EwUdU3fePW1chV5iAegxjLWiPxbYa_J80,3131
|
4
|
-
staran/engines/__init__.py,sha256=aQCpDxY_JcKlApEsEp2wg_P3IwNDTCFb7OYcLHiPPmk,1627
|
5
|
-
staran/engines/base.py,sha256=IIN-QxPsO-q3KmQ3Lz0cB9bs6Oac0Wy5MIF605HrHVw,7969
|
6
|
-
staran/engines/hive.py,sha256=-KwZiAvK5cxwnoyYQlqGWrcZkeKhbd8QCX3chpbezd0,5894
|
7
|
-
staran/engines/spark.py,sha256=XPxzefD9UF8oigeQISBW892RINJ9dGLbl994FWpIKBc,9361
|
8
|
-
staran/engines/turing.py,sha256=XEKkEMMWedvaGxKQ2vEHmB3TWLNLxOu1upgiBylwqjA,15516
|
9
|
-
staran/features/__init__.py,sha256=uMloEuevUjUPfro8Yv4STwvxpSVL0J1xsQTzN_EkLpo,1828
|
10
|
-
staran/features/engines.py,sha256=kqdS2xjmCVi0Xz1Oc3WaTMIavgAriX8F7VvUgVcpfqo,10039
|
11
|
-
staran/features/generator.py,sha256=CI1F_PshOvokQJelsqSaVp-SNQpMc-WVmjMQKzgdeLw,23114
|
12
|
-
staran/features/manager.py,sha256=2-3Hc3qthtyzwiuQy5QTz6RfhKK3szoylconzI3moc4,5201
|
13
|
-
staran/features/schema.py,sha256=FwOfpTcxq4K8zkO3MFNqKPQBp_e8qY-N6gazqm9_lAQ,6067
|
14
|
-
staran/models/__init__.py,sha256=VbfrRjmnp8KlFSEZOa-buECAaERptzAnvUUZK9dpgtY,2390
|
15
|
-
staran/models/config.py,sha256=fTbZtJq4-ZuCSSd1eW7TkIbEdDyZv2agHJCYnwOCJ_s,8886
|
16
|
-
staran/models/daifa_models.py,sha256=J7aqK41NDMDjacsjmxqwyuJfgf1kJx-Kaxj5CGQLISE,13166
|
17
|
-
staran/models/registry.py,sha256=Zeey4TtbHtJ40odyZQzOLijyZCmlMBRuniPk_znS2Q8,10223
|
18
|
-
staran/models/target.py,sha256=gKTTatxvOJjmE50qD6G6mhlYLuZL3Cvn3FLNbXl1eeU,10531
|
19
|
-
staran/schemas/__init__.py,sha256=ztrBlQ3irbgM7gHB_dhiLEX1ZpDX2AAWOeiPnZTe-sk,779
|
20
|
-
staran/schemas/aum/__init__.py,sha256=z0cuC6A3z-1cPKMDYrn0wCumjKkpk_0kfqGfW1JNEbc,9815
|
21
|
-
staran/tools/__init__.py,sha256=KtudrYnxKD9HZEL4H-mrWlKrmsI3rYjJrLeC9YDTpG4,1054
|
22
|
-
staran/tools/date.py,sha256=-QyEMWVx6czMuOIwcV7kR3gBMRVOwb5qevo7GEFSJKE,10488
|
23
|
-
staran/tools/document_generator.py,sha256=Mr7TjmKwspqxXnp9DhzZxsRx0l2Bo7MOI8mOxRtgwxU,13600
|
24
|
-
staran-0.6.1.dist-info/licenses/LICENSE,sha256=2EmsBIyDCono4iVXNpv5_px9qt2b7hfPq1WuyGVMNP4,1361
|
25
|
-
staran-0.6.1.dist-info/METADATA,sha256=_lLAAbTSVcGJ4hSj8DVXig4fGhgGVoYlu_YjR14IJ0M,20444
|
26
|
-
staran-0.6.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
27
|
-
staran-0.6.1.dist-info/top_level.txt,sha256=NOUZtXSh5oSIEjHrC0lQ9WmoKtD010Q00dghWyag-Zs,7
|
28
|
-
staran-0.6.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|