(2話) 熱波師おかん、まずはsnowflakeでデータの入れ方と変換をお勉強

サウナ熱波師とsnowpro coreを目指すおかん、アキコです！

さて、今日は私の普段のお仕事について少しお話しさせてください。私は、日本に住んでいる外国の方々の生活をサポートする仕事をしています。簡単に言うと、「日本での暮らしをお手伝いするおかん」みたいなもんです。

特に、アジアから来られた方々を担当することが多いんですけど、これがなかなかおもしろい！言葉も文化も違うけど、そこがまた楽しいところ。たとえばね、一部かもしれんけどアジアの国では、女性同士が仲良くなると、腕を組んで歩くことがあるんですよ。これを初めて知ったとき、びっくりしたんですよ。ある日、私が担当してる女の子が私の腕に絡めてきて、「え？どうしたん？」って戸惑ってしまいました。でも、これが彼女たちにとっては普通のことで、親しみを表現する方法なんですよね。今でも急に腕を組まれるとドキッとするけど、そんな新しい発見がいっぱいある仕事なんです。
普段はパソコンもあんまり使わんしsnowflakeなんかとは無縁の環境で働いてるんで、ITのことなんて全然知らんかったんですけど、ひょんなことからこの資格に挑戦することになりました。

snowpro coreという資格にこれから取り組むには、さわでぃさんのこちらのブログがとてもわかりやすくて丁寧だと思いました。紹介するご許可いただきありがとうございます。

https://qiita.com/sawadyrr5/items/96ce1919070738253359

他にもたくさんの方がすごく分かりやすいブログを書いていらっしゃるので、もし許可いただけたら紹介したいとおもいます。

さて、今日は「snowflakeでのデータの入れ方と変換」についてのお勉強です。これ、正直言って、私には最初からハードル高そうやなって思ってました。でも、一歩ずつ進んでいけば、意外と理解できるもんやなって感じてます。とはいえ、まだまだですが、わかってる範囲を紹介していきますね。

データのロード（データを入れること）
まず、データを「ロード」するってどういうことやろ？ってところから始まりました。要するに、自分のパソコンにあるデータをsnowflakeにいれること、持ってくる作業のことを「ロード」って言うみたいです。まるで、自分の家から荷物を車に積んで、別の場所に運ぶみたいなもんですね。自分の家から外の場所に、だから「持って行く」の表現のほうがしっくりくると思うでしょ？私も最初はそうでした。でも勉強続けていくとスノーフレーク目線になるというか、自分の立ってる場所がスノーフレークみたいな感じに感じるから「持ってくる」のほうがしっくりくるんですね。不思議やわ。

で、そのデータの運び方がいろいろあるみたいで、まずは「ローカルファイルからのロード」についてです。ローカルファイルってのは、私のパソコンに保存されているファイルのこと。これをsnowflkaeにアップロードするには、SnowsqL(スノーエスケェール)っていう便利なアイテムか、ウェブインターフェイスを使います。

ウェブインターフェイスって何かと言うと、私らが普段インターネットを見るときに使う画面のことです。なんのことはない、パソコンでインターネットを使うときに開くいつもの画面のことです。スマホで言うと、iPhoneならサファリを使ってネットサーフィンすることが多いですよね。まあsnowflakeは基本的にパソコンから使うもんなんで、スマホでじゃなくてパソコンで操作することがほとんどです（スマホでも使えるかはわかりません。できるかも）。このウェブインターフェイスを使って、データを「ステージ」っていう場所に一時的に置いておくんです。

ステージにも内部とか外部とかあるけど、ちょっとそれは置いておいて、ステージってのは荷物の仮置き場だと私は理解してます。

ウェブインターフェイスを使うと、最大で250MBのファイルをアップロードできるんですけど、250MBってどれくらいかというと、snowflakeで扱うデータは写真とかじゃないねんけど、あえて例えるなら、スマホの写真100枚分くらいのサイズです。これ意外とデカい。で、それ以上の大きなファイルをアップロードする場合は、SnowSQLっていう便利なしくみを使わなあかんみたいです。これも最初は「なんでそんな面倒なことせなあかんの？」って思いましたけど、やっぱりちゃんとした仕組みでデータを扱うには、ちゃんとそれなりに手順があるんですね。このあたりは「ルールはルール」ってことでいいと思ってます。

