ロックとチュウーハイとこりんがるな日々

日々のインプットした事をアウトプットする場所

Aurora ログを設定する

Auroraで出力できるログの種類

  • default

    • error/mysql-error-running.log{,.YYYY-MM-DD.nn}
    • error/mysql-error.log
    • external/mysql-external.log
  • option

    • クエリログ(general_log)
    • スロークエリログ(slow_query_log)

上記が出力できます

logのoutput先を指定

logのアウトプット先にはfile, とtableが選択可能

  1. parameter group
  2. name: log_output
  3. value に table or file を選択する

クエリログ(general_log)

  1. parameter group
  2. name: general_log
  3. value に 1

スロークエリログ(slow_query_log)

  1. parameter group
  2. name: slow_query_log
  3. value に 1

スロークエリの時間を設定する

何秒以上かかったクエリをスロークエリログに吐き出すのかを設定する、デフォルト値は10秒に設定されており、0秒にするとすべてのクエリがログに書かれます

  1. parameter group
  2. name: long_query_time
  3. value に 秒数を指定する

設定の反映

parameter group の反映は10秒ほどで反映します

2017年行く年来る年

2017年の最後にいつも通りブログを更新する事にする
今年は7本しか投稿していない事に驚きを隠せない、ちなみに結構投稿したなって方向に驚きです

さて、2017年はどんな年だったのかとふりかえってみる
2017年の前半はのびにのびたシステムリプレイスの作業に明け暮れていました
後半はGoogleAnalytics(※以下GA)との戦い、自分たちのanalyticsとGAとの数字合わせに
明け暮れていました

リリースできないシステム・伸びていくスケジュール・調査不足によりリリース直前に発生する バグ、そしてさらに伸びるスケジュールと信用と信頼を失った2017年だったなと思います

人に対しても伝わらない、うまく伝えられないと正直どうやったらええねんってとか、嫌われる 勇気を持てず八方美人、優柔不断な態度が目立ったと思うそれが良くない循環を産んだと思います

正直うまくいかなすぎてやめたろかなぁ!!!!!って思った事もあったなぁと今になって思います

その時期は人からの意見も真正面から受け止める事ができずに

んな事はわかってるねん!!
言われんでもやってるわぁ!!
おまえらより2000倍やっとるわ!!

とか負の感情におおわれた時もありました が全て自分に原因がありました
そんな事を考えられるようになったのも良い上司や仲間に出会い、すごく助けられ、教えられ、考え方を変える事ができ、 人に対して感謝・尊敬をする事ができるようあになったと思います

2017年が始まったばかりの頃は個の力を強くする事がチームいとって重要な事だと思っていたが振り返ってみるとチームと人に向き合った1年だった

2018年の抱負

チーム力上げる事に注力する
チームとして問題を解決する為の技術支援などを行う

個としてやれる事は限られている!!
チームとして成果を出す事にこだわる!!

あと・・・死ぬほど仕事する

2017年おせわになったひとたち

支離滅裂な文章ですが、今思ってる事を書きました
今年もありがとうございました m( )m
良いお年を

passwordを生成するコマンド

macのみ

  • install

    brew install pwgen

  • 実行   

    • pwgen

      いっぱいでてくる

    • pwgen 16 1

      16文字でパスワードを一個だけ生成

    • pwgen -s 16 1

      16文字でパスワードを一個だけ生成、複雑にする

    • ほかにもあるが -h でヘルプを参照してください

prestoで整数同士の割り算をすると整数が返される問題の解決方法

prestoで整数同士の割り算を行う整数が返却される場合は良いが以下のような場合に0が返却される

select (10 / 5);

予想される値は 0.5 だが prestoの場合は 0 が返却されてしまう 正常に0.5 を返却してもらうためには以下のようにする必要がある

select (10 * 1.0 / 5);

もしくは以下のようにする

select (cast(5 as DOUBLE) / 10);

prestoの便利関数 url_function

prestoにはURLを分解する関数が付いています、使うと正規表現で分割してたのがアホらしくなるほど便利なんでめもっときます

