【superset】supersetでSQL Labを使い複数テーブルをJOINしたものをグラフ化する

はじめに

業務でBIツールを導入する話となり、re:dashにしようかな?と思いましたが
あえてsupersetを試してみたくなったので、ローカル環境を作り
いろいろとイジってみました。

ただし、UIは非常に直感的ではなく、すぐにグラフ化するところまで
いかなかったので、操作方法を共有するために手順を書きます。

環境

  • maxOS Sierra
  • Vagrant 1.8.1
    • CentOS6.5
    • superset 1.5.1
    • MySQL 5.6

前提条件

また、以下のエントリでsupersetで日本語を表示できるようにしておいてください。

fujiyasu.hatenablog.com

やり方

SQLの記述と実行

SQL Lab → SQL Editorで画面を開き、下記のようにSQLを作成します。

select
 tc.birthplace
 , mi.name
 , count(mi.name) as 'count'
from
  trn_sale ts
inner join 
  trn_customer tc on ts.trn_customer_id = tc.id
inner join 
  mst_item mi on ts.mst_item_id = mi.id
group by tc.birthplace, mi.name

Run Queryボタンを押下した結果。 f:id:fujikawa-y:20170131200150p:plain

グラフ化

Visualizeボタンを押下して、グラフを作成します。 このとき、Datasource Nameは、一時テーブルが作成されるっぽいので わかりやすい名前がいいと思います。 ボタンを押下すると、未保存状態のグラフ作成画面に遷移します。 f:id:fujikawa-y:20170131200225p:plain

棒グラフではわかりずらいので、テーブル一覧にします。 また、nameカラムがないため、Group byにnameを追加して表示させます。 そして、クエリを実行した結果がこちらです。 f:id:fujikawa-y:20170131200234p:plain

まとめ

JOIN句を入れたものでも簡単にグラフ化をすることができました。
この手軽さがBIツールのいいところだと思います。

次回は、今まで作ったものをダッシュボードに表示するようにしてみます。

【superset】supersetでSQL Labを使い単一テーブルのグラフ化をする

はじめに

業務でBIツールを導入する話となり、re:dashにしようかな?と思いましたが
あえてsupersetを試してみたくなったので、ローカル環境を作り
いろいろとイジってみました。

ただし、UIは非常に直感的ではなく、すぐにグラフ化するところまで
いかなかったので、操作方法を共有するために手順を書きます。

環境

  • maxOS Sierra
  • Vagrant 1.8.1
    • CentOS6.5
    • superset 1.5.1
    • MySQL 5.6

前提条件

また、以下のエントリでsupersetで日本語を表示できるようにしておいてください。

fujiyasu.hatenablog.com

やり方

SQLの記述と実行

SQL Lab → SQL Editorで画面を開き、下記のようにSQLを作成します。

SELECT 
    CASE sex
        WHEN '0' THEN '男'
        WHEN '1' THEN '女'
    END as 'sex'
    , COUNT(*) 'count'
FROM 
    trn_customer
GROUP BY 
    sex

そして、RunQueryボタンを押してSQLを実行させます。 以下、Run Queryボタンを押下した結果。

f:id:fujikawa-y:20170122144611p:plain

グラフ化

Visualizeボタンを押下して、グラフを作成します。
このとき、Datasource Nameは、一時テーブルが作成されるっぽいので
わかりやすい名前がいいと思います。

f:id:fujikawa-y:20170122144823p:plain

ボタンを押下すると、未保存状態のグラフ作成画面に遷移します。

f:id:fujikawa-y:20170122144833p:plain

そして、グラフを保存すると実行したSQLベースのテーブルが作成されます。

f:id:fujikawa-y:20170122145108p:plain

まとめ

今回は単一テーブルのグラフ化をSQLで行いました。 やはり、プログラマとしてはSQLの方が簡単に思えて仕方ないです。 なので、結局メインはSQLで書くことになりそうです。

次回は、supersetのSQL Labを使って複数テーブルを結合したグラフ化をしていきます。

【superset】supersetで単一テーブルをグラフ化するやり方

はじめに

業務でBIツールを導入する話となり、re:dashにしようかな?と思いましたが
あえてsupersetを試してみたくなったので、ローカル環境を作り
いろいろとイジってみました。

ただし、UIは非常に直感的ではなく、すぐにグラフ化するところまで
いかなかったので、操作方法を共有するために手順を書きます。

環境

  • maxOS Sierra
  • Vagrant 1.8.1
    • CentOS6.5
    • superset 1.5.1
    • MySQL 5.6

前提条件

また、以下のエントリでsupersetで日本語を表示できるようにしておいてください。

fujiyasu.hatenablog.com

やり方

テーブルの追加

Sources → Tables → +ボタン で遷移して、以下の通り入力します。 f:id:fujikawa-y:20170114145736p:plain f:id:fujikawa-y:20170114145746p:plain

上記のように登録したら、保存をします。
保存した結果、一覧に表示されます。 f:id:fujikawa-y:20170114145832p:plain

グラフの作成

Slices → +ボタン で遷移して、以下の通り入力します。 f:id:fujikawa-y:20170114145850p:plain f:id:fujikawa-y:20170114145903p:plain

未保存状態のグラフ作成画面まで遷移すればOK。 f:id:fujikawa-y:20170114145921p:plain

出身都道府県の件数をグラフ化

以下のように設定して、クエリを実行します。 f:id:fujikawa-y:20170114145952p:plain

クエリの実行が完了すると、テーブル表示で表示されます。 f:id:fujikawa-y:20170114150009p:plain

グラフの保存

Save asボタンを押下すると、以下のモーダルが表示されるので任意の名前を入力して保存します。 f:id:fujikawa-y:20170114150035p:plain

