staran 0.2.2__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 +39 -5
- staran-0.2.4.dist-info/METADATA +446 -0
- staran-0.2.4.dist-info/RECORD +8 -0
- staran-0.2.2.dist-info/METADATA +0 -197
- staran-0.2.2.dist-info/RECORD +0 -8
- {staran-0.2.2.dist-info → staran-0.2.4.dist-info}/WHEEL +0 -0
- {staran-0.2.2.dist-info → staran-0.2.4.dist-info}/licenses/LICENSE +0 -0
- {staran-0.2.2.dist-info → staran-0.2.4.dist-info}/top_level.txt +0 -0
staran/__init__.py
CHANGED
@@ -152,22 +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
|
160
|
+
|
161
|
+
# 图灵平台引擎 (可选导入,避免依赖问题)
|
162
|
+
try:
|
163
|
+
from .engines import TuringEngine, create_turing_engine
|
164
|
+
from .features import quick_create_and_download
|
165
|
+
_TURING_AVAILABLE = True
|
166
|
+
except ImportError:
|
167
|
+
TuringEngine = None
|
168
|
+
create_turing_engine = None
|
169
|
+
quick_create_and_download = None
|
170
|
+
_TURING_AVAILABLE = False
|
171
|
+
|
172
|
+
# 向后兼容
|
173
|
+
SQLManager = FeatureManager
|
174
|
+
SparkSQLGenerator = SparkEngine # 向后兼容
|
156
175
|
|
157
176
|
# 主要导出
|
158
177
|
__all__ = [
|
159
178
|
'Date',
|
160
179
|
'TableSchema',
|
161
180
|
'FeatureGenerator',
|
162
|
-
'
|
181
|
+
'FeatureConfig',
|
182
|
+
'FeatureManager',
|
183
|
+
'FeatureTableManager',
|
184
|
+
'DatabaseType',
|
185
|
+
'SparkEngine',
|
186
|
+
'HiveEngine',
|
187
|
+
'create_engine',
|
188
|
+
# 向后兼容
|
163
189
|
'SQLManager',
|
164
|
-
'
|
190
|
+
'SparkSQLGenerator'
|
165
191
|
]
|
166
192
|
|
193
|
+
# 如果图灵引擎可用,添加到导出列表
|
194
|
+
if _TURING_AVAILABLE:
|
195
|
+
__all__.extend([
|
196
|
+
'TuringEngine',
|
197
|
+
'create_turing_engine',
|
198
|
+
'quick_create_and_download'
|
199
|
+
])
|
200
|
+
|
167
201
|
# 包信息
|
168
|
-
__version__ = '
|
202
|
+
__version__ = '2.0.0'
|
169
203
|
__author__ = 'Staran Team'
|
170
|
-
__description__ = '
|
204
|
+
__description__ = 'Smart feature engineering toolkit with modular engine architecture'
|
171
205
|
__license__ = 'MIT'
|
172
206
|
|
173
207
|
# 便捷函数示例
|
@@ -0,0 +1,446 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: staran
|
3
|
+
Version: 0.2.4
|
4
|
+
Summary: staran - 高性能Python工具库
|
5
|
+
Home-page: https://github.com/starlxa/staran
|
6
|
+
Author: StarAn
|
7
|
+
Author-email: starlxa@icloud.com
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
10
|
+
Requires-Python: >=3.7
|
11
|
+
Description-Content-Type: text/markdown
|
12
|
+
License-File: LICENSE
|
13
|
+
Requires-Dist: datetime
|
14
|
+
Requires-Dist: calendar
|
15
|
+
Requires-Dist: re
|
16
|
+
Dynamic: author
|
17
|
+
Dynamic: author-email
|
18
|
+
Dynamic: classifier
|
19
|
+
Dynamic: description
|
20
|
+
Dynamic: description-content-type
|
21
|
+
Dynamic: home-page
|
22
|
+
Dynamic: license-file
|
23
|
+
Dynamic: requires-dist
|
24
|
+
Dynamic: requires-python
|
25
|
+
Dynamic: summary
|
26
|
+
|
27
|
+
# Staran - 智能特征工程工具包
|
28
|
+
|
29
|
+
## � 专为机器学习设计的Python工具包
|
30
|
+
|
31
|
+
Staran是一个强大的特征工程和数据处理工具包,提供从数据到模型的完整解决方案。特别针对工银图灵平台优化,让特征工程和模型训练变得前所未有的简单。
|
32
|
+
|
33
|
+
## ✨ v0.2.4 新特性
|
34
|
+
|
35
|
+
- �️ **模块化引擎架构** - 独立的引擎模块,支持Spark、Hive、图灵平台
|
36
|
+
- 🔧 **统一接口设计** - 所有引擎提供一致的SQL生成、执行和下载接口
|
37
|
+
- 🎯 **继承复用架构** - TuringEngine继承SparkEngine,复用SQL生成逻辑
|
38
|
+
- 📦 **清晰代码分离** - SQL生成与平台特定执行逻辑完全分离
|
39
|
+
- � **易于扩展** - 新增数据库支持只需实现BaseEngine接口
|
40
|
+
- � **独立引擎存储** - engines/文件夹专门存放所有数据库引擎
|
41
|
+
- 🔄 **向后兼容** - 保持对原有API的完全兼容
|
42
|
+
|
43
|
+
## 🚀 快速开始
|
44
|
+
|
45
|
+
### 安装
|
46
|
+
```bash
|
47
|
+
pip install staran
|
48
|
+
# 或在图灵平台中直接使用
|
49
|
+
```
|
50
|
+
|
51
|
+
### 基础用法 - 日期处理
|
52
|
+
|
53
|
+
```python
|
54
|
+
from staran import Date
|
55
|
+
|
56
|
+
# 创建日期 - 智能格式记忆
|
57
|
+
date1 = Date('202504') # 输出: 202504 (记住年月格式)
|
58
|
+
date2 = Date('20250415') # 输出: 20250415 (记住完整格式)
|
59
|
+
date3 = Date(2025, 4, 15) # 输出: 2025-04-15
|
60
|
+
|
61
|
+
# 日期运算保持格式
|
62
|
+
new_date = date1.add_months(2) # 输出: 202506 (保持YYYYMM格式)
|
63
|
+
```
|
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
|
+
|
85
|
+
### 特征工程 - SQL自动生成
|
86
|
+
|
87
|
+
```python
|
88
|
+
from staran import TableSchema, FeatureGenerator, FeatureManager
|
89
|
+
|
90
|
+
# 1. 定义表结构
|
91
|
+
schema = TableSchema('user_behavior')
|
92
|
+
schema.add_primary_key('user_id', 'string')
|
93
|
+
schema.add_date_field('date', 'date')
|
94
|
+
schema.add_field('amount', 'decimal', aggregatable=True)
|
95
|
+
schema.add_field('category', 'string')
|
96
|
+
schema.set_monthly_unique(True)
|
97
|
+
|
98
|
+
# 2. 创建特征管理器 (基于引擎架构)
|
99
|
+
manager = FeatureManager('analytics_db', engine_type='spark')
|
100
|
+
|
101
|
+
# 3. 生成特征SQL
|
102
|
+
generator = FeatureGenerator(schema, manager)
|
103
|
+
result = generator.generate_feature_by_type('aggregation', 2025, 7)
|
104
|
+
print(result['sql']) # 自动生成的聚合特征SQL
|
105
|
+
```
|
106
|
+
|
107
|
+
### 🏦 图灵平台集成 - 一键ML流程
|
108
|
+
|
109
|
+
```python
|
110
|
+
from staran.engines import create_turing_engine
|
111
|
+
|
112
|
+
# 1. 创建图灵引擎
|
113
|
+
turing = create_turing_engine("ml_analytics")
|
114
|
+
|
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"
|
121
|
+
)
|
122
|
+
|
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
|
+
)
|
129
|
+
|
130
|
+
# 4. 批量下载查询结果
|
131
|
+
query_result = turing.download_query_result(
|
132
|
+
sql="SELECT user_id, label FROM ml.training_labels WHERE dt='2025-07-28'",
|
133
|
+
output_path="file:///nfsHome/ml_labels/labels.parquet"
|
134
|
+
)
|
135
|
+
|
136
|
+
print(f"特征表创建: {create_result['status']}")
|
137
|
+
print(f"数据下载: {download_result['status']}")
|
138
|
+
```
|
139
|
+
|
140
|
+
## 📖 核心功能
|
141
|
+
|
142
|
+
### �️ 引擎架构设计
|
143
|
+
|
144
|
+
**模块化引擎架构,清晰分离关注点:**
|
145
|
+
|
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() | 工银图灵平台 |
|
158
|
+
|
159
|
+
| 功能对比 | 原生turingPythonLib | Staran集成 |
|
160
|
+
|---------|-------------------|------------|
|
161
|
+
| 参数管理 | 手动构建完整参数字典 | 简化API,智能默认值 |
|
162
|
+
| 特征工程 | 手写SQL,手动管理表名 | 自动生成SQL,智能表名管理 |
|
163
|
+
| 批量操作 | 循环调用,手动错误处理 | 一键批量,完整错误处理 |
|
164
|
+
| 代码量 | 100+ 行样板代码 | 5-10行核心代码 |
|
165
|
+
|
166
|
+
```python
|
167
|
+
# 🚀 完整ML工作流示例
|
168
|
+
from staran.sql.turing_integration import create_turing_integration
|
169
|
+
|
170
|
+
turing = create_turing_integration("production_analytics")
|
171
|
+
|
172
|
+
# 步骤1: 读取原始数据
|
173
|
+
raw_data = turing.read_hive_table(
|
174
|
+
table_name="dwh.user_behavior_detail",
|
175
|
+
condition='pt_dt="2025-07-28" limit 500000',
|
176
|
+
local_path="/nfsHome/raw_data.csv"
|
177
|
+
)
|
178
|
+
|
179
|
+
# 步骤2: 一键特征工程
|
180
|
+
pipeline_result = turing.create_and_download_features(
|
181
|
+
feature_sqls=auto_generated_feature_sqls,
|
182
|
+
base_table="ml_user_features",
|
183
|
+
output_dir="file:///nfsHome/features/",
|
184
|
+
mode="cluster"
|
185
|
+
)
|
186
|
+
|
187
|
+
# 步骤3: 批量下载训练数据
|
188
|
+
batch_result = turing.feature_manager.batch_download_features(
|
189
|
+
base_table="ml_user_features",
|
190
|
+
year=2025, month=7,
|
191
|
+
output_dir="file:///nfsHome/training_data/",
|
192
|
+
mode="cluster"
|
193
|
+
)
|
194
|
+
|
195
|
+
# 现在可以直接用于模型训练!
|
196
|
+
```
|
197
|
+
|
198
|
+
### 🔧 智能特征工程 - 自动SQL生成
|
199
|
+
|
200
|
+
**支持4种特征类型的自动化生成:**
|
201
|
+
|
202
|
+
1. **原始特征拷贝** (Raw Copy) - 非聚合字段智能拷贝
|
203
|
+
2. **聚合统计特征** (Aggregation) - sum/avg/count/min/max等
|
204
|
+
3. **环比特征** (MoM) - 月度差分对比分析
|
205
|
+
4. **同比特征** (YoY) - 年度差分对比分析
|
206
|
+
|
207
|
+
```python
|
208
|
+
from staran import TableSchema, FeatureGenerator, FeatureConfig
|
209
|
+
|
210
|
+
# 定义表结构
|
211
|
+
schema = TableSchema('user_monthly_behavior')
|
212
|
+
schema.add_primary_key('user_id', 'string')
|
213
|
+
schema.add_date_field('month_date', 'date')
|
214
|
+
schema.add_field('purchase_amount', 'decimal', aggregatable=True)
|
215
|
+
schema.add_field('order_count', 'int', aggregatable=True)
|
216
|
+
schema.add_field('user_level', 'string')
|
217
|
+
|
218
|
+
# 配置特征生成策略
|
219
|
+
config = FeatureConfig()
|
220
|
+
config.enable_feature('aggregation') # 启用聚合特征
|
221
|
+
config.enable_feature('mom') # 启用环比特征
|
222
|
+
config.aggregation_types = ['sum', 'avg', 'count']
|
223
|
+
config.mom_periods = [1, 3] # 1月和3月环比
|
224
|
+
|
225
|
+
# 生成特征
|
226
|
+
generator = FeatureGenerator(schema)
|
227
|
+
generator.config = config
|
228
|
+
|
229
|
+
# 查看特征摘要
|
230
|
+
summary = generator.get_feature_summary()
|
231
|
+
print(f"将生成 {summary['total']} 个特征")
|
232
|
+
|
233
|
+
# 生成特定类型的SQL
|
234
|
+
agg_result = generator.generate_feature_by_type('aggregation', 2025, 7)
|
235
|
+
print("聚合特征SQL:", agg_result['sql'])
|
236
|
+
```
|
237
|
+
|
238
|
+
### 📥 智能数据下载 - 兼容turingPythonLib
|
239
|
+
|
240
|
+
**3种下载方式,满足不同需求:**
|
241
|
+
|
242
|
+
```python
|
243
|
+
from staran import SQLManager, FeatureTableManager
|
244
|
+
|
245
|
+
manager = SQLManager("analytics_db")
|
246
|
+
|
247
|
+
# 1. 基础数据下载
|
248
|
+
result = manager.download_data(
|
249
|
+
sql="SELECT * FROM user_behavior WHERE year=2025 AND month=7",
|
250
|
+
output_path="file:///nfsHome/data/user_behavior_202507/",
|
251
|
+
mode="cluster",
|
252
|
+
spark_resource={
|
253
|
+
'num_executors': '8',
|
254
|
+
'driver_memory': '8G',
|
255
|
+
'executor_memory': '8G'
|
256
|
+
}
|
257
|
+
)
|
258
|
+
|
259
|
+
# 2. 单个特征表下载
|
260
|
+
feature_manager = FeatureTableManager(manager)
|
261
|
+
single_result = feature_manager.download_feature_table(
|
262
|
+
table_name="analytics_db.user_features_2025_07_f001",
|
263
|
+
output_path="file:///nfsHome/features/agg_features/",
|
264
|
+
condition="WHERE purchase_amount > 1000"
|
265
|
+
)
|
266
|
+
|
267
|
+
# 3. 批量特征表下载
|
268
|
+
batch_result = feature_manager.batch_download_features(
|
269
|
+
base_table="user_features",
|
270
|
+
year=2025, month=7,
|
271
|
+
output_dir="file:///nfsHome/batch_features/",
|
272
|
+
feature_nums=[1, 2, 3] # 指定下载的特征编号
|
273
|
+
)
|
274
|
+
```
|
275
|
+
|
276
|
+
### 🗓️ Date工具 - 智能格式记忆
|
277
|
+
|
278
|
+
**Date类会根据输入格式自动设置默认输出格式:**
|
279
|
+
|
280
|
+
| 输入方式 | 默认输出 | 说明 |
|
281
|
+
|---------|---------|------|
|
282
|
+
| `Date('202504')` | `202504` | 年月紧凑格式 |
|
283
|
+
| `Date('20250415')` | `20250415` | 完整紧凑格式 |
|
284
|
+
| `Date(2025, 4)` | `2025-04` | 年月格式 |
|
285
|
+
| `Date(2025, 4, 15)` | `2025-04-15` | 完整格式 |
|
286
|
+
|
287
|
+
```python
|
288
|
+
date = Date('202504')
|
289
|
+
|
290
|
+
# 默认格式(保持输入风格)
|
291
|
+
print(date) # 202504
|
292
|
+
|
293
|
+
# 多种输出格式
|
294
|
+
print(date.format_full()) # 2025-04-01
|
295
|
+
print(date.format_chinese()) # 2025年04月01日
|
296
|
+
print(date.format_year_month()) # 2025-04
|
297
|
+
print(date.format_compact()) # 20250401
|
298
|
+
|
299
|
+
# 日期运算保持格式
|
300
|
+
next_month = date.add_months(1) # 202505
|
301
|
+
tomorrow = date.add_days(1) # 202504 (智能处理)
|
302
|
+
```
|
303
|
+
|
304
|
+
## 🎯 设计特色
|
305
|
+
|
306
|
+
- **🏦 图灵平台专用** - 深度集成turingPythonLib,简化95%代码
|
307
|
+
- **🚀 端到端自动化** - 从特征工程到模型训练数据的完整流程
|
308
|
+
- **📊 智能特征工程** - 自动生成4类特征SQL,无需手写复杂查询
|
309
|
+
- **📥 智能数据下载** - 兼容turingPythonLib格式,支持批量操作
|
310
|
+
- **🔄 智能表管理** - 自动生成规范表名,版本控制和生命周期管理
|
311
|
+
- **⚡ 简化API设计** - 直观易用,符合Python习惯
|
312
|
+
- **🛡️ 完整错误处理** - 智能重试、详细日志和操作报告
|
313
|
+
|
314
|
+
## 📁 项目结构
|
315
|
+
|
316
|
+
```
|
317
|
+
staran/
|
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 # 特征生成器
|
330
|
+
├── tools/
|
331
|
+
│ ├── __init__.py # 工具模块
|
332
|
+
│ └── date.py # Date类实现
|
333
|
+
├── setup.py # 安装配置
|
334
|
+
├── README.md # 本文档 v0.2.4
|
335
|
+
└── quick-upload.sh # 快速部署脚本
|
336
|
+
```
|
337
|
+
|
338
|
+
## 🧪 快速测试
|
339
|
+
|
340
|
+
### 引擎架构测试
|
341
|
+
```python
|
342
|
+
from staran import create_engine, create_turing_engine
|
343
|
+
|
344
|
+
# 测试SparkEngine
|
345
|
+
spark = create_engine('spark')
|
346
|
+
print(f"Spark引擎: {spark.__class__.__name__}")
|
347
|
+
|
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__)}")
|
352
|
+
|
353
|
+
# 测试引擎功能
|
354
|
+
sql = turing.generate_sql("SELECT user_id, amount FROM users", {"table": "test"})
|
355
|
+
print(f"SQL生成测试: {'success' if sql else 'failed'}")
|
356
|
+
```
|
357
|
+
|
358
|
+
### 特征工程测试
|
359
|
+
```python
|
360
|
+
from staran import TableSchema, FeatureManager
|
361
|
+
|
362
|
+
# 定义表结构
|
363
|
+
schema = TableSchema('user_stats')
|
364
|
+
schema.add_primary_key('user_id', 'string')
|
365
|
+
schema.add_date_field('date', 'date')
|
366
|
+
schema.add_field('amount', 'decimal', aggregatable=True)
|
367
|
+
schema.set_monthly_unique(True)
|
368
|
+
|
369
|
+
# 创建管理器(使用引擎架构)
|
370
|
+
manager = FeatureManager(engine_type='spark', database='analytics_db')
|
371
|
+
|
372
|
+
# 生成特征并查看摘要
|
373
|
+
summary = manager.get_feature_summary(schema)
|
374
|
+
print(f"生成特征数: {summary['total']}")
|
375
|
+
|
376
|
+
# 生成聚合特征SQL
|
377
|
+
result = manager.generate_feature_by_type(schema, 'aggregation', 2025, 7)
|
378
|
+
print("SQL长度:", len(result['sql']))
|
379
|
+
```
|
380
|
+
|
381
|
+
### Date工具测试
|
382
|
+
```python
|
383
|
+
from staran import Date
|
384
|
+
|
385
|
+
# 测试格式记忆
|
386
|
+
date = Date('202504')
|
387
|
+
print(f"原始: {date}") # 202504
|
388
|
+
print(f"加2月: {date.add_months(2)}") # 202506
|
389
|
+
|
390
|
+
# 测试多格式输出
|
391
|
+
print(f"中文: {date.format_chinese()}") # 2025年04月01日
|
392
|
+
print(f"完整: {date.format_full()}") # 2025-04-01
|
393
|
+
```
|
394
|
+
|
395
|
+
## 🚀 在图灵NoteBook中开始使用
|
396
|
+
|
397
|
+
### 1. 环境准备
|
398
|
+
```python
|
399
|
+
# 在图灵NoteBook中执行
|
400
|
+
import sys
|
401
|
+
sys.path.append("/nfsHome/staran") # 假设已上传staran包
|
402
|
+
|
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("🚀 环境就绪!开始特征工程之旅")
|
409
|
+
```
|
410
|
+
|
411
|
+
### 2. 完整ML流程
|
412
|
+
```python
|
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/"
|
423
|
+
)
|
424
|
+
|
425
|
+
print(f"✅ 成功!使用{manager.engine.__class__.__name__}完成数据处理")
|
426
|
+
```
|
427
|
+
|
428
|
+
## 📊 性能优势
|
429
|
+
|
430
|
+
### 开发效率提升
|
431
|
+
- **代码减少**: 从100+行样板代码降至5-10行核心逻辑
|
432
|
+
- **开发时间**: 特征工程时间减少80%
|
433
|
+
- **维护成本**: 自动化管理减少手动错误
|
434
|
+
|
435
|
+
### 运行性能优化
|
436
|
+
- **集群资源**: 智能Spark资源分配和优化
|
437
|
+
- **批量处理**: 并行下载和增量处理
|
438
|
+
- **错误恢复**: 自动重试和断点续传
|
439
|
+
|
440
|
+
## 📄 许可证
|
441
|
+
|
442
|
+
MIT License
|
443
|
+
|
444
|
+
---
|
445
|
+
|
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.2.dist-info/METADATA
DELETED
@@ -1,197 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.4
|
2
|
-
Name: staran
|
3
|
-
Version: 0.2.2
|
4
|
-
Summary: staran - 高性能Python工具库
|
5
|
-
Home-page: https://github.com/starlxa/staran
|
6
|
-
Author: StarAn
|
7
|
-
Author-email: starlxa@icloud.com
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
9
|
-
Classifier: License :: OSI Approved :: MIT License
|
10
|
-
Requires-Python: >=3.7
|
11
|
-
Description-Content-Type: text/markdown
|
12
|
-
License-File: LICENSE
|
13
|
-
Requires-Dist: datetime
|
14
|
-
Requires-Dist: calendar
|
15
|
-
Requires-Dist: re
|
16
|
-
Dynamic: author
|
17
|
-
Dynamic: author-email
|
18
|
-
Dynamic: classifier
|
19
|
-
Dynamic: description
|
20
|
-
Dynamic: description-content-type
|
21
|
-
Dynamic: home-page
|
22
|
-
Dynamic: license-file
|
23
|
-
Dynamic: requires-dist
|
24
|
-
Dynamic: requires-python
|
25
|
-
Dynamic: summary
|
26
|
-
|
27
|
-
# Staran - 简化的Python工具库
|
28
|
-
|
29
|
-
## 📦 轻量级Python实用工具集
|
30
|
-
|
31
|
-
Staran是一个基于Python标准库的实用工具库,提供日期处理、SQL生成等常用功能,无需复杂依赖。
|
32
|
-
|
33
|
-
## 🚀 快速开始
|
34
|
-
|
35
|
-
### 安装
|
36
|
-
```bash
|
37
|
-
pip install staran
|
38
|
-
```
|
39
|
-
|
40
|
-
### Date工具 - 智能日期处理
|
41
|
-
|
42
|
-
```python
|
43
|
-
from staran import Date
|
44
|
-
|
45
|
-
# 创建日期 - 智能格式记忆
|
46
|
-
date1 = Date('202504') # 输出: 202504 (记住年月格式)
|
47
|
-
date2 = Date('20250415') # 输出: 20250415 (记住完整格式)
|
48
|
-
date3 = Date(2025, 4, 15) # 输出: 2025-04-15
|
49
|
-
|
50
|
-
# 日期运算保持格式
|
51
|
-
new_date = date1.add_months(2) # 输出: 202506 (保持YYYYMM格式)
|
52
|
-
```
|
53
|
-
|
54
|
-
### SQL工具 - 数据分析SQL生成
|
55
|
-
|
56
|
-
```python
|
57
|
-
from staran import TableSchema, FeatureGenerator
|
58
|
-
|
59
|
-
# 定义表结构
|
60
|
-
schema = TableSchema('user_behavior')
|
61
|
-
schema.add_primary_key('user_id', 'string')
|
62
|
-
schema.add_date_field('date', 'date')
|
63
|
-
schema.add_field('amount', 'decimal', aggregatable=True)
|
64
|
-
schema.add_field('status', 'string')
|
65
|
-
schema.set_monthly_unique(True)
|
66
|
-
|
67
|
-
# 生成特征SQL
|
68
|
-
generator = FeatureGenerator(schema)
|
69
|
-
sql = generator.generate_spark_sql()
|
70
|
-
print(sql)
|
71
|
-
```
|
72
|
-
|
73
|
-
## 📖 主要功能
|
74
|
-
|
75
|
-
### 1. Date工具 - 智能格式记忆
|
76
|
-
Date类会根据输入格式自动设置默认输出格式:
|
77
|
-
|
78
|
-
| 输入方式 | 默认输出 | 说明 |
|
79
|
-
|---------|---------|------|
|
80
|
-
| `Date('202504')` | `202504` | 年月紧凑格式 |
|
81
|
-
| `Date('20250415')` | `20250415` | 完整紧凑格式 |
|
82
|
-
| `Date(2025, 4)` | `2025-04` | 年月格式 |
|
83
|
-
| `Date(2025, 4, 15)` | `2025-04-15` | 完整格式 |
|
84
|
-
|
85
|
-
### 2. SQL工具 - 特征工程SQL生成
|
86
|
-
基于表结构自动生成数据分析SQL,支持:
|
87
|
-
|
88
|
-
- **原始字段拷贝**:非聚合字段的智能拷贝
|
89
|
-
- **聚合统计**:sum/avg/min/max/count/variance/stddev
|
90
|
-
- **环比特征**:月度差分对比(MoM)
|
91
|
-
- **同比特征**:年度差分对比(YoY)
|
92
|
-
- **Spark SQL**:生成优化的Spark SQL代码
|
93
|
-
|
94
|
-
```python
|
95
|
-
# 特征生成配置
|
96
|
-
from staran.sql import FeatureConfig
|
97
|
-
|
98
|
-
config = FeatureConfig()
|
99
|
-
config.set_aggregation_types(['sum', 'avg', 'max'])
|
100
|
-
config.set_mom_months([1, 3]) # 1月、3月环比
|
101
|
-
|
102
|
-
generator = FeatureGenerator(schema, config)
|
103
|
-
generator.print_feature_summary() # 查看特征统计
|
104
|
-
```
|
105
|
-
|
106
|
-
### 3. 多种输出格式(Date工具)
|
107
|
-
```python
|
108
|
-
date = Date('202504')
|
109
|
-
|
110
|
-
# 默认格式(保持输入风格)
|
111
|
-
print(date) # 202504
|
112
|
-
|
113
|
-
# 常用格式
|
114
|
-
print(date.format_full()) # 2025-04-01
|
115
|
-
print(date.format_chinese()) # 2025年04月01日
|
116
|
-
print(date.format_year_month()) # 2025-04
|
117
|
-
print(date.format_compact()) # 20250401
|
118
|
-
```
|
119
|
-
|
120
|
-
### 4. 日期运算
|
121
|
-
```python
|
122
|
-
date = Date('202504')
|
123
|
-
|
124
|
-
# 运算后保持原格式
|
125
|
-
next_month = date.add_months(1) # 202505
|
126
|
-
tomorrow = date.add_days(1) # 202504 (智能处理)
|
127
|
-
|
128
|
-
# 日期差计算
|
129
|
-
diff = date.difference(Date('202502')) # 天数差
|
130
|
-
```
|
131
|
-
|
132
|
-
## 🎯 设计特色
|
133
|
-
|
134
|
-
- **格式智能** - 自动记忆输入格式,保持输出一致性
|
135
|
-
- **零依赖** - 仅基于Python标准库
|
136
|
-
- **直观API** - 符合Python习惯的设计
|
137
|
-
- **类型安全** - 完整的参数验证和错误处理
|
138
|
-
- **代码生成** - 智能SQL特征工程代码生成
|
139
|
-
|
140
|
-
## 📁 项目结构
|
141
|
-
|
142
|
-
```
|
143
|
-
staran/
|
144
|
-
├── __init__.py # 主包入口,包含使用示例
|
145
|
-
├── tools/
|
146
|
-
│ ├── __init__.py # 工具模块
|
147
|
-
│ └── date.py # Date类实现
|
148
|
-
├── sql/
|
149
|
-
│ ├── __init__.py # SQL模块
|
150
|
-
│ ├── schema.py # 表结构定义
|
151
|
-
│ ├── generator.py # 特征生成器
|
152
|
-
│ └── engines.py # SQL引擎(Spark等)
|
153
|
-
├── setup.py # 安装配置
|
154
|
-
├── README.md # 本文档
|
155
|
-
└── SQL_GUIDE.md # SQL工具详细指南
|
156
|
-
```
|
157
|
-
|
158
|
-
## 🧪 快速测试
|
159
|
-
|
160
|
-
### Date工具测试
|
161
|
-
```python
|
162
|
-
from staran import Date
|
163
|
-
|
164
|
-
# 测试格式记忆
|
165
|
-
date = Date('202504')
|
166
|
-
print(f"原始: {date}") # 202504
|
167
|
-
print(f"加2月: {date.add_months(2)}") # 202506
|
168
|
-
|
169
|
-
# 测试多格式输出
|
170
|
-
print(f"中文: {date.format_chinese()}") # 2025年04月01日
|
171
|
-
print(f"完整: {date.format_full()}") # 2025-04-01
|
172
|
-
```
|
173
|
-
|
174
|
-
### SQL工具测试
|
175
|
-
```python
|
176
|
-
from staran import TableSchema, FeatureGenerator
|
177
|
-
|
178
|
-
# 定义简单表结构
|
179
|
-
schema = TableSchema('user_stats')
|
180
|
-
schema.add_primary_key('user_id', 'string')
|
181
|
-
schema.add_date_field('date', 'date')
|
182
|
-
schema.add_field('amount', 'decimal', aggregatable=True)
|
183
|
-
schema.set_monthly_unique(True)
|
184
|
-
|
185
|
-
# 生成并查看特征
|
186
|
-
generator = FeatureGenerator(schema)
|
187
|
-
print(f"生成特征数: {generator.get_feature_summary()['total']}")
|
188
|
-
print(generator.generate_spark_sql())
|
189
|
-
```
|
190
|
-
|
191
|
-
## 📄 许可证
|
192
|
-
|
193
|
-
MIT License
|
194
|
-
|
195
|
-
---
|
196
|
-
|
197
|
-
**Staran** - 让Python工具使用更简单 🌟
|
staran-0.2.2.dist-info/RECORD
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
staran/__init__.py,sha256=IzD8a-yQDXYzTNOgNTv5wD6HXmITPuYg5INjg3wfoCc,5871
|
2
|
-
staran/tools/__init__.py,sha256=KtudrYnxKD9HZEL4H-mrWlKrmsI3rYjJrLeC9YDTpG4,1054
|
3
|
-
staran/tools/date.py,sha256=-QyEMWVx6czMuOIwcV7kR3gBMRVOwb5qevo7GEFSJKE,10488
|
4
|
-
staran-0.2.2.dist-info/licenses/LICENSE,sha256=2EmsBIyDCono4iVXNpv5_px9qt2b7hfPq1WuyGVMNP4,1361
|
5
|
-
staran-0.2.2.dist-info/METADATA,sha256=5J9S_3ZIuPW3qDuOgdzpS50Mv2b_9Vqj04h5vsbwcwY,5331
|
6
|
-
staran-0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
7
|
-
staran-0.2.2.dist-info/top_level.txt,sha256=NOUZtXSh5oSIEjHrC0lQ9WmoKtD010Q00dghWyag-Zs,7
|
8
|
-
staran-0.2.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|