Snowflakeの認定試験 SnowPro Advanced Data Engineer (DEA-C01-JPN) (日本語版) を受けてきましたので、その学習等にまつわる内容を受験記として書き出してみました。
試験に関する基本情報は公式ドキュメントを参考にしてください。
全体感
- 公式ガイドを見る
- Udemy等で模擬試験を探す
- 問題を解きつつ公式ドキュメントを眺める
- ひたすら模擬試験を繰り返す
- イメージが掴めないこと等は、トライアルアカウントで実際に手を動かして試す
だいたいこんな感じです。
資格試験が相手なのであれば、メインは
- 問題を解きつつ公式ドキュメントを眺める
- ひたすら模擬試験を繰り返す
かなと思います。
これは、私が以前挑戦した Advanced Architect の時と同じ作戦・戦略で行こうとしたのです。
…が、これが今回においてはうまくは行かなかったのです。
Advanced Architectの受験期がありますのでよろしければご覧ください。 : SnowPro Advanced Architect (ARA-C01-JPN) 受験記
対策
以下のコンテンツを参照、利用しました。
SnowPro® Advanced: Data Engineer の概要
参考価格 : 無料
これは鉄板ですね。
本家大元の情報なので当然参考になります。
特に巻末にあるサンプル問題、これは重要です。
この例題の様な問われ方は非常に参考になりますし、ここにでてくる知識が前提となって他の問題でも活きてきます。
Udemy
Advanced Data Engineer向けに関しては、正直「これだ!」というものがあまりない、というかなかったのが感想です。(見逃していたらすみません)
[良いかも] SnowPro® Advanced: Data Engineer Practice Exams by Sections
参考価格 : 4,800円
試験対策のお供に良さそうなコンテンツの選定が難しそうな中、これは比較的良いかなと思う物はこちらでした。
カテゴリ別に整理されていて、理解を深めるのに有用でした。
各問題に対する解説も充実しています。
初手、これに着手するのはおすすめかなと思いました。
これを軸に各カテゴリのドキュメントに手を広げて閲覧していく感じです。
一方、ソリューション系の問題は扱っていないため、問題の難易度は全体的に易しいが、同等の問題はいくつか出題されている感じがしたのでその点は良かったです。
基礎固めのパートナーにどうぞ、といった感じです。
ちょいちょい誤記、誤りなどを見つけてしまったので、QAで訂正依頼を行なったりしています。いずれもすぐに修正いただけましたので、このコンテンツは「生きている」と思います。
[うーん…] Snowflake SnowPro Advanced:Data Engineer- Practice Tests
参考価格 : 3,600円
正直…な模擬試験でした。
難易度は低め。
この模擬試験内では2択問題が掲載されていますが、実際には出ません。
(その手の問題は、あくまでも基礎知識確認程度で捉える。)
もしかしたら、かつては出題されていたのかもしれませんね。
更新日時が古く、年単位で修正されていない誤りもそのまま残っているのは気になりました。
また、問題解説が弱いのも気になるところです。
[うーん…] Snowflake SnowPro Advanced Data Engineer – Exams
参考価格 : 2,600円
こちらは難易度は高め。
色んな意味で。非常に高い。
文章量が多い問題も多数扱っています。
実際の出題よりも難読化、長文化された印象もありつつ、ある程度このぐらいの難易度や文章量の問題が出題されているので、出題のイメージや雰囲気は近いのかなと思いました。
文章量、雰囲気、イメージは、という点までです。
内容は…って感じです。
その内容についてですが、誤りが非常に多かったです。
例えば、「こんな名称のオブジェクトはSnowflake上に存在しない」といったレベルのミスがあったり、そのミスがあたかも正しいかのように正解や解説に組み込まれていたりして、全般的に問題〜解説通しての正当性を判断するのが非常に難しかった & 面倒でした。
結果、途中で見るのを諦めました。
半ばドキュメントレビューしているような感覚。
これを1問1問やると、時間がかかりすぎる。常に、何もかもを疑ってかからないといけないキツさ…読み進めるために必要なパワーが半端なかったです。
個人的な感触ですが…長文で、かつ難しい出題が数多くあるので読むのが大変だった上、問題・回答選択肢・回答解説を通していまいち内容がピンとこなかったです。
(英和翻訳の問題?理解不足?)
おそらくですが、コンテンツをAIで作成しいて、あまり人が関与してなさそう(ちゃんとレビューしてなさそう)な雰囲気を感じました。
公式でもそのような言及や表現していないもの(あえて難しい、回りくどい表現、ミスリードを誘発しそうなもの)があったり、それっぽく表現されていたりで、ある程度理解が追いついていないと鵜呑みしちゃいそうでした。
違和感を感じたからこそ、そのまま最後まで読み解くのが苦痛でした。
これを頑張って解読するのであれば、多少苦労してでも自分で模擬試験問題を作った方が幾分か信頼できそうですし、非常に勉強になりそうです。
[うーん…] FullCertified
参考価格 : $19.99/月
こちらはサブスクです。
詳細はこちらをご確認ください。
扱っている情報としてはこの試験の範囲に沿っている感じですが、難易度は易しい感じです。
こちらにもTrue/Falseの2択問題が含まれていました。(実際には出題されません。)
同じレベル感の模擬試験を選ぶとしたら、Udemyのものかこちらのコンテンツか、どちらか1つで良いかなという印象です。
Advanced Data Engineerに関してはUdemy教材に軍配が上がりそうです。
模擬試験等のコンテンツ総評
- 残念ながら、現段階では過信できません…!
- あまり充実化していません
- ぶっちゃけ「ちょうどいいもの」がありません
- ある程度信頼できるコンテンツは難易度が低め、得られる知見も限定的です
- 実際は後述通り「もっと難しい」のです
- 意外と簡単だったよと感じる方もいらっしゃるかもしれませんが、自分にとっては難しかったです
-
SnowPro Advanced Architect (ARA-C01-JPN)
とはまた違った印象、脳を求められた感じでした
じゃあどうする…?
- 公式のガイドに沿ってひたすら勉強する
- 公式ドキュメントの事例や考慮点等を確かめるようにハンズオンをしてみる
- 公式ガイドに沿って自分で模擬試験を作ってみる
ぐらいしか思いつかないです。
自分で公式情報を頼りにやるしかない、が率直な感触です。
感想
いやぁ…想像より、先人レポートから感じ取れる難易度よりも体感難しかった。
- ソリューション解決問題(文章問題)は、Architectに比べると少ない
- つまり試験全体での文章量は少なめで、比較的読みやすいといえば読みやすい
- 逆に、シンプルな問いで非常にいやらしい、よく似た選択肢が並べられて間違わずに正解を選ばないといけないケースが多かった印象
- シンプルゆえに言及されていること以上でも以下でもない、どストレートな問い
- 重箱の隅を突かれた感じ
- 細かいところを深掘りされた
- 「正しいものを複数選択」ではなく「正しい組み合わせ or 順序を一つだけ選ぶ」という紛らわしい選択の多さ
実際にハンズオンをしてみて、頭だけでなく身体で「ちょっとした違い」や「(設問に出てくるオプションの組み合わせ等の)違和感」を覚えるしかなさそうです。
見た瞬間に違和感を感じるかどうか、結構重要ですね。
どんな感じの問題が出たか
-
パイプ系
- パイプのステータス確認方法(
SYSTEM$PIPE_STATUS
) - エラーの追跡方法(
PIPE_USAGE_HISTORY
vsVALIDATE_PIPE_LOAD
のような選択肢) - 同じファイルを再度ロードしないための仕組み(メタデータの話)
- パイプをdropして作り直したらどうなるか、みたいな運用面の問題
- パイプのステータス確認方法(
-
copy into の細かいオプション
-
ON_ERROR = SKIP_FILE_n
とするとどうなるか(nの意味。nを含むか含まないか、覚えてないと詰む) - VALIDATION_MODEの使い分け
- 圧縮ファイル(csv.gz等)のロード方法
-
-
タイムトラベル系
- ストリームとタイムトラベルの関係が実は複雑?
- 特にベーステーブルの有効期限と、ストリームでアクセスできるデータの期間の関係
- スキーマがn日、テーブルが未指定(アカウントレベル90日)の時、スキーマを消すとテーブルが復元できる期間は?みたいな問題(これはArchitectでも出たやつ)
- ストリームとタイムトラベルの関係が実は複雑?
-
UDF関係
- JavaScript UDFで
NULL::VARCHAR
という引数を与えたらどうなるか - セキュアUDFであることを確認する方法
- 外部関数を使用するビューをシェアするとどうなるか
- JavaScript UDFで
-
半構造データ関係
- FLATTENを扱う問題が多く結構出た気がする…
-
recursive=true
とfalse
の違い - FLATTENをLATERALと併用しないケースはどんな時か
- 「LATERAL FLATTEN」とセットで使う事例が多い、そんなイメージがある中でここを問われるというのは何かすごい
-
- 入れ子になったJSONを処理する時の複数LATERAL FLATTENの連鎖
- FLATTENを扱う問題が多く結構出た気がする…
-
引っ掛けかもしれない「エディション」
- 例えば問題文に「スタンダードエディションで」と書いてあるが、実際はそれ以上のエディションでも同じ挙動になるとか
- 本質は「挙動そのもの」であるが、問題文に「エディション」と書かれていたがために、頭の中で「エディション差分」を考えることになり余計な思考を誘発させる
-
テーブルとビューの差分
- ある設定について、テーブルとビューで何か違ったっけか?という迷いを誘発させる問題
- 両方とも変わらず同じように設定できる項目もある
-
各種機能の裏側を問うような、エラーを誘発させるような実験的な操作
- 普通は、運用中はやらないであろう操作を「あえてやったらどうなるか?」が問われる
- 開発中や運用中のミス、トラブルシューティングにも対応できるような目的で、あえてこんな細かく難しいことを聞かれている気がする
- 仕組み的に「どういうものか」の根本理解があれば回答できるかもしれないが、現実には難しい
- 大抵は、実際に試してみないとわからないはず
ポイントになりそうなこと
ポイントを何かあげるとすれば、試験に対抗して勉強過程においても「重箱の隅を突くこと」かもしれません。
「そこついてくるんだ…」な問題が結構ありました。
実際に試験中に「覚えてねぇな…」「どっちだっけか…」「え?そんな操作やったことないぞ…!」が頻発して時間が溶けるのです。試験時間に対する「問題数の少なさ」の秘密はそこかもしれません。
重箱の隅を突かれる系
前述の内容と被る部分がありますが、整理兼ねて書きます。
- ファイルURLはどういうものか?(永続?期限付き?等)
- ストリームを設定している時に元テーブルの名前を変えたらどうなるか
- JavaScript のUDFで、
NULL::varchar
という引数を与えたらどうなるか - LATERAL FLATTEN と FLATTEN 単体の使い分け
- パイプで同じファイルをロードしないための仕組みについて掘り下げ
- どの情報を見て同じファイルだと判定して読み込まないのか
- では逆にどうすれば同じファイルを読み込むことができるのか
- 夏時間対応
- 具体的に夏時間が関係するとどうなる?を理解しないといけない
- 業務で扱わなければほぼ意識しないかも
- あえて「壊す」様なオペレーションをしてみた時の挙動
- 何も起きないのか、よしなに動くのか
- 全く問題ないのか
- 自動で復旧や追従してくれる便利機能が備わっているのか
- エラーにはならないが、そのままだとよくない結果を招くのか
- 壊す時点でガードがかかるのか
- 問題が発生するので復旧作業が必要なのか
- 何も起きないのか、よしなに動くのか
個人的にはこの領域がきつかったです。
「専門家」「分野特化」というのはこういうことなのかと、思い知らされました。
パフォーマンス系
超実践的。
- TB級のロードを扱う時の実践的な対応が問われたりする
- クエリプロファイルのどこで時間がかかっているか等具体的なシチュエーション
- どう解決するかを正しいものを複数選んだり、解決内容と実施順が全て書かれたものから正しい順番になっているものを一つだけ選んだりする
- 数千人が参照するダッシュボードをクエリ遅延無く見たい時にどんな方法を取るのか?みたいな問題
- 現場ではいろんな仕組みが存在する中で考える余地は色々ありそうだが、Snowflakeに閉じて何ができる?どうする?が鍵となる
- 問題設定によっては「(明記されていないが)コスト度外視(だと瞬時に理解する必要あり)」「とにかく手短に実現」「コストパフォーマンス重視」だったり様々なのでよく背景を理解することが重要
- 傾向としては「低コスト重視」というよりは、「パフォーマンス重視」「早く手堅くできる方法」が問われている感じがした
これは試すにもハードルが高いですよね。
簡単には試せない、実践経験や想像力がものをいいそうです。
そういえば、n年の業務経験があることみたいな、資格試験の受講(推奨)条件があったようななかったような。
ソリューション系
- オンプレからsnowflakeにロードするのに、最も運用負荷が低いやり方は?
- 与えられた環境や構成をみて、良さそうな手段を選択肢から選ぶ
- 外部テーブルのjsonに対してハイパフォーマンスに読み込んでjoinしたい時のアプローチとか
- 異なるタイムゾーンでアイドル期間が異なるワークロードでのウェアハウスの運用管理方法
- コストを抑えて本番環境のデータを元に開発環境テーブルを作るにはどんなステップを踏むと良いか
会社ごとに「そもそも本番環境からデータなんてコピーできないよ」みたいな事情はあるかとは思いますが、この試験問題の世界観では関係ありません。
問題設定によりけりですが、日本文化や会社事情のバイアスを捨てないと問題は解けないのです…。
色々考えられそうな反面、考え出すと時間がめっちゃ解けますね。
キーワードなど
公式案内のカリキュラムが全てですが、個人的に印象に残ったキーワードを載せます。
パフォーマンス・モニタリング系
- パフォーマンス改善
- キャッシュ(結果キャッシュを活かす等)
- クラスタリング (
SYSTEM$CLUSTERING_INFORMATION
等のよく出てくるやつ) - クエリプロファイルの見方、分析のシナリオ(結構深掘り、洞察が必要かも)
データパイプライン系
- pipe(ステータス確認、エラー対応、メタデータの仕組み)
- copy into(エラーハンドリング、VALIDATION_MODE)
- Snowpipe(エラーハンドリング、同じファイルの再ロード制御)
ストリーム・タイムトラベル系
- 鉄板の
DATA_RETENTION_TIME_IN_DAYS
- ストリームのオフセットの考え方
- ストリームとタイムトラベルの相互作用
半構造化データ系
-
FLATTEN
(recursive、LATERAL併用・非併用) - リレーショナルなデータを半構造化形式に変換(
OBJECT_CONSTRUCT
) - variant列のデータを持つテーブルからリレーショナルな形で別のテーブルにinsertする方法
UDF・外部関数系
- UDF (言語差分による仕様もポイント。特にJavaScript、NULL処理)
- 外部関数(データ共有の制限)
- セキュアUDF
セキュリティ・権限系
- ロール、権限周りの話
- マスキングポリシーの適用方法
- シェア(組織またぎ、クラウドまたぎの制限)
この辺りは主に「Advanced Architect」の方で多く聞かれた印象。
運用・ソリューション系
- Snowpark(アーキテクチャ、実行環境)
- 外部テーブルのパフォーマンス最適化
- オンプレからのデータロード戦略
以上です。参考になれば幸いです。
Views: 0