staran 0.2.3__tar.gz → 0.2.4__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: staran
3
- Version: 0.2.3
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
- ## ✨ v1.2.0 新特性
33
+ ## ✨ v0.2.4 新特性
34
34
 
35
- - 🏦 **图灵平台完整集成** - 无缝集成turingPythonLib,简化95%代码
36
- - 📥 **智能数据下载** - 一键从Hive/Hadoop下载特征数据
37
- - 🔄 **批量特征管理** - 自动化特征表创建、命名和下载
38
- - 🎯 **端到端ML流程** - 从特征工程到模型训练数据的完整自动化
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, SQLManager
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. 创建SQL管理器
76
- manager = SQLManager('analytics_db')
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.sql.turing_integration import create_turing_integration
110
+ from staran.engines import create_turing_engine
88
111
 
89
- # 1. 创建图灵平台集成实例
90
- turing = create_turing_integration("ml_analytics")
112
+ # 1. 创建图灵引擎
113
+ turing = create_turing_engine("ml_analytics")
91
114
 
92
- # 2. 一键特征工程 + 数据下载
93
- result = turing.create_and_download_features(
94
- feature_sqls=[
95
- "SELECT user_id, sum(amount) as total_amount FROM user_behavior GROUP BY user_id",
96
- "SELECT user_id, count(*) as behavior_count FROM user_behavior GROUP BY user_id"
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
- print(f"成功创建 {result['summary']['created_successfully']} 个特征表")
104
- print(f"成功下载 {result['summary']['downloaded_successfully']} 个数据集")
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
- # 3. 下载标签数据
107
- labels = turing.download_with_turinglib(
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
- # 4. 现在可以开始模型训练了!
136
+ print(f"特征表创建: {create_result['status']}")
137
+ print(f"数据下载: {download_result['status']}")
114
138
  ```
115
139
 
116
140
  ## 📖 核心功能
117
141
 
118
- ### 🏦 图灵平台集成 - 终极ML解决方案
142
+ ### �️ 引擎架构设计
143
+
144
+ **模块化引擎架构,清晰分离关注点:**
119
145
 
120
- **专为工银图灵平台设计,大幅简化turingPythonLib使用:**
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 # 主包入口,v1.2.0功能导出
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
- ├── sql/
286
- ├── __init__.py # SQL模块
287
- │ ├── manager.py # 🆕 SQL中央管理器 + 下载功能
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.sql.turing_integration import create_turing_integration
342
+ from staran import create_engine, create_turing_engine
304
343
 
305
- # 测试图灵平台环境
306
- turing = create_turing_integration("test_analytics")
307
- platform_info = turing.get_platform_info()
344
+ # 测试SparkEngine
345
+ spark = create_engine('spark')
346
+ print(f"Spark引擎: {spark.__class__.__name__}")
308
347
 
309
- print(f"turingPythonLib可用: {platform_info['turinglib_available']}")
310
- print(f"图灵环境检测: {platform_info['nfs_home_exists']}")
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
- from staran.sql.turing_integration import quick_download
314
- result = quick_download(
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, FeatureGenerator, SQLManager
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 = SQLManager('analytics_db')
334
- generator = FeatureGenerator(schema)
369
+ # 创建管理器(使用引擎架构)
370
+ manager = FeatureManager(engine_type='spark', database='analytics_db')
335
371
 
336
372
  # 生成特征并查看摘要
337
- summary = generator.get_feature_summary()
373
+ summary = manager.get_feature_summary(schema)
338
374
  print(f"生成特征数: {summary['total']}")
339
375
 
340
376
  # 生成聚合特征SQL
341
- result = generator.generate_feature_by_type('aggregation', 2025, 7)
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.sql.turing_integration import create_turing_integration
369
- turing = create_turing_integration("your_analytics_db")
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
- result = turing.create_and_download_features(
377
- feature_sqls=your_feature_sqls,
378
- base_table="production_features",
379
- output_dir="file:///nfsHome/ml_pipeline/",
380
- mode="cluster"
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"✅ 成功!{result['summary']['downloaded_successfully']} 个数据集已准备就绪")
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 v1.2.0** - 让机器学习特征工程变得前所未有的简单 🌟
446
+ **Staran v0.2.4** - 模块化引擎架构,让机器学习特征工程变得前所未有的简单 🌟
@@ -4,12 +4,15 @@
4
4
 
5
5
  Staran是一个强大的特征工程和数据处理工具包,提供从数据到模型的完整解决方案。特别针对工银图灵平台优化,让特征工程和模型训练变得前所未有的简单。
6
6
 
7
- ## ✨ v1.2.0 新特性
7
+ ## ✨ v0.2.4 新特性
8
8
 
9
- - 🏦 **图灵平台完整集成** - 无缝集成turingPythonLib,简化95%代码
10
- - 📥 **智能数据下载** - 一键从Hive/Hadoop下载特征数据
11
- - 🔄 **批量特征管理** - 自动化特征表创建、命名和下载
12
- - 🎯 **端到端ML流程** - 从特征工程到模型训练数据的完整自动化
9
+ - �️ **模块化引擎架构** - 独立的引擎模块,支持Spark、Hive、图灵平台
10
+ - 🔧 **统一接口设计** - 所有引擎提供一致的SQL生成、执行和下载接口
11
+ - 🎯 **继承复用架构** - TuringEngine继承SparkEngine,复用SQL生成逻辑
12
+ - 📦 **清晰代码分离** - SQL生成与平台特定执行逻辑完全分离
13
+ - � **易于扩展** - 新增数据库支持只需实现BaseEngine接口
14
+ - � **独立引擎存储** - engines/文件夹专门存放所有数据库引擎
15
+ - 🔄 **向后兼容** - 保持对原有API的完全兼容
13
16
 
14
17
  ## 🚀 快速开始
15
18
 
@@ -33,10 +36,30 @@ date3 = Date(2025, 4, 15) # 输出: 2025-04-15
33
36
  new_date = date1.add_months(2) # 输出: 202506 (保持YYYYMM格式)
34
37
  ```
35
38
 
39
+ ### 引擎架构 - 多平台支持
40
+
41
+ ```python
42
+ from staran.engines import create_engine, create_turing_engine
43
+
44
+ # 1. 使用Spark引擎
45
+ spark_engine = create_engine('spark', 'analytics_db')
46
+
47
+ # 2. 使用Hive引擎
48
+ hive_engine = create_engine('hive', 'warehouse_db')
49
+
50
+ # 3. 使用图灵平台引擎 (继承Spark + turingPythonLib)
51
+ turing_engine = create_turing_engine('analytics_db')
52
+
53
+ # 统一接口 - 所有引擎都支持相同方法
54
+ sql = spark_engine.generate_aggregation_sql(schema, 2025, 7, ['sum', 'avg'])
55
+ result = turing_engine.create_table('my_table', sql, execute=True)
56
+ download = turing_engine.download_table_data('my_table', 'file:///nfsHome/data.parquet')
57
+ ```
58
+
36
59
  ### 特征工程 - SQL自动生成
37
60
 
38
61
  ```python
39
- from staran import TableSchema, FeatureGenerator, SQLManager
62
+ from staran import TableSchema, FeatureGenerator, FeatureManager
40
63
 
41
64
  # 1. 定义表结构
42
65
  schema = TableSchema('user_behavior')
@@ -46,11 +69,11 @@ schema.add_field('amount', 'decimal', aggregatable=True)
46
69
  schema.add_field('category', 'string')
47
70
  schema.set_monthly_unique(True)
48
71
 
49
- # 2. 创建SQL管理器
50
- manager = SQLManager('analytics_db')
72
+ # 2. 创建特征管理器 (基于引擎架构)
73
+ manager = FeatureManager('analytics_db', engine_type='spark')
51
74
 
52
75
  # 3. 生成特征SQL
53
- generator = FeatureGenerator(schema)
76
+ generator = FeatureGenerator(schema, manager)
54
77
  result = generator.generate_feature_by_type('aggregation', 2025, 7)
55
78
  print(result['sql']) # 自动生成的聚合特征SQL
56
79
  ```
@@ -58,40 +81,54 @@ print(result['sql']) # 自动生成的聚合特征SQL
58
81
  ### 🏦 图灵平台集成 - 一键ML流程
59
82
 
60
83
  ```python
61
- from staran.sql.turing_integration import create_turing_integration
84
+ from staran.engines import create_turing_engine
62
85
 
63
- # 1. 创建图灵平台集成实例
64
- turing = create_turing_integration("ml_analytics")
86
+ # 1. 创建图灵引擎
87
+ turing = create_turing_engine("ml_analytics")
65
88
 
66
- # 2. 一键特征工程 + 数据下载
67
- result = turing.create_and_download_features(
68
- feature_sqls=[
69
- "SELECT user_id, sum(amount) as total_amount FROM user_behavior GROUP BY user_id",
70
- "SELECT user_id, count(*) as behavior_count FROM user_behavior GROUP BY user_id"
71
- ],
72
- base_table="user_features",
73
- output_dir="file:///nfsHome/ml_features/",
74
- mode="cluster" # 使用集群模式处理大数据
89
+ # 2. 创建特征表
90
+ create_result = turing.create_table(
91
+ table_name="user_features_2025_07_raw",
92
+ select_sql="SELECT user_id, sum(amount) as total_amount FROM user_behavior GROUP BY user_id",
93
+ execute=True,
94
+ mode="cluster"
75
95
  )
76
96
 
77
- print(f"成功创建 {result['summary']['created_successfully']} 个特征表")
78
- print(f"成功下载 {result['summary']['downloaded_successfully']} 个数据集")
97
+ # 3. 下载特征数据
98
+ download_result = turing.download_table_data(
99
+ table_name="user_features_2025_07_raw",
100
+ output_path="file:///nfsHome/ml_features/user_features.parquet",
101
+ mode="cluster"
102
+ )
79
103
 
80
- # 3. 下载标签数据
81
- labels = turing.download_with_turinglib(
104
+ # 4. 批量下载查询结果
105
+ query_result = turing.download_query_result(
82
106
  sql="SELECT user_id, label FROM ml.training_labels WHERE dt='2025-07-28'",
83
- output_path="file:///nfsHome/ml_labels/",
84
- mode="cluster"
107
+ output_path="file:///nfsHome/ml_labels/labels.parquet"
85
108
  )
86
109
 
87
- # 4. 现在可以开始模型训练了!
110
+ print(f"特征表创建: {create_result['status']}")
111
+ print(f"数据下载: {download_result['status']}")
88
112
  ```
89
113
 
90
114
  ## 📖 核心功能
91
115
 
92
- ### 🏦 图灵平台集成 - 终极ML解决方案
116
+ ### �️ 引擎架构设计
117
+
118
+ **模块化引擎架构,清晰分离关注点:**
93
119
 
94
- **专为工银图灵平台设计,大幅简化turingPythonLib使用:**
120
+ ```
121
+ BaseEngine (抽象基类)
122
+ ├── SparkEngine (Spark SQL实现)
123
+ │ └── TuringEngine (继承Spark + turingPythonLib)
124
+ └── HiveEngine (Hive SQL实现)
125
+ ```
126
+
127
+ | 引擎类型 | SQL生成 | 执行方式 | 下载方式 | 适用场景 |
128
+ |---------|---------|---------|---------|---------|
129
+ | SparkEngine | Spark SQL | 本地执行器 | DataFrame保存 | 本地开发、测试 |
130
+ | HiveEngine | Hive SQL | 本地执行器 | 目录导出 | 传统Hive环境 |
131
+ | TuringEngine | Spark SQL | turingPythonLib | tp.download() | 工银图灵平台 |
95
132
 
96
133
  | 功能对比 | 原生turingPythonLib | Staran集成 |
97
134
  |---------|-------------------|------------|
@@ -252,49 +289,49 @@ tomorrow = date.add_days(1) # 202504 (智能处理)
252
289
 
253
290
  ```
254
291
  staran/
255
- ├── __init__.py # 主包入口,v1.2.0功能导出
292
+ ├── __init__.py # 主包入口,v0.2.4功能导出
293
+ ├── engines/ # 🆕 模块化引擎架构
294
+ │ ├── __init__.py # 引擎模块入口
295
+ │ ├── base.py # BaseEngine抽象基类
296
+ │ ├── spark.py # SparkEngine实现
297
+ │ ├── hive.py # HiveEngine实现
298
+ │ └── turing.py # TuringEngine (继承SparkEngine)
299
+ ├── features/ # 🆕 特征工程模块
300
+ │ ├── __init__.py # 特征模块入口
301
+ │ ├── manager.py # FeatureManager (使用引擎架构)
302
+ │ ├── schema.py # 表结构定义
303
+ │ └── generator.py # 特征生成器
256
304
  ├── tools/
257
305
  │ ├── __init__.py # 工具模块
258
306
  │ └── date.py # Date类实现
259
- ├── sql/
260
- ├── __init__.py # SQL模块
261
- │ ├── manager.py # 🆕 SQL中央管理器 + 下载功能
262
- │ ├── turing_integration.py # 🆕 图灵平台完整集成
263
- │ ├── schema.py # 表结构定义
264
- │ ├── generator.py # 特征生成器 (已增强)
265
- │ └── engines.py # SQL引擎(Spark等)
266
- ├── example_download.py # 🆕 下载功能演示
267
- ├── example_turing_platform.py # 🆕 图灵平台使用指南
268
- ├── setup.py # 安装配置
269
- ├── README.md # 本文档 (已更新)
270
- └── DOWNLOAD_FEATURES_SUMMARY.py # 🆕 新功能详细说明
307
+ ├── setup.py # 安装配置
308
+ ├── README.md # 本文档 v0.2.4
309
+ └── quick-upload.sh # 快速部署脚本
271
310
  ```
272
311
 
273
312
  ## 🧪 快速测试
274
313
 
275
- ### 图灵平台集成测试
314
+ ### 引擎架构测试
276
315
  ```python
277
- from staran.sql.turing_integration import create_turing_integration
316
+ from staran import create_engine, create_turing_engine
278
317
 
279
- # 测试图灵平台环境
280
- turing = create_turing_integration("test_analytics")
281
- platform_info = turing.get_platform_info()
318
+ # 测试SparkEngine
319
+ spark = create_engine('spark')
320
+ print(f"Spark引擎: {spark.__class__.__name__}")
282
321
 
283
- print(f"turingPythonLib可用: {platform_info['turinglib_available']}")
284
- print(f"图灵环境检测: {platform_info['nfs_home_exists']}")
322
+ # 测试TuringEngine继承
323
+ turing = create_turing_engine("test_analytics")
324
+ print(f"Turing引擎父类: {turing.__class__.__bases__[0].__name__}")
325
+ print(f"是否为SparkEngine子类: {isinstance(turing, spark.__class__)}")
285
326
 
286
- # 测试快速下载
287
- from staran.sql.turing_integration import quick_download
288
- result = quick_download(
289
- sql="SELECT 1 as test_col",
290
- output_path="file:///nfsHome/test_data/"
291
- )
292
- print(f"快速下载测试: {result['status']}")
327
+ # 测试引擎功能
328
+ sql = turing.generate_sql("SELECT user_id, amount FROM users", {"table": "test"})
329
+ print(f"SQL生成测试: {'success' if sql else 'failed'}")
293
330
  ```
294
331
 
295
332
  ### 特征工程测试
296
333
  ```python
297
- from staran import TableSchema, FeatureGenerator, SQLManager
334
+ from staran import TableSchema, FeatureManager
298
335
 
299
336
  # 定义表结构
300
337
  schema = TableSchema('user_stats')
@@ -303,16 +340,15 @@ schema.add_date_field('date', 'date')
303
340
  schema.add_field('amount', 'decimal', aggregatable=True)
304
341
  schema.set_monthly_unique(True)
305
342
 
306
- # 创建管理器和生成器
307
- manager = SQLManager('analytics_db')
308
- generator = FeatureGenerator(schema)
343
+ # 创建管理器(使用引擎架构)
344
+ manager = FeatureManager(engine_type='spark', database='analytics_db')
309
345
 
310
346
  # 生成特征并查看摘要
311
- summary = generator.get_feature_summary()
347
+ summary = manager.get_feature_summary(schema)
312
348
  print(f"生成特征数: {summary['total']}")
313
349
 
314
350
  # 生成聚合特征SQL
315
- result = generator.generate_feature_by_type('aggregation', 2025, 7)
351
+ result = manager.generate_feature_by_type(schema, 'aggregation', 2025, 7)
316
352
  print("SQL长度:", len(result['sql']))
317
353
  ```
318
354
 
@@ -338,23 +374,29 @@ print(f"完整: {date.format_full()}") # 2025-04-01
338
374
  import sys
339
375
  sys.path.append("/nfsHome/staran") # 假设已上传staran包
340
376
 
341
- # 检查环境
342
- from staran.sql.turing_integration import create_turing_integration
343
- turing = create_turing_integration("your_analytics_db")
344
- print("环境就绪!开始特征工程之旅 🚀")
377
+ # 检查新引擎架构
378
+ from staran import create_turing_engine
379
+ turing = create_turing_engine("your_analytics_db")
380
+ print(f" 引擎类型: {turing.__class__.__name__}")
381
+ print(f"✅ 继承关系: 继承自{turing.__class__.__bases__[0].__name__}")
382
+ print("🚀 环境就绪!开始特征工程之旅")
345
383
  ```
346
384
 
347
385
  ### 2. 完整ML流程
348
386
  ```python
349
- # 一键完成特征工程到模型训练数据准备
350
- result = turing.create_and_download_features(
351
- feature_sqls=your_feature_sqls,
352
- base_table="production_features",
353
- output_dir="file:///nfsHome/ml_pipeline/",
354
- mode="cluster"
387
+ # 使用新引擎架构进行特征工程
388
+ from staran import FeatureManager
389
+
390
+ # 创建基于Turing引擎的特征管理器
391
+ manager = FeatureManager(engine_type='turing', database='production_analytics')
392
+
393
+ # 执行SQL并下载结果
394
+ result = manager.execute_and_download(
395
+ sql="SELECT user_id, features FROM ml_features WHERE dt='2025-07-28'",
396
+ output_path="file:///nfsHome/ml_pipeline/"
355
397
  )
356
398
 
357
- print(f"✅ 成功!{result['summary']['downloaded_successfully']} 个数据集已准备就绪")
399
+ print(f"✅ 成功!使用{manager.engine.__class__.__name__}完成数据处理")
358
400
  ```
359
401
 
360
402
  ## 📊 性能优势
@@ -375,4 +417,4 @@ MIT License
375
417
 
376
418
  ---
377
419
 
378
- **Staran v1.2.0** - 让机器学习特征工程变得前所未有的简单 🌟
420
+ **Staran v0.2.4** - 模块化引擎架构,让机器学习特征工程变得前所未有的简单 🌟
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='staran',
5
- version='0.2.3',
5
+ version='0.2.4',
6
6
  description='staran - 高性能Python工具库',
7
7
  long_description=open('README.md', encoding='utf-8').read(),
8
8
  long_description_content_type='text/markdown',
@@ -152,50 +152,56 @@ SQL工具:
152
152
 
153
153
  # 导入主要功能
154
154
  from .tools import Date
155
- from .sql import TableSchema, FeatureGenerator, SparkSQLGenerator, SQLManager, DatabaseType, FeatureTableManager, FeatureConfig
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 .sql.turing_integration import (
160
- TuringPlatformIntegration,
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
- # 在没有turingPythonLib的环境中,这些功能不可用
168
- TuringPlatformIntegration = None
169
- create_turing_integration = None
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
- 'SparkSQLGenerator',
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
- 'TuringPlatformIntegration',
190
- 'create_turing_integration',
191
- 'quick_download',
192
- 'quick_feature_pipeline'
196
+ 'TuringEngine',
197
+ 'create_turing_engine',
198
+ 'quick_create_and_download'
193
199
  ])
194
200
 
195
201
  # 包信息
196
- __version__ = '1.2.0'
202
+ __version__ = '2.0.0'
197
203
  __author__ = 'Staran Team'
198
- __description__ = 'Smart feature engineering toolkit with Turing platform integration'
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
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
- ## ✨ v1.2.0 新特性
33
+ ## ✨ v0.2.4 新特性
34
34
 
35
- - 🏦 **图灵平台完整集成** - 无缝集成turingPythonLib,简化95%代码
36
- - 📥 **智能数据下载** - 一键从Hive/Hadoop下载特征数据
37
- - 🔄 **批量特征管理** - 自动化特征表创建、命名和下载
38
- - 🎯 **端到端ML流程** - 从特征工程到模型训练数据的完整自动化
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, SQLManager
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. 创建SQL管理器
76
- manager = SQLManager('analytics_db')
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.sql.turing_integration import create_turing_integration
110
+ from staran.engines import create_turing_engine
88
111
 
89
- # 1. 创建图灵平台集成实例
90
- turing = create_turing_integration("ml_analytics")
112
+ # 1. 创建图灵引擎
113
+ turing = create_turing_engine("ml_analytics")
91
114
 
92
- # 2. 一键特征工程 + 数据下载
93
- result = turing.create_and_download_features(
94
- feature_sqls=[
95
- "SELECT user_id, sum(amount) as total_amount FROM user_behavior GROUP BY user_id",
96
- "SELECT user_id, count(*) as behavior_count FROM user_behavior GROUP BY user_id"
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
- print(f"成功创建 {result['summary']['created_successfully']} 个特征表")
104
- print(f"成功下载 {result['summary']['downloaded_successfully']} 个数据集")
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
- # 3. 下载标签数据
107
- labels = turing.download_with_turinglib(
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
- # 4. 现在可以开始模型训练了!
136
+ print(f"特征表创建: {create_result['status']}")
137
+ print(f"数据下载: {download_result['status']}")
114
138
  ```
115
139
 
116
140
  ## 📖 核心功能
117
141
 
118
- ### 🏦 图灵平台集成 - 终极ML解决方案
142
+ ### �️ 引擎架构设计
143
+
144
+ **模块化引擎架构,清晰分离关注点:**
119
145
 
120
- **专为工银图灵平台设计,大幅简化turingPythonLib使用:**
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 # 主包入口,v1.2.0功能导出
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
- ├── sql/
286
- ├── __init__.py # SQL模块
287
- │ ├── manager.py # 🆕 SQL中央管理器 + 下载功能
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.sql.turing_integration import create_turing_integration
342
+ from staran import create_engine, create_turing_engine
304
343
 
305
- # 测试图灵平台环境
306
- turing = create_turing_integration("test_analytics")
307
- platform_info = turing.get_platform_info()
344
+ # 测试SparkEngine
345
+ spark = create_engine('spark')
346
+ print(f"Spark引擎: {spark.__class__.__name__}")
308
347
 
309
- print(f"turingPythonLib可用: {platform_info['turinglib_available']}")
310
- print(f"图灵环境检测: {platform_info['nfs_home_exists']}")
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
- from staran.sql.turing_integration import quick_download
314
- result = quick_download(
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, FeatureGenerator, SQLManager
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 = SQLManager('analytics_db')
334
- generator = FeatureGenerator(schema)
369
+ # 创建管理器(使用引擎架构)
370
+ manager = FeatureManager(engine_type='spark', database='analytics_db')
335
371
 
336
372
  # 生成特征并查看摘要
337
- summary = generator.get_feature_summary()
373
+ summary = manager.get_feature_summary(schema)
338
374
  print(f"生成特征数: {summary['total']}")
339
375
 
340
376
  # 生成聚合特征SQL
341
- result = generator.generate_feature_by_type('aggregation', 2025, 7)
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.sql.turing_integration import create_turing_integration
369
- turing = create_turing_integration("your_analytics_db")
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
- result = turing.create_and_download_features(
377
- feature_sqls=your_feature_sqls,
378
- base_table="production_features",
379
- output_dir="file:///nfsHome/ml_pipeline/",
380
- mode="cluster"
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"✅ 成功!{result['summary']['downloaded_successfully']} 个数据集已准备就绪")
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 v1.2.0** - 让机器学习特征工程变得前所未有的简单 🌟
446
+ **Staran v0.2.4** - 模块化引擎架构,让机器学习特征工程变得前所未有的简单 🌟
File without changes
File without changes
File without changes
File without changes