今日の学び@2020/2/24

SQL&BigQuery(BQ)


-- URLからの文字抽出
SELECT
  timestamp_log,
  url,
  -- NET関数で取得可能なpath
  NET.HOST(url) AS host,
  NET.PUBLIC_SUFFIX(url) AS suffix,
  NET.REG_DOMAIN(url) AS domain,
  -- その他の抽出
  REGEXP_EXTRACT(url,'//[^/]+([^?#]+)') AS path,
  SPLIT(REGEXP_EXTRACT(url,'//[^/]+([^?#]+)'),'/')[SAFE_OFFSET(1)] AS path1,
  SPLIT(REGEXP_EXTRACT(url,'//[^/]+([^?#]+)'),'/')[SAFE_OFFSET(2)] AS path2,
  REGEXP_EXTRACT(url,'id=([^&]*)') AS id,
FROM
  `log`

正規表現マストやなぁーこれはw
別途学ぶ必要がある。

-- 日時データ変換
SELECT
  -- 現在日時の取得
  CURRENT_DATE AS current_dt,
  CURRENT_TIMESTAMP AS current_stamp,
  -- 日時データ変換
  CAST('2020-02-01' AS date) AS dt,
  FORMAT_DATE('%F','2020-02-01') AS dt2,
  DATE('2020-02-01') AS dt3,
  CAST('2020-02-01 12:00:00' AS TIMESTAMP) AS timestamp,
  TIMESTAMP('2020-01-01 12:00:00') AS timestamp2,
FROM
  `log`

日時データ変換方法は沢山ある。 汎用性を重視するとFORMAT_かな?

-- 各時間帯抽出
SELECT
  timestamp_log,
  TIMESTAMP(timestamp_log) as TIMESTAMP,
  EXTRACT(YEAR from TIMESTAMP(timestamp_log)) AS year,
  EXTRACT(MONTH from TIMESTAMP(timestamp_log)) AS month,
  EXTRACT(WEEK from TIMESTAMP(timestamp_log)) AS week,
  EXTRACT(HOUR from TIMESTAMP(timestamp_log)) AS hour,
  EXTRACT(MINUTE from TIMESTAMP(timestamp_log)) AS minute,
  EXTRACT(SECOND from TIMESTAMP(timestamp_log)) AS second,
FROM
  `log`
  • 4章通読 かなり面白いw
    3章の前処理が面倒に感じたが、頻出かつ根本的な部分と分かったので固めよう

Python

  • データサイエンスのためのPython入門
    • 4-6
      • 内包表記:便利w
        [i * 30 for i in range(0,10)]

      • lambda関数(Jsで言う無名関数)
        x = lambda 引数: 戻り値

      • 可変長引数

        • *(args):list型
        • **(kwargs):dect型
          • kwargs.get()
            • 値取得
            • None対策
            • 第2引数でデフォ値

次の週末に、Python周りの環境構築(Docker,Github)をやろう

ふたたびの高校数学

今日は、ほとんどやっていない
入門レベルなので、短期間でやる事を意識しよう

改善点


3連休の改善点は、優先度を意識する事
今回、メイン言語(SQLPython、Js)より、GCP、Dockerに時間を掛け過ぎた

楽しむ事を大切にしているが、優先度は重要
計画に縛られず、計画をコントロールしていきたい

Jsのモチベを上げる為、必要なUDFを洗い出すのが良いかも

優先度、ペースを少しずつ改善して、計画の確度を高めていこう

とにかく分析SQLを極めるのが最優先