【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)

【AWS】スマートフォンを機種変更するとき、2段階認証(MFA)を解除し忘れたので解除依頼をした

はじめに

先日、満を持してiPhone7 SIMフリーに機種変更をしました。

そして、個人で使っているAWSアカウントはセキュリティ強化のため
2段階認証(以下、MFA)設定していました。

しかし、前の機種でMFAを解除し忘れたため
AWSコンソールにログインできなくなってしまいました。

今回はMFA解除するまでの話を書きます。

前提条件

  • AWSのルートアカウントにMFAを設定していること
  • 機種変更をして、AWSにログインできなくなってしまった。
  • 筆者は英語がまったくできません。

解除方法

まず、ルートアカウントでログインするところまでは同じで
以下の箇所をクリックします。

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

次に以下の画面が表示されるので、囲っている箇所をクリックします。

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

お問い合わせフォームが表示されるので、以下のように記入していきます。

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

そして、送信します。
10 〜 15分待っていると電話がかかってきます。
もし、電話番号を間違っていた場合、メールが送られてきます。

最初の電話は英語なので、英語が喋れる人はそのまま解除の手続きを
すれば良いですが、筆者はまったく英語が喋れない状態です。
なので、相手がある程度喋りきった後にこちらから
「I can't speak english.」ということを伝えました。

そうすると、相手は日本からの問い合わせということを知っているので
すぐさま「日本のオペレーターに繋ぐから待っていてくれ」という旨のことを話します。 英語がわからなくても「Japanese operator」という単語が聞こえれば問題ないです。

翌日、14時過ぎに日本のオペレーターから電話があり、無事に解除することができました。
平日昼間の対応のみなので、人によってはかなり都合が悪い状況なので
1日待機してないといけないかもしれません。

まとめ

「英語を聞ける喋れるようになりましょう」というのが正直なところですが
英語がまったくできなくても解除はできるので、もし同じような状況になった人に対して
少しで参考になってもらえればと思います。

【Serverless】はじめてのServerless Framework v.1 rc1 その2

はじめに

前回に引き続き、Serverless Frameworkを使った開発をしていきます。

【Serverless】はじめてのServerless Framework v.1 rc1 その1 - FujiYasuの日記

アーキテクチャ

Cloudcraftというサービスを使い書いてみました。

https://cloudcraft.co/view/5d16ea58-14e0-439b-a8eb-18c047e9f39a?key=wIxzJw5VW44YEquqe4O7Sw

※今回は、ServerlessなのでAPI GatewayAWS Lambdaの話がメインです。

環境

  • OS X El capitan
  • nodebrew 0.9.6
    • Node.js v5.12.0
    • npm 3.8.6
    • aglio 2.2.1 ※API Blueprintを使って、API仕様書を作るために入れてみました。
  • Serverless v.1 rc1

前提条件

  • 前回の記事まで読み進んでいる人

やってみた

はじめに

前回までのAPIは、URLがわかってしまうと誰でもAPIを叩いてしまうことができ
セキュリティ的に良くない状況となってしまいます。

また、API GatewayAPIを実行された分だけお金がかかるので
いたずらにやられてしまうと大きな金額の請求がきてしまいます。

API Keyの作成

ここでは、API Keyを発行します。 GUIからでも作れますが、AWS CLIからKeyを発行するします。

aws apigateway create-api-key --name 'dev-my-first-serverless-rc1' --description 'Used for development' --enabled --region ap-northeast-1

serverless.ymlを編集

Keyが作成されたので、API Keyの名前をServerless側で記述します。 さらにAPIAPI Keyを指定するため、event単位で「private: true」を設定します。

provider:
  name: aws
  apiKeys:
    - dev-my-first-serverless-rc1
functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: handler/hello
          method: get
          private: true

ドキュメントは、以下のページです。

serverless/01-apigateway.md at 9699667cc0f35e222e160e9be53fcb6e3003742c · serverless/serverless · GitHub

デプロイ

ここまで設定したら、後はデプロイするだけです。

[0:00:46] Y_Fujikawa:my-first-serverless-rc1 $ serverless deploy -v
erverless: Packaging service...
Serverless: Removing old service versions...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading service .zip file to S3...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
CloudFormation - UPDATE_IN_PROGRESS - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev
CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - InsertLambdaFunction
CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction
CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - InsertLambdaFunction
CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - HelloLambdaFunction
CloudFormation - CREATE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902440291
CloudFormation - CREATE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902440291
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902440291
CloudFormation - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev
CloudFormation - DELETE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902169689
CloudFormation - DELETE_COMPLETE - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902169689
CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev
Serverless: Stack update finished...

Service Information
service: my-first-serverless-rc1
stage: dev
region: ap-northeast-1
endpoints:
  GET - https://xxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello
functions:
  my-first-serverless-dev-hello: arn:aws:lambda:ap-northeast-1:201892032205:function:my-first-serverless-rc-1dev-hello

動作確認

Endpointsも書かれているので、Curlコマンドを叩けばすぐ確認できます。

[0:03:27] Y_Fujikawa:my-first-serverless-rc1 $ curl https://xxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello
{"message": "Forbidden"}%

[0:05:49] Y_Fujikawa:my-first-serverless-rc1 $ curl -H "x-api-key: <作成したAPI Key>" https://xxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello
{"message":"Go Serverless v1.0! Your function executed successfully!"}

まとめ

今回はAPI Keyの発行をAWS CLIから実行しましたが、Serverlessからでもできそうな感じがあります。
それでも、わざわざGUIから設定せずスムーズに作業をできるのはいいですね。