Changes between Version 1 and Version 2 of AdvancedTopics


Ignore:
Timestamp:
06/08/26 00:09:23 (3 days ago)
Author:
231020
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedTopics

    v1 v2  
    11== Напредни теми
     2= Data Cube ( Trade Analytics Cube )
     3
     4Структурата има 5 димензии: корисник, акција (stock), година, месец и тип на трансакција (BUY/SELL). Со овие димензии се овозможува детална и агрегирана анализа на податоците од различни аспекти.
     5
     6Со користење на GROUP BY CUBE се добиваат сите можни комбинации на овие димензии, што значи дека се формираат вкупно 2⁵ = 32 кубоиди. За секој кубоит се пресметуваат неколку метрики: вкупна вредност на тргувањата (price * quantity), вкупна количина на извршени трансакции и број на трансакции.
     7
     8Редовите каде некоја димензија е NULL претставуваат агрегирани подзбирови, а со користење на GROUPING() функцијата јасно се разликуваат од реални NULL вредности во податоците. Овој пристап овозможува длабинска анализа на пазарното однесување на корисниците и перформансите на акциите низ различни временски периоди.
     9
     10Дополнително, овој Data Cube овозможува лесно откривање на трендови и шаблони во тргувањето, како што се најтргувани акции, најактивни корисници и сезонски промени во активноста. Со тоа се подобрува можноста за донесување аналитички одлуки и подлабоко разбирање на однесувањето на корисниците во системот.
     11
     12{{{
     13CREATE INDEX idx_tt_user ON trade_transaction(user_id);
     14CREATE INDEX idx_tt_stock ON trade_transaction(stock_id);
     15CREATE INDEX idx_tt_time ON trade_transaction(timestamp);
     16
     17SELECT
     18    u.username,
     19    s.symbol,
     20    EXTRACT(YEAR FROM tt.timestamp)  AS year,
     21    EXTRACT(MONTH FROM tt.timestamp) AS month,
     22    tt.type,
     23    SUM(tt.price * tt.quantity)      AS total_trade_value,
     24    SUM(tt.quantity)                 AS total_quantity,
     25    COUNT(*)                         AS trade_count,
     26    GROUPING(u.username)             AS is_all_users,
     27    GROUPING(s.symbol)               AS is_all_stocks,
     28    GROUPING(tt.type)                AS is_all_types
     29FROM trade_transaction tt
     30JOIN users u ON tt.user_id  = u.id
     31JOIN stock s ON tt.stock_id = s.id
     32GROUP BY CUBE (
     33    u.username,
     34    s.symbol,
     35    EXTRACT(YEAR  FROM tt.timestamp),
     36    EXTRACT(MONTH FROM tt.timestamp),
     37    tt.type
     38)
     39ORDER BY u.username, s.symbol;
     40}}}