前回はHadoopやSparkなどとの連携について見てきました。今回は、
ログ分析用のSQL拡張関数
ログ分析のためのロジックは、
関数 | 説明 |
---|---|
Time Series Analytics | 時系列の補間 |
Event Pattern Matching | イベントのパターンマッチング |
Geospatial Analytics | 地理空間分析 |
「Time Series Analytics」
SELECT * FROM TickStore ORDER BY 日付; 日付 | 株式 | 入札価格 ---------------------+------+---------- 2017-02-24 03:00:00 | A | 10.0 2017-02-24 03:00:00 | B | 7.0 2017-02-24 03:00:05 | A | 10.5 2017-02-24 03:00:06 | B | 6.7
SELECT slice_time, 株式, TS_LAST_VALUE(入札価格, 'LINEAR') 入札価格 FROM TickStore TIMESERIES slice_time AS '2 seconds' OVER(PARTITION BY 株式 ORDER BY 日付) ; slice_time | 株式 | 入札価格 ---------------------+------+---------- 2017-02-24 03:00:00 | B | 6.9 2017-02-24 03:00:02 | B | 6.8 2017-02-24 03:00:04 | B | 6.7 2017-02-24 03:00:06 | B | 2017-02-24 03:00:00 | A | 10.2 2017-02-24 03:00:02 | A | 10.4 2017-02-24 03:00:04 | A |
「Event Pattern Matching」
select * from clickstream_log order by ts; uid | sid | ts | refURL | pageURL | action -----+-----+----------+-----------------------+-----------------------+-------- 1 | 100 | 12:00:00 | a.example.com | b.example.com/home | V 1 | 100 | 12:01:00 | b.example.com/home | b.example.com/floby | V 1 | 100 | 12:02:00 | b.example.com/floby | b.example.com/shamwow | V 1 | 100 | 12:03:00 | b.example.com/shamwow | b.example.com/buy | P 2 | 100 | 12:10:00 | a.example.com | b.example.com/home | V 2 | 100 | 12:11:00 | b.example.com/home | b.example.com/forks | V 2 | 100 | 12:13:00 | b.example.com/forks | b.example.com/buy | P
SELECT uid, sid, ts, refurl, pageurl, action, event_name(), pattern_id(), match_id() FROM clickstream_log MATCH (PARTITION BY uid, sid ORDER BY ts DEFINE Entry AS RefURL NOT ILIKE '%b.example.com%' AND PageURL ILIKE '%b.example.com%', Onsite AS PageURL ILIKE '%b.example.com%' AND Action='V', Purchase AS PageURL ILIKE '%b.example.com%' AND Action = 'P' PATTERN P AS (Entry Onsite* Purchase) ROWS MATCH FIRST EVENT); uid | sid | ts | refurl | pageurl | action | event_name | pattern_id | match_id -----+-----+----------+-----------------------+-----------------------+--------+------------+------------+---------- ┌―――――――――――――――――――――――――――――――――――――――――――――――――――――――――┐ │ 1 | 100 | 12:00:00 | a.example.com | b.example.com/home | V | Entry | 1 | 1 │ │ 1 | 100 | 12:01:00 | b.example.com/home | b.example.com/floby | V | Onsite | 1 | 2 │ │ 1 | 100 | 12:02:00 | b.example.com/floby | b.example.com/shamwow | V | Onsite | 1 | 3 │ │ 1 | 100 | 12:03:00 | b.example.com/shamwow | b.example.com/buy | P | Purchase | 1 | 4 │ └―――――――――――――――――――――――――――――――――――――――――――――――――――――――――┘ ┌―――――――――――――――――――――――――――――――――――――――――――――――――――――――――┐ │ 2 | 100 | 12:10:00 | a.example.com | b.example.com/home | V | Entry | 1 | 1 │ │ 2 | 100 | 12:11:00 | b.example.com/home | b.example.com/forks | V | Onsite | 1 | 2 │ │ 2 | 100 | 12:13:00 | b.example.com/forks | b.example.com/buy | P | Purchase | 1 | 3 │ └―――――――――――――――――――――――――――――――――――――――――――――――――――――――――┘
テーブル内のデータから、
「Geospatial Analytics」
![図5 Geospatial Analyticsのオブジェクト 図5 Geospatial Analyticsのオブジェクト](/assets/images/dev/serial/01/database-vertica/0004/thumb/TH800_001.png)
COPY table_name(columns) WITH SOURCE STV_ShpSource(file = 'filename') PARSER STV_ShpParser() ;
SELECT ST_Distance(ST_GeographyFromText('Point(-71.0598 42.3601)'), ST_GeographyFromText('Point(-74.0059 40.7128)') USING PARAMETERS spheroid = true); ST_Distanse ------------------ 306423.562065704
以上のように、
機械学習
昨今、
Verticaは、
アルゴリズム | モデル作成 | 評価 | 予測分析 |
---|---|---|---|
線形回帰分析 | ○ | ○ | ○ |
ロジスティック回帰分析 | ○ | ○ | ○ |
K平均法 | ○ | ○ | ○ |
学習データをもとにこれらのアルゴリズムを使うことで、
- SQLで機械学習を行うことができる
- RやPythonクライアントと比較して高速に処理できる
(Verticaで並列分散処理) - SQL分析と機械学習分析のプラットフォームを分ける必要がない
それでは、
carName | mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | tf ---------------------+------+-----+-------+-----+------+-------+-------+----+----+------+------+------- Fiat X1-9 | 27.3 | 4 | 79 | 66 | 4.08 | 1.935 | 18.9 | 1 | 1 | 4 | 1 | train Merc 230 | 22.8 | 4 | 140.8 | 95 | 3.92 | 3.15 | 22.9 | 1 | 0 | 4 | 2 | train Merc 280C | 17.8 | 6 | 167.6 | 123 | 3.92 | 3.44 | 18.9 | 1 | 0 | 4 | 4 | train Merc 450SE | 16.4 | 8 | 275.8 | 180 | 3.07 | 4.07 | 17.4 | 0 | 0 | 3 | 3 | train AMC Javelin | 15.2 | 8 | 304 | 150 | 3.15 | 3.435 | 17.3 | 0 | 0 | 3 | 2 | test
図9では、
SELECT v_ml.linearReg('linModel', 'mtcars', 'mpg', 'cyl,hp,wt', '--exclude_columns= carName --description my_linearReg_model');
図10では、
carName | observed | predicted ---------------------+----------+----------------- AMC Javelin | 15.2 | 17.6357311618035 Cadillac Fleetwood | 10.4 | 10.8954543679367 Camaro Z28 | 13.3 | 14.6442677270797 Chrysler Imperial | 14.7 | 10.1449185542106 Datsun 710 | 22.8 | 25.9667989028515 Dodge Challenger | 15.5 | 17.3663828863913 Duster 360 | 14.3 | 15.4998446019185 Ferrari Dino | 19.7 | 21.1799824379912 Fiat 128 | 32.4 | 26.8325147580537 Fiat X1-9 | 27.3 | 27.6722476166918
このように、
なお、
進化し続けるVertica
本稿で紹介してきたように、
さっそく試してみよう!
前後編にわたって、
「百聞は一見に如かず」
さらに、
みなさまが持つ課題の解決に、
「Vertica技術情報サイト」、
Vertica事例セミナー『Verticaで解決したビジネス課題』
URL:https://本誌最新号をチェック!
WEB+DB PRESS Vol.130
2022年8月24日発売
B5判/
定価1,628円
ISBN978-4-297-13000-8
- 特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現! - 特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう - 特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、 NFT