こんにちは、株式会社オズビジョンの@seungyeon-kimです。
最近、データの集計のためre:dashをよく使っていますが、取得したデータからほしい情報だけ取り出したい時や、入力値を加工してデータを取得したい時があります。
その時、有用に使えるのが「Python」です。
実は私、Php以外は大学時代にJavaとC、遊びでrubyをちょっと触ったぐらいで、Pythonは初めてです。(rubyと使い方は似ていますが)
ですので、re:dashで処理の追加が必要な時、Pythonの使い方の調べにかなり時間がかかってしまいます。
その手間を減らすため、今回は自分がre:dashでよく使っているPythonの使い方を共有したいと思います。
クエリ関連
クエリにバインディングがしたい
query = '''SELECT * FROM TABLENAME WHERE COLUMN = ?'''
値の特定はできないが、データを渡してクエリを回したい時、主に使う方法が下記の二つです。
replace()を使って、文字を特定して置換する
# 文字列.replace(置換される文字, 置換する文字)
query.replace('?', データ)
reモジュールのsub()で、正規表現を使って置換する
import re
# re.sub(正規表現, 置換する文字列, 置換される文字列 [, 置換回数])
result = re.sub('\?', データ, query)
クエリ結果が0件かどうかを確認したい
len()を使って、データの長さを確認
データの長さを返す**len()**を使います。
len()でデータの長さを取得して、長さが0かどうかを判断して処理を分岐します。
data = ['あ', 'い', 'う', 'え', 'お']
len(data) # 結果5
if notで、データがあるかどうかを確認
※ 追記 (2017/12/04 22:26)
@shiracamusさんよりアドバイスいただきました
0や空リストなどはFalseとして判定されます。
if not data:
入力値関連
カンマ区切りの複数データを配列にしたい
re:dashの入力フォームから入力してもらった値がカンマ区切りの複数のデータの場合、配列に作ってから処理をしたい時、ありますね。
その場合は、**split()**を使って、文字列を分割します。
text = 'おはよう, ございます'
# 文字列.split(切り分けする文字)
text.split(',') # 結果 => ['おやよう', 'ございます']
入力値の一部を切り出したい
特に日付データから、年と月を切り出したい!という場合、よく使います。
date = '20170911'
year, month, day = date[0:4], date[4:6], date[6:8]
>>> year
'2017'
>>> month
'09'
>>> day
'11'
おわりに
普段はPhpをメインで使っていまして、Php以外の言語はあまり触る機会があまりありませんでした。
そのため、最近re:dashで集計をしながら、ちょっとずつPythonを触っていて、やはり新しいことを学ぶのは楽しいな~と思っています。
re:dashも、pythonも、使い始めたばかりなので、Pythonもre:dashもガリガリ使っている方、またはもっといいやり方知っているよ!という方いらっしゃいましたら、ぜひコメントください。
次回の私の投稿は、Pythonまとめver2を投稿しますので、楽しみにしてください。
次の更新は、オズビジョン入社1年目で、大活躍中のENGから「新卒ENGが出くわした頻出IT用語集」を共有するらしいです!IT用語は、覚えても覚えても新しいものがどんどん出てくるから、ENGはもちろんIT系に働く人なら、常に勉強すべきものですよね。
すごく有意義な内容になると思いますので、ぜひ楽しみにして下さい!
おまけ
re:dashでPythonを使うコツとPythonの基礎まとめも共有します。
すごくわかりやすいので、ぜひ見てください。