Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rust on AWS でデータ分析 / 20260523iotlt-niigata-rust...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kasacchiful
PRO
May 23, 2026
Programming
26
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rust on AWS でデータ分析 / 20260523iotlt-niigata-rust-on-aws
2026/05/23 (土) 開催の IoTLT新潟 Vol.17 で登壇した資料
イベントページ
https://iotlt.connpass.com/event/391502/
kasacchiful
PRO
May 23, 2026
More Decks by kasacchiful
See All by kasacchiful
上越のサメ食文化を訪ねて - 新潟市民の初体験レポ / ssmjp-shark
kasacchiful
PRO
1
59
Step Functionsで始めるサーバーレス入門 〜 つないで動かすAWSサーバーレス
kasacchiful
PRO
0
56
Amazon Q Developer CLI (現Kiro CLI) で作った 新潟ランチマップWebアプリのこれまでとこれから / 20260207jawsug-tochigi
kasacchiful
PRO
0
97
Amazon SageMaker Catalogの、AIエージェントによる自動データ分類機能を試してみようとしたが、できなかったので、代わりに最近構築したデータ連携基盤を紹介します / 20260117jawsug-fukui
kasacchiful
PRO
0
97
データファイルをAWSのDWHサービスに格納する / 20251115jawsug-tochigi
kasacchiful
PRO
2
280
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
PRO
0
910
ワイがおすすめする新潟の食 / 20250912jasst-niigata-lt
kasacchiful
PRO
1
59
WorkersでDiscord botを試してみた / 20250822workers-tech-talk-niigata
kasacchiful
PRO
1
160
地域コミュニティへの「感謝」と「恩返し」 / 20250726jawsug-tochigi
kasacchiful
PRO
0
290
Other Decks in Programming
See All in Programming
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
ふつうのFeature Flag実践入門
irof
7
3.7k
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
240
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
120
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
160
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
560
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
200
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
260
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Are puppies a ranking factor?
jonoalderson
1
3.5k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Done Done
chrislema
186
16k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Designing for humans not robots
tammielis
254
26k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Documentation Writing (for coders)
carmenintech
77
5.4k
How GitHub (no longer) Works
holman
316
150k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Transcript
None
None
None
Metadata: BuildMethod: rust-cargolambda cargo-lambda provided.al2023 [dependencies] lambda_runtime = "0.13" aws-sdk-s3
= "1" polars = { version = "0.50", features = ["lazy", "parquet", "temporal", "abs"] } tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
None
None
LazyFrame::scan_parquet(input, ScanArgsParquet::default())? .with_columns([ col("timestamp").dt().truncate(lit("1h")).alias("hour"), col("temperature").mean().over([col("device_id")]).alias("_dev_mean"), col("temperature").std(1).over([col("device_id")]).alias("_dev_std"), ]) .with_columns([ ((col("temperature") -
col("_dev_mean")).abs() .gt(lit(3.0) * col("_dev_std"))).alias("_is_anomaly"), col("status").eq(lit("error")).alias("_is_error"), ]) .group_by([col("device_id"), col("hour")]) .agg([ col("temperature").mean().alias("temp_mean"), col("_is_error").sum().alias("error_count"), col("_is_anomaly").sum().alias("anomaly_count"), ]) .sort(["device_id", "hour"], SortMultipleOptions::default()) .collect()?
df["hour"] = df["timestamp"].dt.floor("h") dev_stats = df.groupby("device_id")["temperature"].agg( _dev_mean="mean", _dev_std=lambda s: s.std(ddof=1),
) df = df.merge(dev_stats, left_on="device_id", right_index=True) df["_is_anomaly"] = ( (df["temperature"] - df["_dev_mean"]).abs() > 3.0 * df["_dev_std"] ) df["_is_error"] = df["status"].eq("error") agg = (df.groupby(["device_id", "hour"], sort=True) .agg(temp_mean=("temperature", "mean"), error_count=("_is_error", "sum"), anomaly_count=("_is_anomaly", "sum")) .reset_index())
None
None
None
None
None
None
None
None
None