staran 0.2.3__py3-none-any.whl → 0.2.4__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 +29 -23
- {staran-0.2.3.dist-info → staran-0.2.4.dist-info}/METADATA +118 -76
- staran-0.2.4.dist-info/RECORD +8 -0
- staran-0.2.3.dist-info/RECORD +0 -8
- {staran-0.2.3.dist-info → staran-0.2.4.dist-info}/WHEEL +0 -0
- {staran-0.2.3.dist-info → staran-0.2.4.dist-info}/licenses/LICENSE +0 -0
- {staran-0.2.3.dist-info → staran-0.2.4.dist-info}/top_level.txt +0 -0
staran/__init__.py
CHANGED
@@ -152,50 +152,56 @@ SQL工具:
|
|
152
152
|
|
153
153
|
# 导入主要功能
|
154
154
|
from .tools import Date
|
155
|
-
from .
|
155
|
+
from .features import (
|
156
|
+
TableSchema, FeatureGenerator, FeatureManager, FeatureTableManager,
|
157
|
+
FeatureConfig, DatabaseType
|
158
|
+
)
|
159
|
+
from .engines import SparkEngine, HiveEngine, create_engine
|
156
160
|
|
157
|
-
#
|
161
|
+
# 图灵平台引擎 (可选导入,避免依赖问题)
|
158
162
|
try:
|
159
|
-
from .
|
160
|
-
|
161
|
-
create_turing_integration,
|
162
|
-
quick_download,
|
163
|
-
quick_feature_pipeline
|
164
|
-
)
|
163
|
+
from .engines import TuringEngine, create_turing_engine
|
164
|
+
from .features import quick_create_and_download
|
165
165
|
_TURING_AVAILABLE = True
|
166
166
|
except ImportError:
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
quick_download = None
|
171
|
-
quick_feature_pipeline = None
|
167
|
+
TuringEngine = None
|
168
|
+
create_turing_engine = None
|
169
|
+
quick_create_and_download = None
|
172
170
|
_TURING_AVAILABLE = False
|
173
171
|
|
172
|
+
# 向后兼容
|
173
|
+
SQLManager = FeatureManager
|
174
|
+
SparkSQLGenerator = SparkEngine # 向后兼容
|
175
|
+
|
174
176
|
# 主要导出
|
175
177
|
__all__ = [
|
176
178
|
'Date',
|
177
179
|
'TableSchema',
|
178
180
|
'FeatureGenerator',
|
179
181
|
'FeatureConfig',
|
180
|
-
'
|
181
|
-
'SQLManager',
|
182
|
+
'FeatureManager',
|
182
183
|
'FeatureTableManager',
|
183
|
-
'DatabaseType'
|
184
|
+
'DatabaseType',
|
185
|
+
'SparkEngine',
|
186
|
+
'HiveEngine',
|
187
|
+
'create_engine',
|
188
|
+
# 向后兼容
|
189
|
+
'SQLManager',
|
190
|
+
'SparkSQLGenerator'
|
184
191
|
]
|
185
192
|
|
186
|
-
#
|
193
|
+
# 如果图灵引擎可用,添加到导出列表
|
187
194
|
if _TURING_AVAILABLE:
|
188
195
|
__all__.extend([
|
189
|
-
'
|
190
|
-
'
|
191
|
-
'
|
192
|
-
'quick_feature_pipeline'
|
196
|
+
'TuringEngine',
|
197
|
+
'create_turing_engine',
|
198
|
+
'quick_create_and_download'
|
193
199
|
])
|
194
200
|
|
195
201
|
# 包信息
|
196
|
-
__version__ = '
|
202
|
+
__version__ = '2.0.0'
|
197
203
|
__author__ = 'Staran Team'
|
198
|
-
__description__ = 'Smart feature engineering toolkit with
|
204
|
+
__description__ = 'Smart feature engineering toolkit with modular engine architecture'
|
199
205
|
__license__ = 'MIT'
|
200
206
|
|
201
207
|
# 便捷函数示例
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: staran
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.4
|
4
4
|
Summary: staran - 高性能Python工具库
|
5
5
|
Home-page: https://github.com/starlxa/staran
|
6
6
|
Author: StarAn
|
@@ -30,12 +30,15 @@ Dynamic: summary
|
|
30
30
|
|
31
31
|
Staran是一个强大的特征工程和数据处理工具包,提供从数据到模型的完整解决方案。特别针对工银图灵平台优化,让特征工程和模型训练变得前所未有的简单。
|
32
32
|
|
33
|
-
## ✨
|
33
|
+
## ✨ v0.2.4 新特性
|
34
34
|
|
35
|
-
-
|
36
|
-
-
|
37
|
-
-
|
38
|
-
-
|
35
|
+
- �️ **模块化引擎架构** - 独立的引擎模块,支持Spark、Hive、图灵平台
|
36
|
+
- 🔧 **统一接口设计** - 所有引擎提供一致的SQL生成、执行和下载接口
|
37
|
+
- 🎯 **继承复用架构** - TuringEngine继承SparkEngine,复用SQL生成逻辑
|
38
|
+
- 📦 **清晰代码分离** - SQL生成与平台特定执行逻辑完全分离
|
39
|
+
- � **易于扩展** - 新增数据库支持只需实现BaseEngine接口
|
40
|
+
- � **独立引擎存储** - engines/文件夹专门存放所有数据库引擎
|
41
|
+
- 🔄 **向后兼容** - 保持对原有API的完全兼容
|
39
42
|
|
40
43
|
## 🚀 快速开始
|
41
44
|
|
@@ -59,10 +62,30 @@ date3 = Date(2025, 4, 15) # 输出: 2025-04-15
|
|
59
62
|
new_date = date1.add_months(2) # 输出: 202506 (保持YYYYMM格式)
|
60
63
|
```
|
61
64
|
|
65
|
+
### 引擎架构 - 多平台支持
|
66
|
+
|
67
|
+
```python
|
68
|
+
from staran.engines import create_engine, create_turing_engine
|
69
|
+
|
70
|
+
# 1. 使用Spark引擎
|
71
|
+
spark_engine = create_engine('spark', 'analytics_db')
|
72
|
+
|
73
|
+
# 2. 使用Hive引擎
|
74
|
+
hive_engine = create_engine('hive', 'warehouse_db')
|
75
|
+
|
76
|
+
# 3. 使用图灵平台引擎 (继承Spark + turingPythonLib)
|
77
|
+
turing_engine = create_turing_engine('analytics_db')
|
78
|
+
|
79
|
+
# 统一接口 - 所有引擎都支持相同方法
|
80
|
+
sql = spark_engine.generate_aggregation_sql(schema, 2025, 7, ['sum', 'avg'])
|
81
|
+
result = turing_engine.create_table('my_table', sql, execute=True)
|
82
|
+
download = turing_engine.download_table_data('my_table', 'file:///nfsHome/data.parquet')
|
83
|
+
```
|
84
|
+
|
62
85
|
### 特征工程 - SQL自动生成
|
63
86
|
|
64
87
|
```python
|
65
|
-
from staran import TableSchema, FeatureGenerator,
|
88
|
+
from staran import TableSchema, FeatureGenerator, FeatureManager
|
66
89
|
|
67
90
|
# 1. 定义表结构
|
68
91
|
schema = TableSchema('user_behavior')
|
@@ -72,11 +95,11 @@ schema.add_field('amount', 'decimal', aggregatable=True)
|
|
72
95
|
schema.add_field('category', 'string')
|
73
96
|
schema.set_monthly_unique(True)
|
74
97
|
|
75
|
-
# 2.
|
76
|
-
manager =
|
98
|
+
# 2. 创建特征管理器 (基于引擎架构)
|
99
|
+
manager = FeatureManager('analytics_db', engine_type='spark')
|
77
100
|
|
78
101
|
# 3. 生成特征SQL
|
79
|
-
generator = FeatureGenerator(schema)
|
102
|
+
generator = FeatureGenerator(schema, manager)
|
80
103
|
result = generator.generate_feature_by_type('aggregation', 2025, 7)
|
81
104
|
print(result['sql']) # 自动生成的聚合特征SQL
|
82
105
|
```
|
@@ -84,40 +107,54 @@ print(result['sql']) # 自动生成的聚合特征SQL
|
|
84
107
|
### 🏦 图灵平台集成 - 一键ML流程
|
85
108
|
|
86
109
|
```python
|
87
|
-
from staran.
|
110
|
+
from staran.engines import create_turing_engine
|
88
111
|
|
89
|
-
# 1.
|
90
|
-
turing =
|
112
|
+
# 1. 创建图灵引擎
|
113
|
+
turing = create_turing_engine("ml_analytics")
|
91
114
|
|
92
|
-
# 2.
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
base_table="user_features",
|
99
|
-
output_dir="file:///nfsHome/ml_features/",
|
100
|
-
mode="cluster" # 使用集群模式处理大数据
|
115
|
+
# 2. 创建特征表
|
116
|
+
create_result = turing.create_table(
|
117
|
+
table_name="user_features_2025_07_raw",
|
118
|
+
select_sql="SELECT user_id, sum(amount) as total_amount FROM user_behavior GROUP BY user_id",
|
119
|
+
execute=True,
|
120
|
+
mode="cluster"
|
101
121
|
)
|
102
122
|
|
103
|
-
|
104
|
-
|
123
|
+
# 3. 下载特征数据
|
124
|
+
download_result = turing.download_table_data(
|
125
|
+
table_name="user_features_2025_07_raw",
|
126
|
+
output_path="file:///nfsHome/ml_features/user_features.parquet",
|
127
|
+
mode="cluster"
|
128
|
+
)
|
105
129
|
|
106
|
-
#
|
107
|
-
|
130
|
+
# 4. 批量下载查询结果
|
131
|
+
query_result = turing.download_query_result(
|
108
132
|
sql="SELECT user_id, label FROM ml.training_labels WHERE dt='2025-07-28'",
|
109
|
-
output_path="file:///nfsHome/ml_labels/"
|
110
|
-
mode="cluster"
|
133
|
+
output_path="file:///nfsHome/ml_labels/labels.parquet"
|
111
134
|
)
|
112
135
|
|
113
|
-
|
136
|
+
print(f"特征表创建: {create_result['status']}")
|
137
|
+
print(f"数据下载: {download_result['status']}")
|
114
138
|
```
|
115
139
|
|
116
140
|
## 📖 核心功能
|
117
141
|
|
118
|
-
###
|
142
|
+
### �️ 引擎架构设计
|
143
|
+
|
144
|
+
**模块化引擎架构,清晰分离关注点:**
|
119
145
|
|
120
|
-
|
146
|
+
```
|
147
|
+
BaseEngine (抽象基类)
|
148
|
+
├── SparkEngine (Spark SQL实现)
|
149
|
+
│ └── TuringEngine (继承Spark + turingPythonLib)
|
150
|
+
└── HiveEngine (Hive SQL实现)
|
151
|
+
```
|
152
|
+
|
153
|
+
| 引擎类型 | SQL生成 | 执行方式 | 下载方式 | 适用场景 |
|
154
|
+
|---------|---------|---------|---------|---------|
|
155
|
+
| SparkEngine | Spark SQL | 本地执行器 | DataFrame保存 | 本地开发、测试 |
|
156
|
+
| HiveEngine | Hive SQL | 本地执行器 | 目录导出 | 传统Hive环境 |
|
157
|
+
| TuringEngine | Spark SQL | turingPythonLib | tp.download() | 工银图灵平台 |
|
121
158
|
|
122
159
|
| 功能对比 | 原生turingPythonLib | Staran集成 |
|
123
160
|
|---------|-------------------|------------|
|
@@ -278,49 +315,49 @@ tomorrow = date.add_days(1) # 202504 (智能处理)
|
|
278
315
|
|
279
316
|
```
|
280
317
|
staran/
|
281
|
-
├── __init__.py # 主包入口,
|
318
|
+
├── __init__.py # 主包入口,v0.2.4功能导出
|
319
|
+
├── engines/ # 🆕 模块化引擎架构
|
320
|
+
│ ├── __init__.py # 引擎模块入口
|
321
|
+
│ ├── base.py # BaseEngine抽象基类
|
322
|
+
│ ├── spark.py # SparkEngine实现
|
323
|
+
│ ├── hive.py # HiveEngine实现
|
324
|
+
│ └── turing.py # TuringEngine (继承SparkEngine)
|
325
|
+
├── features/ # 🆕 特征工程模块
|
326
|
+
│ ├── __init__.py # 特征模块入口
|
327
|
+
│ ├── manager.py # FeatureManager (使用引擎架构)
|
328
|
+
│ ├── schema.py # 表结构定义
|
329
|
+
│ └── generator.py # 特征生成器
|
282
330
|
├── tools/
|
283
331
|
│ ├── __init__.py # 工具模块
|
284
332
|
│ └── date.py # Date类实现
|
285
|
-
├──
|
286
|
-
|
287
|
-
|
288
|
-
│ ├── turing_integration.py # 🆕 图灵平台完整集成
|
289
|
-
│ ├── schema.py # 表结构定义
|
290
|
-
│ ├── generator.py # 特征生成器 (已增强)
|
291
|
-
│ └── engines.py # SQL引擎(Spark等)
|
292
|
-
├── example_download.py # 🆕 下载功能演示
|
293
|
-
├── example_turing_platform.py # 🆕 图灵平台使用指南
|
294
|
-
├── setup.py # 安装配置
|
295
|
-
├── README.md # 本文档 (已更新)
|
296
|
-
└── DOWNLOAD_FEATURES_SUMMARY.py # 🆕 新功能详细说明
|
333
|
+
├── setup.py # 安装配置
|
334
|
+
├── README.md # 本文档 v0.2.4
|
335
|
+
└── quick-upload.sh # 快速部署脚本
|
297
336
|
```
|
298
337
|
|
299
338
|
## 🧪 快速测试
|
300
339
|
|
301
|
-
###
|
340
|
+
### 引擎架构测试
|
302
341
|
```python
|
303
|
-
from staran
|
342
|
+
from staran import create_engine, create_turing_engine
|
304
343
|
|
305
|
-
#
|
306
|
-
|
307
|
-
|
344
|
+
# 测试SparkEngine
|
345
|
+
spark = create_engine('spark')
|
346
|
+
print(f"Spark引擎: {spark.__class__.__name__}")
|
308
347
|
|
309
|
-
|
310
|
-
|
348
|
+
# 测试TuringEngine继承
|
349
|
+
turing = create_turing_engine("test_analytics")
|
350
|
+
print(f"Turing引擎父类: {turing.__class__.__bases__[0].__name__}")
|
351
|
+
print(f"是否为SparkEngine子类: {isinstance(turing, spark.__class__)}")
|
311
352
|
|
312
|
-
#
|
313
|
-
|
314
|
-
|
315
|
-
sql="SELECT 1 as test_col",
|
316
|
-
output_path="file:///nfsHome/test_data/"
|
317
|
-
)
|
318
|
-
print(f"快速下载测试: {result['status']}")
|
353
|
+
# 测试引擎功能
|
354
|
+
sql = turing.generate_sql("SELECT user_id, amount FROM users", {"table": "test"})
|
355
|
+
print(f"SQL生成测试: {'success' if sql else 'failed'}")
|
319
356
|
```
|
320
357
|
|
321
358
|
### 特征工程测试
|
322
359
|
```python
|
323
|
-
from staran import TableSchema,
|
360
|
+
from staran import TableSchema, FeatureManager
|
324
361
|
|
325
362
|
# 定义表结构
|
326
363
|
schema = TableSchema('user_stats')
|
@@ -329,16 +366,15 @@ schema.add_date_field('date', 'date')
|
|
329
366
|
schema.add_field('amount', 'decimal', aggregatable=True)
|
330
367
|
schema.set_monthly_unique(True)
|
331
368
|
|
332
|
-
#
|
333
|
-
manager =
|
334
|
-
generator = FeatureGenerator(schema)
|
369
|
+
# 创建管理器(使用引擎架构)
|
370
|
+
manager = FeatureManager(engine_type='spark', database='analytics_db')
|
335
371
|
|
336
372
|
# 生成特征并查看摘要
|
337
|
-
summary =
|
373
|
+
summary = manager.get_feature_summary(schema)
|
338
374
|
print(f"生成特征数: {summary['total']}")
|
339
375
|
|
340
376
|
# 生成聚合特征SQL
|
341
|
-
result =
|
377
|
+
result = manager.generate_feature_by_type(schema, 'aggregation', 2025, 7)
|
342
378
|
print("SQL长度:", len(result['sql']))
|
343
379
|
```
|
344
380
|
|
@@ -364,23 +400,29 @@ print(f"完整: {date.format_full()}") # 2025-04-01
|
|
364
400
|
import sys
|
365
401
|
sys.path.append("/nfsHome/staran") # 假设已上传staran包
|
366
402
|
|
367
|
-
#
|
368
|
-
from staran
|
369
|
-
turing =
|
370
|
-
print("
|
403
|
+
# 检查新引擎架构
|
404
|
+
from staran import create_turing_engine
|
405
|
+
turing = create_turing_engine("your_analytics_db")
|
406
|
+
print(f"✅ 引擎类型: {turing.__class__.__name__}")
|
407
|
+
print(f"✅ 继承关系: 继承自{turing.__class__.__bases__[0].__name__}")
|
408
|
+
print("🚀 环境就绪!开始特征工程之旅")
|
371
409
|
```
|
372
410
|
|
373
411
|
### 2. 完整ML流程
|
374
412
|
```python
|
375
|
-
#
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
413
|
+
# 使用新引擎架构进行特征工程
|
414
|
+
from staran import FeatureManager
|
415
|
+
|
416
|
+
# 创建基于Turing引擎的特征管理器
|
417
|
+
manager = FeatureManager(engine_type='turing', database='production_analytics')
|
418
|
+
|
419
|
+
# 执行SQL并下载结果
|
420
|
+
result = manager.execute_and_download(
|
421
|
+
sql="SELECT user_id, features FROM ml_features WHERE dt='2025-07-28'",
|
422
|
+
output_path="file:///nfsHome/ml_pipeline/"
|
381
423
|
)
|
382
424
|
|
383
|
-
print(f"✅
|
425
|
+
print(f"✅ 成功!使用{manager.engine.__class__.__name__}完成数据处理")
|
384
426
|
```
|
385
427
|
|
386
428
|
## 📊 性能优势
|
@@ -401,4 +443,4 @@ MIT License
|
|
401
443
|
|
402
444
|
---
|
403
445
|
|
404
|
-
**Staran
|
446
|
+
**Staran v0.2.4** - 模块化引擎架构,让机器学习特征工程变得前所未有的简单 🌟
|
@@ -0,0 +1,8 @@
|
|
1
|
+
staran/__init__.py,sha256=wUE__5gRPVTm7Epdrc9cskI2VtgbmhCnGr63TE482dg,6768
|
2
|
+
staran/tools/__init__.py,sha256=KtudrYnxKD9HZEL4H-mrWlKrmsI3rYjJrLeC9YDTpG4,1054
|
3
|
+
staran/tools/date.py,sha256=-QyEMWVx6czMuOIwcV7kR3gBMRVOwb5qevo7GEFSJKE,10488
|
4
|
+
staran-0.2.4.dist-info/licenses/LICENSE,sha256=2EmsBIyDCono4iVXNpv5_px9qt2b7hfPq1WuyGVMNP4,1361
|
5
|
+
staran-0.2.4.dist-info/METADATA,sha256=4LPrB-WKoZ7AGGHon0uA1kZDDaHeX8zv1prSXuJYWwc,14510
|
6
|
+
staran-0.2.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
7
|
+
staran-0.2.4.dist-info/top_level.txt,sha256=NOUZtXSh5oSIEjHrC0lQ9WmoKtD010Q00dghWyag-Zs,7
|
8
|
+
staran-0.2.4.dist-info/RECORD,,
|
staran-0.2.3.dist-info/RECORD
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
staran/__init__.py,sha256=qB9YURCWE6RCW9_Z5Z0V6HwgjAD_L3Z2zeQz0qKZ5p8,6725
|
2
|
-
staran/tools/__init__.py,sha256=KtudrYnxKD9HZEL4H-mrWlKrmsI3rYjJrLeC9YDTpG4,1054
|
3
|
-
staran/tools/date.py,sha256=-QyEMWVx6czMuOIwcV7kR3gBMRVOwb5qevo7GEFSJKE,10488
|
4
|
-
staran-0.2.3.dist-info/licenses/LICENSE,sha256=2EmsBIyDCono4iVXNpv5_px9qt2b7hfPq1WuyGVMNP4,1361
|
5
|
-
staran-0.2.3.dist-info/METADATA,sha256=boxrse5byOPOWVmUOftYAjDobg26oqbLB0tupGB54S8,12719
|
6
|
-
staran-0.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
7
|
-
staran-0.2.3.dist-info/top_level.txt,sha256=NOUZtXSh5oSIEjHrC0lQ9WmoKtD010Q00dghWyag-Zs,7
|
8
|
-
staran-0.2.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|