めもちょー

メモ帳代わりに使っています。

Dagsterのjob factory patternを通常のasset関数から徐々に理解する

概要 asset asset factory pattern job factory pattern 概要 Dagsterのデザインパターンであるjobクラス+asset_factoryメソッドのパターンを理解するために、最も基本的な概念であるasset関数から徐々に理解していくための解説を書きました。 asset もっと…

GitHub ActionsのScript Injectionを利用した攻撃

下記資料でGitHub Actionsのセキュリティの勉強をしていたら、GitHubリポジトリに設定されているsecretや環境変数をPull Requestによって盗めることが分かったので実験してみました。 speakerdeck.com なお、本記事はGitHub Actionsを書く際のセキュリティ意…

DataformとBigQueryでコメントアウトの記法が異なる罠を踏んだ

結論 BigQueryのSQLとDataformのsqlxはコメントの適用が異なることが分かりました。これらはBigQueryでもDataformでもコメントとして認識されます。 -- SELECT 1 /* SELECT 1 */ #によるコメントは、BigQueryでは(標準SQL導入前のコメント記法で)コメント…

sqlglotを使いSQLのパーサーの仕組みを調べた

概要 準備 字句解析(Lexical Analysis) 構文解析(Syntax Analysis) 概要 sqlglotというSQLのパーサーツールを用いてSQLのパースの内部処理を体験してみました。 SQLパーサーの内部処理は大きく分けて次の3つがあります。 字句解析 構文解析 意味解析 こ…

Pythonの関数で単一プロセス内と複数インスタンス間でのキャッシュ

概要 単一プロセスでのキャッシュ functools cachetools 複数インスタンス間でのキャッシュ 概要 Pytyhonの関数をキャッシュするデコレータについてです。 キャッシュを考える場合、次の2つの状況を考える必要があります。 単一プロセス内でキャッシュする場…

DagsterにおけるYahooオークションのスクレイピングパターンを考えた

問題設定 ヤフオクの特定の出品者の商品一覧を毎日決まった時刻に取得したいと考えます。 設計 時間による情報の変化をopに落とし込む 上記の問題を考えた場合、訪れるページの種類は主に3つ挙げられます。 No ページの種類 得たい情報 得たい情報に対しての…

BigQuery 時間関数メモ

集約 Time Columnに関する関数 1日を3時間単位に丸めるTIMESTAMP_BUCKET(・, INTERVAL 3 HOUR) Value Columnに対する関数 平均・最大・最小 3時間ごとに丸める 下記は「各郵便番号のある時刻における最低気温と最高気温」のテーブルです。 timeがTime Column…

OTFトーク 第1回〜第3回 聴講まとめ

Iceberg界隈で有名な方が、SpotifyにてOpen Table Formatの日本語Podcastを提供して下さっていたため勉強しました。 第1回から第3回まで聞いた内容のまとめを記します。 第1回 OTF誕生の背景 open.spotify.com Icebergが生まれた背景 データレイクに対してTr…

SnowflakeでORDER BY LIMIT句を実行して良い理由

下記記事を読み、SnowflakeでORDER BY句を利用しても問題ない理由をSnowflakeのアーキテクチャを学びながら理解することができたのでまとめました。 zenn.dev Snowflake マイクロパーティション 一般的にSQLは「ORDER BY LIMIT句は遅い」と言われています。 …

Dagster1.8 リリースノート

2024.08.09にDagster1.8がリリースされ, リリースノートから気になった箇所をまとめました. dagster.io Un-experimentalizing Pipes Pipes APIはLambda, kubernetes, databricks上で動いているコードにdagster moduleをimportしログを吐くように実装すると, …

External Assetの仕様が変わっていた

概要 変更点 一つのExternalAsset 複数のExternalAsset Definition 概要 1.7.9から1.8.0にかけてExternal Assetの仕様が変わっていたため調査を行いました。 changelogは下記のようになっています。 github.com このうちexternal assetに関する記述は下記に…

NetflixのWorkflow Engine Maestro を調査した

下記記事を読み、Maestroが他のData Orchestration(主にDagster)と異なる(であろう)点をまとめました. atmarkit.itmedia.co.jp netflixtechblog.com 巡回ワークフローもサポートしている ワークフロー定義はJSONで記述 サブワークフロー ワークフローのステ…

Dagsterのjob内のasset/opのリセットの仕組み

概要 同run内でop/asset単位のリトライ ResetPolicy コード例 異なるrunで失敗したop/assetのみをリトライ dagster.yaml jobのタグに設定 概要 Dagsterのリセットポリシーについてまとめてみました。 Dagsterのリトライの単位は大きく2つあります。 同run内…

dataplexによる品質タスクについて調査した

概要 dataplexの品質タスクの仕組み 実践内容 権限付与 タスクの定義 結果 概要 dataplexによる品質チェックは、Terraformによる定義しかやったことがなかったため裏で行われていることがわかりませんでした。 そのため、敢えてドキュメント通りに学んでみる…

terraformのworkspaceをプロンプト上に表示させる

前提 プロンプト設定 oh-my-posh設定 前提 terraformで作業をしていると、workspaceを切り替えることを忘れ、production環境にapplyをしてしまうようなミスが考えられます。 プロンプトにworkspaceを表示することにより、ヒヤリハットを防ぐことが重要です。…