Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[HeatWavejpMeetup#13] HeatWave Lakehouse で 膨大にな...

[HeatWavejpMeetup#13] HeatWave Lakehouse で 膨大になるcsvデータを必要な分だけロードしてデータ集計してみた![米内山 浩介 氏 (ジニアス・ソノリティ)]

【講演内容】
HeatWave Lakehouse で 膨大になるcsvデータを必要な分だけロードしてデータ集計してみた!

 - ジニアス・ソノリティの業務内容と背景
 ‐ HeatWave Lakehouseでその悩みを解消する
 ‐ HeatWave Lakehouseでの実装例
 ‐ HeatWave Lakehouseここが便利

【発表者】
ジニアス・ソノリティ株式会社
米内山浩介 氏

【イベント情報】
HeatWavejp Meetup #13
https://heatwavejp.connpass.com/event/349599/

More Decks by HeatWavejp(MySQL HeatWave Japan User Group)

Transcript

  1. HeatWave Lakehouseでその悩みを解消する アプリケーションサーバー アプリケーションサーバー アプリケーションサーバー : データ管理・集計サーバー オブジェクトストレージ : :

    path/of/data/2025/04/16/data.csv path/of/data/2025/04/15/data.csv path/of/data/2025/04/14/data.csv path/of/data/2025/04/17/data.csv 一旦集計用のサーバーにデータを集約 分析に必要な情報を日ごとに csv化してオブジェクトストレージにアップロード レンジパーティション的にデータ配置する
  2. HeatWave Lakehouseでの実装例 (1) ※2025年4月分の月間データをロードする例(テーブル、カラム名は仮です) CREATE TABLE IF NOT EXISTS `dailyinfo`

    ( `date` DATETIME NOT NULL, `user_id` INT UNSIGNED NOT NULL, `data01` INT UNSIGNED, `data02` INT UNSIGNED, `data03` INT UNSIGNED, PRIMARY KEY(`date`,`user_id`) ) ENGINE=Lakehouse SECONDARY_ENGINE=RAPID ENGINE_ATTRIBUTE='{ "file":[{ "bucket":"bucket-name", "namespace":"project-namespace", "region":"project-region", "prefix":"path/of/data/2025/04/" }], "dialect":{ "format":"csv","is_strict_mode":false,"field_delimiter":",", "record_delimiter":"\\n" } }';
  3. HeatWave Lakehouseでの実装例 (2) ※2025年4月1日から3日までの3日分データをロードする例 ALTER TABLE `dailyinfo` ENGINE_ATTRIBUTE='{ "file":[ {"bucket":"bucket-name","namespace":"project-namespace","region":"project-region",

    "prefix":"path/to/data/2025/04/01"}, {"bucket":"bucket-name","namespace":"project-namespace","region":"project-region", "prefix":"path/to/data/2025/04/02"}, {"bucket":"bucket-name","namespace":"project-namespace","region":"project-region", "prefix":"path/to/data/2025/04/03"} ], "dialect":{"format":"csv","is_strict_mode":false,"field_delimiter":",","record_delimiter":"\\n"} }';