見出し画像

Frosty Friday Live Challenge Vol0をやってみた

急ですが、今日からFrosty Fridayを始めました。

なぜはじめたのか?

Snowflake女子会に初リアル参加をしまして、LT会なのにLTじゃないクオリティに圧倒された私。
Snowflakeは網羅されている分野が多すぎて何から手を付ければ身に着くか分からんって悩んでいた私。
会社でも「この教材からやってみたら?」って言われていたものの、実はSnowflakeそんなに得意じゃないんだよねぇというやる気スイッチ出ず高い壁に阻まれていたのです。

そんな悩みをぼそっと投稿してみたらですね

がくさんからこんなお返事をいただきまして・・・

藤さんからはこちらの記事を勧められまして・・・

色々やり取りしているうちにすみさんに「社内で勉強会やってるよ」って教えられまして(木曜日16時半からだったので、私木曜日NGだったの、ごめんね)

わかった!じゃあ今日からやればええやん!!!!というただの思い付きです。

Frosty Fridayって?

ちゃんと言語化できないのでこれ見てください。

TableauでいうWorkout Wednesdayみたいなイメージ?(そういうとなんかハードル上がるなぁ)

幸運にもtomoさんとがくさんが解説つきのYoutube配信をしてくれている・・・!

実は始めるのに躊躇していた

知ってたんだけどSnowPro Coreを持ってないと難しいと人づてに聞いていたので、飛び込むことすらしり込みしていました。

Basic/Intermediate/Hardとレベルわけされていて、Basicだけでも写経していくといいですよ、とがくさんからアドバイスをもらい
「よしやってみよう!」ってことでまずはやってみることにしました。

こういうやつってアウトプットをXだけにとどめておきがちなんですが、
今後のことを考えるとブログにした方がいいやっえいやっってことで、
今日学んだこと(tomoさんの写経)をアウトプットすることにしました。
えいやっ↓

--https://frostyfriday.org/blog/2022/07/14/week-1/

use role accountadmin;
GRANT USAGE ON WAREHOUSE compute_wh TO ROLE sysadmin;
use role sysadmin;
use warehouse compute_wh;

--DB/スキーマの新規作成
create database if not exists frosty_friday;
create schema if not exists frosty;
use schema frosty_friday.frosty;

create or replace stage data_dumps_week1
 url = 's3://frostyfridaychallenges/challenge_1/'
 directory = {enable = true}; --これをtrueにしておくとディレクトリが有効になって更新しなくてもよくなる

 --外部ステージの中身を確認
 list @data_dumps_week1;

 --ステージデータのファイル内容を確認
 select $1,$2,$3 from @data_dumps_week1;
 
 --テーブル作成
 create table if not exists data_dumps_week1 as
 select $1 as val from @data_dumps_week1;

 --作成内容を確認
 select * from data_dumps_week1;


 --実務でよくあるロジック パターン2
 --ffテーブルを作る
 create or replace database ff_db;
 create or replace schema ff_db.ff_schema;
 use schema ff_db.ff_schema;

 create or replace stage ff_db.ff_schema.ff_s3
 url = 's3://frostyfridaychallenges/challenge_1/';
 
 
 --外部ステージの中身を確認
 list @ff_db.ff_schema.ff_s3;

 --ファイルフォーマットをcsvに設定
 -- total_emptyという値がノイズになっているのでNULLにする
 create or replace file format csv_ff
    type =csv
    skip_header =1 
    null_if = ('NULL','totally_empty')
    skip_blank_lines = true
    comment = '"null_if" is used to eliminate useless values';

--ファイルフォーマットを確認できるSQL 実務でよく使うらしい
select $1,
    metadata$filename,
    metadata$file_row_number
from @ff_s3(file_format => 'csv_ff');

create or replace table week1csv(
    result varchar,
    filename varchar,
    file_row_number int,
    loaded_at timestamp_ltz
);

copy into week1csv from(
    select $1,
    metadata$filename,
    metadata$file_row_number,
    metadata$start_scan_time
from '@ff_s3')
file_format =(format_name = 'csv_ff');

select * from week1csv order by filename,file_row_number;

delete  from week1csv where result is null;


/*パターン3*/
--DB/スキーマの新規作成
create database if not exists Samples;
create schema if not exists samples.frosty;
use schema samples.frosty;

create or replace stage week1_basic_external_stage_pattern3
 url = 's3://frostyfridaychallenges/challenge_1/';

 --ファイルフォーマットをcsvに設定
 -- total_emptyという値がノイズになっているのでNULLにする
 create or replace file format csv_ff
    type =csv
    skip_header =1 
    null_if = ('NULL','totally_empty')
    skip_blank_lines = true
    comment = '"null_if" is used to eliminate useless values';

select listagg($1,' ') within group(order by metadata$filename,metadata$file_row_number) as col1
from @week1_basic_external_stage_pattern3 (file_format => 'csv_ff');

create temporary table frosty.week1_basic_externalStage as
(select listagg($1, ' ')within group(order by metadata$filename,metadata$file_row_number) as col1
from @week1_basic_external_stage_pattern3 (file_format => 'csv_ff'));

学んだこと(疑問に思ったこと)


番外編

これ、noteにしたのは「続かなくなることを心配したから」です・・・💦
なんとなく、ちゃんとアウトプットしないと忘れそうだし、
あとで検索して私が思い出すためっていう意味合いもあります。
ブログまで書いてたら時間なくなるんちゃうか?と思いますが、その辺は何とかやっていければいいかなぁって思ってます。
1日坊主にならないことを願って見守っていてください。