Skip to content

esProc SPL is a pure Java developed software that can serve as a programming language for data analysis, a middleware for report data preparation, and an efficient big data computing engine.

Notifications You must be signed in to change notification settings

hoocx1/esProc_Analytics

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

Novel grid-style programming

Excel-like Grid-style programming

image


image


High Interactivity for Exploratory Analysis

image


XLL Plugin Helps Excel

Write SPL code in Excel directly

Finding periods during which stocks have risen consecutively for more than 5 days

=spl("=E(?1).sort(CODE,DT).group@i(CODE!=CODE[-1]||CL<CL[-1]).select(~.len()>=5).conj()",A1:D253)

Concise and Powerful Code

Comprehensive and Simple Operations

image


Unique Set and Ordered Operations

calculate the longest consecutive rising days for each stock

SQL

SELECT CODE, MAX(con_rise) AS longest_up_days
FROM (
    SELECT CODE, COUNT(*) AS con_rise
    FROM (
        SELECT CODE, DT,  SUM(updown_flag) OVER (PARTITION BY CODE ORDER BY CODE, DT) AS no_up_days
        FROM (
            SELECT CODE, DT, 
                    CASE WHEN CL > LAG(CL) OVER (PARTITION BY CODE ORDER BY CODE, DT)  THEN 0
                    ELSE 1 END AS updown_flag
            FROM stock
        )
    )
    GROUP BY CODE, no_up_days
)
GROUP BY CODE

Python

import pandas as pd
stock_file = "StockRecords.txt"
stock_info = pd.read_csv(stock_file,sep="\t")
stock_info.sort_values(by=['CODE','DT'],inplace=True)
stock_group = stock_info.groupby(by='CODE')
stock_info['label'] = stock_info.groupby('CODE')['CL'].diff().fillna(0).le(0).astype(int).cumsum()
max_increase_days = {}
for code, group in stock_info.groupby('CODE'):
    max_increase_days[code] = group.groupby('label').size().max() – 1
max_rise_df = pd.DataFrame(list(max_increase_days.items()), columns=['CODE', 'max_increase_days'])

SPL

A
1 StockRecords.xlsx
2 =T(A1).sort(DT)
3 =A2.group(CODE;~.group@i(CL< CL[-1]).max(~.len()):max_increase_days)

Especially skilled at complex scenarios such as order-related operations, sliding windows, and cross-row computations, much simpler than SQL or Python

What to use for data analysis programming: SPL,Python or SPL?


Easy Big Data and Parallel Support

image


Lightweight and Portable


Resource

About

esProc SPL is a pure Java developed software that can serve as a programming language for data analysis, a middleware for report data preparation, and an efficient big data computing engine.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%