今日の学び@2020/2/22-23

SQL&BigQuery(BQ)


  • 分析活用入門
    • 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 以降の分析活用入門は、レシピでカバー出来そうなので、いよいよレシピへ

  • ビッグデータ分析レシピ
    • sample大量ファイルのデータ型が違う
      ⇒ ぐぐってLINUXコマンドで一括変換
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

  • Cloud Functions(CF)
  • Cloud Storage(CST)
  • Cloud Scheduler(CSC)
  • Cloud Pub/Sub(CPS)

  • 連携フロー模索
  • サービスヘルプ乱読
    • GCPのサービス間で、通知手段としてCloud Pub/Subが使われる
    • Pub/Subの仕組

環境構築

  • ローカル環境の断捨離w
  • gcloud VSCodebashで使える様、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から

Google Colabのローカル接続にしたい&Dockerも気になり、調べつつ設定

  • Docker
    1. hubアカウント作成

しかし、desktop for Windowsは、home未対応の為、インストール出来なかった
一旦、Docker諦め、Vagrant&VitualBoxを調べる

  • Vagrant&VitualBox Vagrantのboxでは、ubuntuのバージョンが古いので、virtualBoxで最新版をインストールした
    Vagrantに設計書書いて、VirtualBoxVM起動する ⇒ Dockerで言うfileとImageみたいなもんかなと
    とここで、↓Docker ToolBoxの存在を知るw
    これがあれば、Vagrant不要、と言うか、Docker出来そうw

  • Docker Toolbox

    1. docker login
    2. docker-machine create default --driver virtualbox
    3. docker-machine ssh マシン名でSSH接続。以後、Dockerコマンドで操作

Windows homeでも、無事、Docker起動出来た。 これで、データサイエンスブログを満喫できそうw

  • Dockerコマンド
    • images:ローカルのDockerイメージ一覧
    • container run <image-name>:Dockerイメージからコンテナ起動

Python

  • データサイエンスのためのPython入門
    • 2-3 :コーディング
    • 2-7 :通読

    既に面白い。 今日は環境構築とCLI遊びにほうけてしまったので、明日は少し時間を割り振る

ふたたびの高校数学


本当、この本の作者が神過ぎるw
めちゃくちゃ分かりやすい。

一旦、高校シリーズ全部やり終えたら、マセマ高校、大学どちらにするか考える予定。(結構先になりそうだけどw)

学びの時間


昨日・今日とGCP・ローカルの環境周り?を遊び過ぎてしまったかも知れない。
3言語に時間を充てよう

参考URL)

今日の学び@2020/2/20

SQL&BigQuery(BQ)


  • 分析活用入門
    • 8章アドホック分析続き
      • CASE式
        • ランク付け:NTILEと違い、閾値が任意設定
        • CASE式で2軸目を集計し、横持ち変換
        • 3軸集計
  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)
隙間時間:調べもの、スマホ通読(GCPGMP・データサイエンス講座)
夜:朝の残り・ブログで学び整理

いずれにしろ、分析SQLを極める事が最優先

今日の学び@2020/2/19

SQL&BigQuery(BQ)


  • 分析活用入門
    • 8章アドホック分析続き
      • ウインドウ関数内のORDER BYは基本必須
      • 縦持ち横持ち変換
      • 分析手順
        1. 集計結果(分析モデル)設計
        2. 全体の概要把握(集計関数、以下同様)
        3. 1軸目(グループ化)の概要把握
        4. 3.の状態で、2軸目の概要把握
        5. 2軸目が数値以外の場合、数値化(基準値との差分、集計関数)
        6. 数値指標はGROUP BY出来ない為、NTILEでグループ化

縦持ち横持ち変換方法は、他にもあるのだろうか?
正直、このやり方は、ディメンション数が増えると面倒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



業務中、簡単そうなのに、うまく出来ない集計があった(;´Д`)
検索、エクセル整理、学んだ知識を色々使い模索しまくった。

なぞなぞやパズルの様な、知れば簡単な感じもする、そんなむず痒い感覚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. SQLPython ⇒ 数学への関心
2. 気分転換にGAS、GA ⇒ JS、ログデータへの理解

あと、markdown、ちょっとずつ知識が付いてきた(*´ω`)

昨日・今日の学び@2020/2/14-15

SQL&BQ

  • レシピ
    • 全章スキャニングw通読

昨日今日は、レシピ本を全章スキャニング通読wをした。
まさに求めていた内容で、使い込む一冊になりそう。

気になったのは、

  • 業務データとログデータの違い
  • ログ解析データの集計分析
  • 8章辺りから、統計学の基礎知識が必要そうw

前から薄々思っていたが、統計学はもはやマストやな。

分析活用を腹落ちさせた後は、レシピを極めたい。

GAS

  • WEB教材
    • 2章13~16節
      • Rangeオブジェクト続き
        • getA1Notation()
        • clear()
        • crearContent()
        • clearFormat()
        • clearDataValidations()
        • clearNote()
      • UrlFetchApp.fetch(URL[,パラメータオブジェクト])

GASは、意外に楽しくなってきたw
参考教材はゆるいけど、正直、JS本より面白いw

明日の予定

今後の学び(ver3.1)

以前のverはTwitterに記載しているが、振り返るとかなり変わったなぁとw 今後も柔軟に変える予定w

2月

~優先 SQL:コーディング(分析活用2回目&ドリル演習1回目) GAS:教材再選定→基礎 GA :アカデミー初級、上級 DP :入門ガイド 数学 :2級過去問分析、高校数学(ペースも把握)

~他 BQ:SQLで実践 GCS,GMP:実務 Python:4月以降に変更