Quantcast
Channel: SCN : Blog List - SAP HANA Developer Center
Viewing all articles
Browse latest Browse all 676

SAP HANA SPS 09 – SERIES DATA with My Exercises

$
0
0

CONTENTS:


SERIES DATA TABLE CREATION and GENERATE TIMESTAMP DATA

SERIES DATA TABLE vs REGULAR TABLE – STORAGE and COMPRESSION

EXPLORING SERIES DATA BUILT-IN FUNCTIONS


PREREQUISITES:     

 

  • Series Data Column Table "STOCKS_DATA_SERIES" has to be present in Schema “SERIES_DATA".

 

 

[CSV Files (STOCKS_DATA_SERIES.csv) is attached in this Post,

Using Flat File Import Create tables "STOCKS_DATA_SERIESin schema SERIES_DATA" in your landscape.]

 

Exercise 1:  Create & Compare the Series table with Column table


 

Explanation

Examples / Screenshot

Step 1:

 

Creating Regular column Table and

Series Data Table.

Create column Table "SERIES_DATA".MyTab

(keyint, ts timestamp, valueint);

 

Create column Table "SERIES_DATA".MyTabSeries

(keyint, ts timestamp, valueint)

Series

(series key(key)

period for series(ts,null)

equidistant

increment by interval 60 second);

Step 2:

 

Inserting Data to Regular column Table and

Series Data Table using

SERIES_GENERATE_TIMESTAMP” function.

 

Insert into"SERIES_DATA"."MYTAB"select 1, GENERATED_PERIOD_START, 7 from SERIES_GENERATE_TIMESTAMP ('INTERVAL 60 SECOND', '2010-01-01', '2011-01-01', null, null, null);

 

Insert into"SERIES_DATA"."MYTABSERIES"select 1, GENERATED_PERIOD_START, 7 from SERIES_GENERATE_TIMESTAMP ('INTERVAL 60 SECOND', '2010-01-01', '2011-01-01', null, null, null);

 

  1. No.of rows in both the table has to be 5,25,600.

Step 3:

 

Execute Merge Delta Operations for both the tables.

 

 

merge delta of "SERIES_DATA"."MYTAB";

update"SERIES_DATA"."MYTAB"

with parameters ('optimize_compression' = 'force');

 

merge delta of "SERIES_DATA"."MYTABSERIES";

update"SERIES_DATA"."MYTABSERIES"with parameters ('optimize_compression' = 'force');

Step 4:

 

Verifying Series Table Storage and Comparing Memory size and Compression with Regular Column table.

 

Select Table_name, column_name, memory_size_in_total, sum(memory_size_in_total) over (partition by table_name) as tab_memory_size,uncompressed_size,

sum(uncompressed_size) over (partition by table_name) as tab_uncompressed_size,compression_ratio_in_percentage as ratio, compression_type, "COUNT", distinct_count

from m_cs_columns where table_name in ('MYTAB', 'MYTABSERIES')


 

 

Series_1.png

Verify both normal column table and series Table.

Normal Column table --> TS Column memory size --> 5 MB

Series Table --> TS Column memory size --> 10 KB

Now You can understand How efficiently Series Table stores the data for  Time values.

 

 

Exercise 2:  Series Table Built-in and Analytic Functions:


 

Explanation

Examples / Screenshot

Step 1:

 

Check the data Preview of Series Data Table "STOCKS_DATA_SERIES"

 

STOCKS_DATA_SERIES (SERIES TABLE):

 

The table (“SERIES_DATA”.”STOCKS_DATA_SERIES”) is having Stock Market data with values (TICKER_ID, TICKER_DESCRIPTION, DATE, OPEN, HIGH, LOW, CLOSE, VOLUME, ADJ_CLOSE and DAILY_PERCENT_CHANGE) Since Year 1959 to 2015 (all the business days)

for Deutscher Aktien Index (DAX).

 

Total no.of rows in the Table 13895.

 

SQL QUERY TO CHECK THE DATA:

Series_1.png

Step 2:

 

Exploring Series Data Built-in Functions:

SERIES_DISAGGREGATE

 

 

SERIES_DISAGGREGATE (Built-in Function):

 

Transforming an equidistant time series with a coarser delta to one with a finer delta can be

performed using the SERIES_DISAGGREGATE function.

 

SQL Query:

 

We have data on daily basis.

We are going to disaggregate data to hourly basis from Daily.

 

 

select * from

(

SELECT s.DATE,

s.close * g.FRACTION_OF_SOURCE_PERIOD AS"By Hour Close"

FROM"SERIES_DATA"."STOCKS_DATA_SERIES"AS s

LEFTJOIN

SERIES_DISAGGREGATE_TIMESTAMP ('INTERVAL 1 DAY',

'INTERVAL 1 HOUR', '2015-01-19', '2015-01-20') g

ON s.DATE = g.SOURCE_PERIOD_START

)

whereDATE = '2015-01-19';


Series_1.png

 

 

 

 

Step 3:

 

Exploring Series Data Built-in Functions:

SERIES_ROUND

 


SERIES_ROUND (Built-in Function):

 

Horizontal aggregation transforms an equidistant series with a narrower interval to a new series with a coarser interval. Horizontal Aggregation functionality performed using the SERIES_ROUND function.

 

SQL Query:

 

We have data on daily basis.

We are going to Aggregate data to monthly basis from Daily.

 

Select rounded.TICKER_ID, Month, Avg(CLOSE) as Monthly_avg

from

(

select

  1. t.TICKER_ID,

SERIES_ROUND(DATE, 'INTERVAL 1 MONTH', ROUND_DOWN) AsMonth,

CLOSE

from"SERIES_DATA"."STOCKS_DATA_SERIES"As t

)

As rounded

GroupBy rounded.TICKER_ID, Month


Series_1.png

 

Summary:

 

You have completed the exercise!

You are now able to:

1)  Create the Time Series Table.

2)  Understand the Storage of Series Data Table.

3)  Usage of Series Data Built-in Functions.


Viewing all articles
Browse latest Browse all 676

Trending Articles