今回は「2017-01-15_blog_001」という名前で保存します。 f:id:fujikawa-y:20170115153311p:plain

保存が完了すると以下のようになります。 f:id:fujikawa-y:20170115153336p:plain

Slicesの一覧ページを見るとちゃんと保存されているのがわかります。 f:id:fujikawa-y:20170115153415p:plain

まとめ

単一のテーブルだけですが、やろうと思えばSQLを書かずにグラフ化が可能ということがわかりました。
ただ、プログラマとしてはSQLを書いてグラフ化するのが普通だと思います。
re:dashはメインがそれになります。

次回は、supersetのSQL Labを使ってグラフ化をしていきます。

【superset】supersetで日本語を文字化させないようにするやり方

はじめに

業務でBIツールを導入する話となり、re:dashにしようかな?と思いましたが
あえてsupersetを試してみたくなったので、ローカル環境を作り
いろいろとイジってみました。

RDSと繋ぐのは簡単だったのですが、まさかの日本語が文字化けてしまい
正常に表示するのに苦労したのでやり方を共有します。

環境

  • maxOS Sierra
  • Vagrant 1.8.1
    • CentOS6.5
    • superset 1.5.1
    • MySQL 5.6

前提条件

  • VagrantからCentOSに接続できること
  • supersetがインストールされていてログインできること
  • 日本語のデータ登録されているMySQLがあること

やり方

Sources → Databasesを選択します。 f:id:fujikawa-y:20170114151057p:plain

次に+ボタンを押下して、新規登録画面に遷移します。 f:id:fujikawa-y:20170114151344p:plain f:id:fujikawa-y:20170114151402p:plain

そして、MySQLの場合、以下のように記述します。
※今回は、BOX内にMySQLをインストールしてそこを参照しています。 f:id:fujikawa-y:20170114152347p:plain

「SQLAlchemy URI」のURI末尾に「?charset=utf8」をつけたら日本語の文字化けはなくなりました。
最初、Extraの設定でうまくいくかもと思ったのですが、まったくうまくいかず
結局、URLにパラメータをつけるということにしました。

そして、日本語が表示されるようになったか確認します。 f:id:fujikawa-y:20170114152955p:plain 日本語が正常に表示されています。

OSSになってまだ半年も経ってない。
また、日本での運用事例もないため、だいぶ苦戦しました。

次はテーブルの作成手順を書きます。

【Python】CentOS6.5にPython3.5.2をインストールするとき「locale.Error: unsupported locale setting」が出るときの対処法

はじめに

ちょっとPythonでやりたいことがあり
Pythonを触ったことない人がPythonをインストールを実施したところ
数十分ハマったので、メモ書き程度の話です。

環境

  • OS X El capitan
  • Vagrant 1.8.1
    • CentOS6.5
  • Python3.5.2をmake installでインストールする

前提条件

  • VagrantからCentOSに接続できること
  • pyenvを使わずにインストールする

やってみた

以下に書かれていた内容をそのまま実施してみました。

chyka.hatenablog.jp

その結果、エラーが発生

locale.Error: unsupported locale setting

エラーの通りなのですが、localeがサポートされていないということらしいです。
なので、localeを確認します。

[vagrant@vagrant-centos65 ~]$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=ja_JP.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

言語がバラバラだからかな?と思い、言語を英語にしてみたりしました。

sudo vi /etc/sysconfig/i18n
. /etc/sysconfig/i18n

しかし、うまくいかず困ったときのstackoverflowです。
そして、同じように悩んでいる記事を見つけました。

stackoverflow.com

その結果、以下のコマンドを打てば良いということです。
適用した内容も載せておきます。

[vagrant@vagrant-centos65 ~]$ export LC_ALL=C
[vagrant@vagrant-centos65 ~]$ locale
LANG=en_US.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

重要なのは、「LC_ALL」のようですね。
そして、インストールを再実行してみたところうまくいきました。

まとめ

こういうところで行き詰まると、本来やりたかったことが
遠のき大変ですがもっと簡単にインストールできないものかな?と思いました。

【Ruby】【6回目】Kawasaki.rb #042 に参加しました

まさかの1年3ヶ月の参加です。
Rubyから離れっぱなしなので、ちょっと気持ちを切り替える意味で参加してきました。

概要

kawasakirb.connpass.com

内容

以下のページで素晴らしくまとまっているので一読必須です。

Togetter

togetter.com

まとめ

medium.com

感想

今回、応募が15人という自分が去年参加していたころより
多くなっており、川崎Ruby会議をやった効果なのかな?と思いました。

また、地域コミュニティらしいフレンドリーな感じは健在で
1年ちょっとのブランクがあっても場に溶け込むことができました。

そして、いつも通り自己紹介から始まり、パーフェクトRuby読書会をやり
最後に発表ということをやりました。
※20分ぐらい話していたと思います。

自分が1つ発表したのが以下のものです。

Ruby勉強会なのに、Rubyのことではない過ちを犯していますが
その辺は主催者の寛大な心遣いに感謝です。
そのおかげで無事に発表して、Serverlessの1つの事例を共有できたと思っています。

懇親会

前は、ミューザ川崎の飲食店だったのですが
最近はその周辺の中華屋さんになっておいました。
安くて美味しい老舗な店でとても良かったです。
リピートする理由がわかりました。

そして、ダムの話が熱かったです。

宣伝

調度良い人数と雰囲気で、毎月開催しています。
とても参加しやすいので是非参加しましょう!

次回は年末年始なので開催日時が変則的になるようですが
今年の締めに参加してみてはどうでしょうか?

そして、参加する際は以下の本を持っていきましょう。

パーフェクトRuby (PERFECT SERIES 6)