今日の学び@2020/2/22-23
SQL&BigQuery(BQ)
- 分析活用入門
- 9章長文SQL
- 相関サブクエリ
- 9章長文SQL
SELECT t1.a, t1.b, ( COUNT(t1.a) FROM mytable AS t2 WHERE t1.a > t2.a --ここ ) AS **rank** FROM mytable AS t1
BQの相関サブクエリは、LEFT JOINだった。
実際、WHERE句に不等号を使うと下の様なエラーが出る。
LEFT OUTER JOIN cannot be used without a condition that is an equality of fields from both sides of the join.
仕方ないので放置w 以降の分析活用入門は、レシピでカバー出来そうなので、いよいよレシピへ
find 'C:\Users\xxx\SQL_bigdata_recipe\' -type f -name "*.sql" -print0 | xargs -0 sed -i.bak -e "s/integer/INT64/g"
LINUXコマンド便利www
正規表現同様、少しずつ覚えていこう
GCP
- 連携フロー模索
- サービスヘルプ乱読
- GCPのサービス間で、通知手段としてCloud Pub/Subが使われる
- Pub/Subの仕組
環境構築
- ローカル環境の断捨離w
- xampp
- Anaconda
- DB Browser for SQLite
- Postgresql
gcloud VSCodeのbashで使える様、Google Cloud SDKインストール
gcloudは、コマンドプロンプト上で起動するが、GitBashを使いたいので、エイリアス設定&保存設定:
"echo 'alias gcloud='gcloud.cmd' >> ~/.bashrc"
- 確認:
tail -n 10 ~/.bashrc
保存:
source ~/.bashrc
これで gcloudコマンドが叩ける(bqも同様に作っておいた)
更に、bq shellで「bq」無しでもコマンドが叩ける。BigQueryのテーブル定義とデータ挿入も一括でやりたいので、次回調べてみよう。
- gcloudコマンド
- projects
- create xxx
- describe xxx
- list
- --filter=yyy
- update xxx
- --name=yyy
- delete xxx
- 復元は、30日以内にCloud Consoleから
- projects
- gcloudコマンド
Google Colabのローカル接続にしたい&Dockerも気になり、調べつつ設定
- Docker
- hubアカウント作成
しかし、desktop for Windowsは、home未対応の為、インストール出来なかった
一旦、Docker諦め、Vagrant&VitualBoxを調べる
Vagrant&VitualBox Vagrantのboxでは、ubuntuのバージョンが古いので、virtualBoxで最新版をインストールした
Vagrantに設計書書いて、VirtualBoxのVM起動する ⇒ Dockerで言うfileとImageみたいなもんかなと
とここで、↓Docker ToolBoxの存在を知るw
これがあれば、Vagrant不要、と言うか、Docker出来そうwDocker Toolbox
- docker login
- docker-machine create default --driver virtualbox
- docker-machine ssh マシン名でSSH接続。以後、Dockerコマンドで操作
Windows homeでも、無事、Docker起動出来た。 これで、データサイエンスブログを満喫できそうw
- Dockerコマンド
- images:ローカルのDockerイメージ一覧
- container run <image-name>:Dockerイメージからコンテナ起動
Python
ふたたびの高校数学
- 幾何学
- 図形(数A)
- 三角比(数Ⅰ)
本当、この本の作者が神過ぎるw
めちゃくちゃ分かりやすい。
一旦、高校シリーズ全部やり終えたら、マセマ高校、大学どちらにするか考える予定。(結構先になりそうだけどw)
学びの時間
昨日・今日とGCP・ローカルの環境周り?を遊び過ぎてしまったかも知れない。
3言語に時間を充てよう
参考URL)
- https://www.isoroot.jp/blog/1208/
- https://qiita.com/KIYS/items/8ac37f6757a6b7f84569
- https://neos21.hatenablog.com/entry/2019/11/03/162430
- https://qiita.com/Y-Kanoh/items/180e73c47970ea9bf5bc
- https://qiita.com/fkooo/items/356c9954181c00818f12
- https://www.kabuku.co.jp/developers/run_google_colaboratory_notebooks_on_local_machine
今日の学び@2020/2/20
SQL&BigQuery(BQ)
COUNT(CASE WHEN THEN) as a
CASE式、特に集計後の横持ち変換は、慣れないと独特。
特に、3軸集計(RFM分析)になると訳分からないw
幾何学とやらを学ぶと過程をすっきり、イメージつくのだろうか。
とりあえず、明日は9章を1回やり、土日月はレシピ三昧にする。
分析活用8・9章は、レシピ後に成長度を測る目安としよう。
Cloud Functions(CF)
Cloud Storage(CST)
Cloud Scheduler(CSC)
- 連携フロー確認
Python・Node.jsが候補になったが、BQのユーザー定義関数(UDF)は何とSQL/JSのみ対応。
と言う事で、Jsも学びに追加w
正直に言えば、フロントを後回しにする事にしたので、いまいちJsのやる気が出なかった。
ただ、BQのUDFが使えるとなると話は別w
Jsモチベが上がるいい契機になって良かったと思う。
時間がw とウダウダ考える時間が無駄なので、効率化・工夫して改善していこう
Python
- データサイエンスのためのPython入門
- 3、4途中まで
以前、Python入門書を2冊読んだ事があるので、復習になった。
特に良かった点は、データサイエンスでどの様な用途で使われているかの記述。
濃淡がある事で、学びの要点が分かる良教材だなと感じた。
そして、楽しいw
ふたたびの高校数学
- 命題と証明
学生時代は、全く興味無かったが、今はこれが重要だと分かる。
集合や論理演算辺りも、今思えば有用だったんだなと。
まぁ、少しずつ楽しんでいこう。
学びの時間
時間帯別に、学ぶ内容を調整していこうと思う。
朝:思考系(SQL・数学・Python,JS)
隙間時間:調べもの、スマホ通読(GCP・GMP・データサイエンス講座)
夜:朝の残り・ブログで学び整理
いずれにしろ、分析SQLを極める事が最優先
今日の学び@2020/2/19
SQL&BigQuery(BQ)
- 分析活用入門
- 8章アドホック分析続き
- ウインドウ関数内のORDER BYは基本必須
- 縦持ち横持ち変換
- 分析手順
- 集計結果(分析モデル)設計
- 全体の概要把握(集計関数、以下同様)
- 1軸目(グループ化)の概要把握
- 3.の状態で、2軸目の概要把握
- 2軸目が数値以外の場合、数値化(基準値との差分、集計関数)
- 数値指標はGROUP BY出来ない為、NTILEでグループ化
- 8章アドホック分析続き
縦持ち横持ち変換方法は、他にもあるのだろうか?
正直、このやり方は、ディメンション数が増えると面倒w
pandasにpivot関数がある様なので、pythonで変形した方が良いのかな?
アドホック分析から、より実践的に考えながらコーディングする事にした。
結果、更に面白くなってきたw
8~9章を腹落ちさせたら、いよいよレシピへ。
楽しみ♪
Cloud Functions(CF) & Cloud Storage(CST) & Cloud Scheduler(CSC)
- 連携フロー確認
DataPortal
- 権限確認
GCPにも、実は簡単に使えるサービスもあると知った。
インターフェイスも、GUI、CONSOLE、APIと多様なのでワクワクするw
そして、Googleの3大言語が、Python,Js,Goだと言う事を再認識した。
結論!GCP面白すぎるw
学びの時間
学びたい事が山ほどあって、理想的には、平日5時間位は勉強したいのだが、なかなか。
まぁ、日々改善改善w
明日も楽しもう♪
今日の学び@2020/2/17
SQL&BQ
- 業務のSQL
- スケジュールクエリ設定
DataPortal
- BQ連携
- ダッシュボード作成
業務中、簡単そうなのに、うまく出来ない集計があった(;´Д`)
検索、エクセル整理、学んだ知識を色々使い模索しまくった。
なぞなぞやパズルの様な、知れば簡単な感じもする、そんなむず痒い感覚w
気になって、電車で考えたり、自宅で色々と模索していた。
お陰で理解がかなり深まった気がした。
某通信教育の問題の様な?知恵の輪の様な?あの感覚w
他にうまい方法もあるのかも知れないし、基礎なのかも知れないけど、Webで調べた所、見当たらなかった。
資料を使った学び(INPUT⇒OUTPUT)も重要だけど、
考えながら模索する学び(OUTPUT⇒OUTPUT)は非常に楽しいw
学びと言うより、日記になってしまったが、まぁ、たまにはいいかもw
今日の学び@2020/2/16
SQL&BQ
分析活用入門の復習
6章:結合
LEFT JOIN
- 左テーブル主キーに対して、右レコードが一意でない場合、結合テーブルは超過分レコード数が増える
自己結合INNER JOIN
- BQは集計が怪しく、DISTINCT必須かも
CROSS JOINは、今の所、用途不明w
7章:WINDOW関数
- フレーム範囲指定
SELECT a, b, RANK() OVER( ORDER BY b PARTITION BY b ROWS/RANGE n span AND m span ) as a_rank FROM A_table;
- BQのRANGE指定は、INT64のみ対応
spanの指定
span 対象 CURRENT_ROW 現在行 n PRECEDING n行前 UNBOUNDED PREDEDING 最上行 m FOLLOWING m行後 UNBOUNDED FOLLWING 最下行
8章:アドホック分析
- 少しだけ通読2回目w
Python
Jupyter色々設定
今日は、ほぼSQLだけを学んでいたが、計2hもやると飽きてしまい、予定よりこなせず。
GASやGAは、少し気分転換になるが、まだ考える要素が少ないので刺激が少なく。。w
業務的には必要だが、気分転換の気分転換位の立ち位置
と言う事で、4月以降に始める予定だったPythonに手を出す事にした👍
教材は、Twitterで前から気になっていた
かめさん@usdatascientistの講座
datawokagaku.com
最新記事までスキャニングしてみたら、まだ数学は余り出てなくいけそうか?と
予想していなかったが、内容が今学んでいる分析SQLとかなり親和性が高そう!
これって、効率的?!と思ったので、組み込む事決定!
学びの計画を更新予定だったが、更に更新になった
ちなみに、Mac book pro2020までは、Winなので、Dockerは一旦飛ばすw
下の様なプランで試してみる
1. SQL⇔Python ⇒ 数学への関心
2. 気分転換にGAS、GA ⇒ JS、ログデータへの理解
あと、markdown、ちょっとずつ知識が付いてきた(*´ω`)
昨日・今日の学び@2020/2/14-15
SQL&BQ
- レシピ
- 全章スキャニングw通読
昨日今日は、レシピ本を全章スキャニング通読wをした。
まさに求めていた内容で、使い込む一冊になりそう。
気になったのは、
前から薄々思っていたが、統計学はもはやマストやな。
分析活用を腹落ちさせた後は、レシピを極めたい。
GAS
- WEB教材
- 2章13~16節
- Rangeオブジェクト続き
- getA1Notation()
- clear()
- crearContent()
- clearFormat()
- clearDataValidations()
- clearNote()
- UrlFetchApp.fetch(URL[,パラメータオブジェクト])
- Rangeオブジェクト続き
- 2章13~16節
GASは、意外に楽しくなってきたw
参考教材はゆるいけど、正直、JS本より面白いw