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
kasacchiful
PRO
May 23, 2026
Programming
24
0
Share
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
55
Step Functionsで始めるサーバーレス入門 〜 つないで動かすAWSサーバーレス
kasacchiful
PRO
0
51
Amazon Q Developer CLI (現Kiro CLI) で作った 新潟ランチマップWebアプリのこれまでとこれから / 20260207jawsug-tochigi
kasacchiful
PRO
0
93
Amazon SageMaker Catalogの、AIエージェントによる自動データ分類機能を試してみようとしたが、できなかったので、代わりに最近構築したデータ連携基盤を紹介します / 20260117jawsug-fukui
kasacchiful
PRO
0
94
データファイルをAWSのDWHサービスに格納する / 20251115jawsug-tochigi
kasacchiful
PRO
2
280
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
PRO
0
890
ワイがおすすめする新潟の食 / 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
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
370
TypeScriptだけでAIエージェントを作る フロント・エージェント・インフラのフルスタック実践
har1101
6
1.3k
Migrations : C'est une question d'hygiène !
vinceamstoutz
0
3.2k
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
440
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
120
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
SPMマルチモジュールで テストカバレッジを取得する技法
yosshi4486
0
140
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.8k
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.4k
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
820
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
220
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
260
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.3k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Producing Creativity
orderedlist
PRO
348
40k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
310
Deep Space Network (abreviated)
tonyrice
0
160
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
How to Ace a Technical Interview
jacobian
281
24k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
Rails Girls Zürich Keynote
gr2m
96
14k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
The Spectacular Lies of Maps
axbom
PRO
1
790
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