select 
  url_extract_fragment('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_host('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_parameter('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test', 'flag'),
  url_extract_path('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_port('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_protocol('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test'),
  url_extract_query('http://www.hoge.com:8080/fuga/var/index.php?flag=1&flag2=2#test')
;
  • url_extract_fragment([url])

    与えられたURLからfragment部分を取得します ↑のSQLからは以下が取得されます

      test
    
  • url_extract_host([url])

    与えられたURLからhost部分を取得します ↑のSQLからは以下が取得されます

      www.hoge.com
    
  • url_extract_parameter([url], [parameter_name])

    与えられたURLから指定したパラメーターを取得します ↑のSQLからは以下が取得されます

      1
    
  • url_extract_path([url])

    与えられたURLからpath部分を取得します ↑のSQLからは以下が取得されます

      /fuga/var/index.php
    
  • url_extract_port([url])

    与えられたURLからport部分を取得します ↑のSQLからは以下が取得されます

      8080
    
  • url_extract_protocol([url])

    与えられたURLからprotocol部分を取得します ↑のSQLからは以下が取得されます

      http
    
  • url_extract_query([url])

    与えられたURLからprotocol部分を取得します ↑のSQLからは以下が取得されます

      flag=1&flag2=2
    

公式: https://prestodb.io/docs/current/functions/url.html

prestoで縦持ちのテーブルを横持ちのテーブルに変換する

prestoで縦のテーブルを横のテーブルに変換する方法です

with o as (
  select
    id, age_range, count(td_url) as count
  from
    m
  group by
    id, age_range
),
p as (
  select
    id,
    MAP_AGG(age_range, count) as kv
  from
    o
  group by
    id
)
select
  id,
  IF(kv[20] is null, 0, kv[20]) as arv20,
  IF(kv[25] is null, 0, kv[25]) as arv25,
  IF(kv[30] is null, 0, kv[30]) as arv30,
  IF(kv[35] is null, 0, kv[35]) as arv35,
  IF(kv[40] is null, 0, kv[40]) as arv40,
  IF(kv[45] is null, 0, kv[45]) as arv45,
  IF(kv[50] is null, 0, kv[50]) as arv50,
  IF(kv[55] is null, 0, kv[55]) as arv55,
  IF(kv[60] is null, 0, kv[60]) as arv60
from
  p
  1. map_agg関数でマップ型の構造をつくる
  2. 1で作ったマップを参照する

参照: http://qiita.com/k24d/items/79bc4828c918dfeeac34

TreasureData 前日分のログを指定する方法

最近Treasurdataを使っています 何回か同じ事を調べたのでメモです

hiveとprestoで現在のunixtimestampの取得方法が違ったので以下に書きます

hive

select * from a where
TD_TIME_RANGE(
    time,
    TD_TIME_FORMAT(TD_TIME_ADD(unix_timestamp(), '-1d'), 'yyyy-MM-dd 00:00:00', 'JST'),
    TD_TIME_FORMAT(unix_timestamp(), 'yyyy-MM-dd 00:00:00', 'JST'),
    'JST'
)

1時間前の場合

select * from a where
TD_TIME_RANGE(
    time,
    TD_TIME_FORMAT(TD_TIME_ADD(unix_timestamp(), '-1h'), 'yyyy-MM-dd HH:00:00', 'JST'),
    TD_TIME_FORMAT(unix_timestamp(), 'yyyy-MM-dd HH:00:00', 'JST'),
    'JST'
)

presto

select * from a where
TD_TIME_RANGE(
    time,
    TD_TIME_FORMAT(TD_TIME_ADD(CAST(TO_UNIXTIME(NOW()) as BIGINT), '-1d'), 'yyyy-MM-dd 00:00:00', 'JST'),
    TD_TIME_FORMAT(CAST(TO_UNIXTIME(NOW()) as BIGINT), 'yyyy-MM-dd 00:00:00', 'JST')
    'JST'
)

1時間前の場合

select * from a where
TD_TIME_RANGE(
    time,
    TD_TIME_FORMAT(TD_TIME_ADD(CAST(TO_UNIXTIME(NOW()) as BIGINT), '-1h'), 'yyyy-MM-dd HH:00:00', 'JST'),
    TD_TIME_FORMAT(CAST(TO_UNIXTIME(NOW()) as BIGINT), 'yyyy-MM-dd HH:00:00', 'JST')
    'JST'
)