https://docs.snowflake.com/ja/user-guide/data-load-web-ui

次に、「COPYコマンドを使用した一括ロード」について。COPYコマンドっていうのは、名前の通りコピー。snowflakeにデータを一気に運び込むための命令のこと。これ、まるで大量の荷物を一度にトラックで運ぶような感じです。データをsnowflakeにまとめて持ってこれるんです。そして、この時に「ウェアハウス」っていうのを使うんやけど、これがまた何やら難しそう。要は、私がsnowflakeに出した命令を実行してくれる、どこかにあるパソコンのことらしいです。目には見えない、どっかにあるパソコン。
もうほんとにクラウドっていうのは、目の前にはないからイメージ付きにくいですね。
ウェアハウスって、名前が「倉庫」って意味やのに、どうしてこういう名前がついたんか、途中でちょっと不思議に思いましたけど、とにかくそういうもんなんですね。どっちかというと、倉庫で働くロボットがウェアハウスな印象なんですけど、きにしすぎてもしょうがありません。
もし荷物が多ければ、ウェアハウスを大きくして、一気に処理するって感じみたいです。

データの変換
最後に「データの変換」についてです。
そもそもsnowflaekでつかうデータってなんでしょう？これがイメージついてわかってないと謎は深まるばかり。私も最初の壁のひとつでした。壁ばっかりやねんけど。
snowflakeで扱うデータっていうのは、私たちが普段使っているような写真やビデオみたいなデータとはちょっと違います。例えば、お店でどれだけ売上があったかとか、誰がどの商品を買ったのか、どんな商品が人気があるのか、そういったいつかなにかに役立つ情報をデータとして保存して、分析するために使われるものが多いです。

もっと具体的に言うと、例えばスーパーで買い物をしたときにレジで「ピッ」ってスキャンされますよね？あのときに、何の商品が何時に売れたのか、その情報がデータとして記録されてるんです。スイカ味のアイス人気ないやんとか。こういった情報が何千、何万という単位で集まってくると、全部を手作業で管理するのは無理ですよね。そこで登場して活躍するのがsnowflakeみたいなやつです。

snowflakeはこういった大量の情報を管理して、簡単に検索したり、まとめたり、分析したりできるようにしてくれる便利な偉い子です。例えば、「最近、チョコレートがよく売れてるけど、どの時間帯に一番売れてるんやろ？」って調べたいときに、snowflakeを使うとすぐに答えがわかるんです。ほんとはもっといろんな便利な高度な使い方がされてると思うねんけど、私にはわかりません。ごめんな！

このデータは、数字や文字が並んだ表みたいな形式（これを「テーブル」って呼びます！でも食卓とちゃうで！）で保存されることが多くて、膨大な情報を効率的に管理しているんです。ですので、snowflakeで扱うデータっていうのは、まさにこういう「お仕事のための情報」や「大事な記録」なんです。


データをsnowflakeに取り込むだけじゃなくて、それを実際に使うときに、ちょっと加工したいときがあるみたい。
そんなときに使えるのが「COPY INTOコマンド」です。このコマンドを使えば、テーブルのなかの順番を並べ替えたり、形を変えたり、いらん部分を切り捨てたりできるんです。まるで、お料理をしながら材料を切り揃えたり、味を整えたりするみたいな感じですね。ハンバーグにつかうにんじんが乱切りだったら困るから、みじん切りにするみたいなもんかなって理解しときました。

さらに、snowflakeでは「半構造化データ」も扱えるんです。って説明したいけどごめん、これちょっと私には正直わからんかった。

このようにして、勉強してえました。正直、専門用語が多くて頭がパンパンやけど、一つ一つ理解していくことで、少しずつ進めていけるんやなって思ってます。次回もまた新しいことを学んでいきますので、一緒に頑張りましょう！
文章長すぎて見にくいと思うけど堪忍してな。