ラベル ApacheSuperset の投稿を表示しています。 すべての投稿を表示
ラベル ApacheSuperset の投稿を表示しています。 すべての投稿を表示

2022年4月19日火曜日

PythonでApache Supersetのデータセット一覧を取得する

PythonでApache Supersetのデータセット一覧を取得するには、以下のサンプルコードを実行します。

list-dataset.py
# coding: utf-8
import pprint
import json
import requests

host = 'xxx.xxx.xxx.xxx:8080' # Supersetのホスト名またはIPアドレスとポート
user = 'admin' # ユーザ名
password = 'adminpass' # ユーザパスワード

base = "http://{}".format(host)
# ユーザ名とパスワードでアクセストークンの取得
res_login = requests.post(base + "/api/v1/security/login",
  json = {
    "password": user,
    "provider": "db",
    "refresh": True,
    "username": password
  }
)
access_token = res_login.json()['access_token']
print(access_token)

# CSRFトークンの取得
res_csrf = requests.get(base + "/api/v1/security/csrf_token",
  headers = {
    'Authorization': "Bearer {}".format(access_token)
  }
)
csrf_token = res_csrf.json()['result']
print(csrf_token)

# API呼び出し用Request headers
api_headers = {
  'Referer': base,
  'Authorization': "Bearer {}".format(access_token),
  'X-CSRFToken': csrf_token
}

# データセット一覧
res_ds = requests.get(base + "/api/v1/dataset",
  headers = api_headers
)
pprint.pprint(res_ds.json())
for ds in res_ds.json()['result']:
  print("---")
  print("dataset name: {}".format(ds['table_name'])) # データセット名
  print("kind: {}".format(ds['kind'])) # 種別

・実行方法
python3 list-dataset.py

関連情報

・その他のApache Supersetの情報は、以下のまとめページを参照してください。
Apache Supersetのまとめ

2022年4月18日月曜日

PythonでApache Supersetのデータベース一覧を取得する

PythonでApache Supersetのデータベース一覧を取得するには、以下のサンプルコードを実行します。

list-database.py
# coding: utf-8
import pprint
import json
import requests

host = 'xxx.xxx.xxx.xxx:8080' # Supersetのホスト名またはIPアドレスとポート
user = 'admin' # ユーザ名
password = 'adminpass' # ユーザパスワード

base = "http://{}".format(host)
# ユーザ名とパスワードでアクセストークンの取得
res_login = requests.post(base + "/api/v1/security/login",
  json = {
    "password": user,
    "provider": "db",
    "refresh": True,
    "username": password
  }
)
access_token = res_login.json()['access_token']
print(access_token)

# CSRFトークンの取得
res_csrf = requests.get(base + "/api/v1/security/csrf_token",
  headers = {
    'Authorization': "Bearer {}".format(access_token)
  }
)
csrf_token = res_csrf.json()['result']
print(csrf_token)

# API呼び出し用Request headers
api_headers = {
  'Referer': base,
  'Authorization': "Bearer {}".format(access_token),
  'X-CSRFToken': csrf_token
}

# データベース一覧
res_db = requests.get(base + "/api/v1/database",
  headers = api_headers
)
pprint.pprint(res_db.json())
for db in res_db.json()['result']:
  print("---")
  print("database name: {}".format(db['database_name'])) # データベース名
  print("status: {}".format(db['backend'])) # バックエンド

・実行方法
python3 list-database.py

関連情報

・その他のApache Supersetの情報は、以下のまとめページを参照してください。
Apache Supersetのまとめ

2022年4月17日日曜日

PythonでApache Supersetのダッシュボード一覧を取得する

PythonでApache Supersetのダッシュボード一覧を取得するには、以下のサンプルコードを実行します。

list-dashboards.py
# coding: utf-8
import pprint
import json
import requests

host = 'xxx.xxx.xxx.xxx:8080' # Supersetのホスト名またはIPアドレスとポート
user = 'admin' # ユーザ名
password = 'adminpass' # ユーザパスワード

base = "http://{}".format(host)
# ユーザ名とパスワードでアクセストークンの取得
res_login = requests.post(base + "/api/v1/security/login",
  json = {
    "password": user,
    "provider": "db",
    "refresh": True,
    "username": password
  }
)
access_token = res_login.json()['access_token']
print(access_token)

# CSRFトークンの取得
res_csrf = requests.get(base + "/api/v1/security/csrf_token",
  headers = {
    'Authorization': "Bearer {}".format(access_token)
  }
)
csrf_token = res_csrf.json()['result']
print(csrf_token)

# API呼び出し用Request headers
api_headers = {
  'Referer': base,
  'Authorization': "Bearer {}".format(access_token),
  'X-CSRFToken': csrf_token
}

# ダッシュボード一覧
res_dashboards = requests.get(base + "/api/v1/dashboard",
  headers = api_headers
)
#pprint.pprint(res_dashboards.json()['result'])
for dashboard in res_dashboards.json()['result']:
  print("---")
  print("dashboard title: {}".format(dashboard['dashboard_title'])) # 題名
  print("status: {}".format(dashboard['status'])) # ステータス
  print("url: {}".format(dashboard['url'])) # URLパス部分


・実行方法
python3 list-dashboards.py

関連情報

・その他のApache Supersetの情報は、以下のまとめページを参照してください。
Apache Supersetのまとめ

2022年4月16日土曜日

Apache Supersetの表のセルにHTMLリンクを表示する

Apache Supersetの表のセルにHTMLリンクを表示するには、以下の手順を実行します。

実行手順

1. 「SQL Lab」→「SQL Editor」でAnchorタグのリンク先とリンク表示を行うカラムを以下のようにHTMLリンク文字列を作成します。この例ではリンク先にentry_link列、リンク表示にentry_title列を使うようになっています。
select '<a href="' || entry_link || '" target="_blank">' || entry_title || '</a>' 
from rss_entries
where cast(entry_updated as date) = current_date

2. 下図の様に手順1で作成したデータセットを使用して、「テーブル」可視化方式でカラムがリンクになっている事を確認します。

関連情報

・Apache Supersetのインストール方法・ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2022年4月8日金曜日

k3sで同一ポッド内にPostgreSQLとApache Supersetを配置する

Apache SupersetはPython製のBIツールです。k3sで同一ポッド内にPostgreSQLとApache Supersetを配置するには、以下の手順を実行します(公式イメージはamd64のみ)。

実行手順

1. local永続ボリュームで使用するディレクトリの作成
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/pg-data

sudo mkdir -p /var/superset-data

cd /var/superset-data

SECRET_KEY=`echo -e "import os; print(os.urandom(24).hex())" | python3`

cat << EOF | sudo tee superset_config.py
# Superset specific config
ROW_LIMIT = 5000

BABEL_DEFAULT_LOCALE='ja'

SUPERSET_WEBSERVER_PORT = 8088

# Flask App Builder configuration
# Your App secret key
#SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
SECRET_KEY = '#####'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
#SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:mypostgres@127.0.0.1/superset'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
EOF

sudo sed -i "s/#####/$SECRET_KEY/" superset_config.py

cd

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※PostgreSQLデータ用
cat << EOF > local-pg-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pg-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/pg-data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF

sudo k3s kubectl apply -f ./local-pg-pv.yml

※superset用
cat << EOF > local-superset-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-superset-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/superset-data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF

sudo k3s kubectl apply -f ./local-superset-pv.yml

3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※PostgreSQL用
cat << EOF > local-pg-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-pg-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 5Gi
  volumeName: local-pg-pv
EOF

sudo k3s kubectl apply -f ./local-pg-pvc.yml

※superset用
cat << EOF > local-superset-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-superset-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 5Gi
  volumeName: local-superset-pv
EOF

sudo k3s kubectl apply -f ./local-superset-pvc.yml

4. SupersetとPostgrelSQLのDeploymentの作成
以下のコマンドでsupersetとPostgreSQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > superset-pg-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: superset-pg-deployment
  labels:
    app: superset-pg
spec:
  replicas: 1
  selector:
    matchLabels:
      app: superset-pg
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: superset-pg
    spec:
      containers:
      - name: mypg
        image: postgres:14-alpine
        env:
        - name: POSTGRES_DB
          value: superset
        - name: POSTGRES_PASSWORD
          value: mypostgres
        ports:
        - containerPort: 5432
        volumeMounts:
        - name: pgdata
          mountPath: /var/lib/postgresql/data
      - name: superset
        image: apache/superset:latest
        command: ["/bin/sh","-c"]
        args: ["pip install psycopg2 ; superset fab create-admin --username admin --firstname Superset --lastname Admin --email admin@superset.com --password admin ; superset db upgrade ; superset load_examples ; superset init ; /usr/bin/run-server.sh"]
        env:
        - name: PYTHONPATH
          value: /opt
        ports:
        - containerPort: 8088
        volumeMounts:
        - name: superset
          mountPath: /opt
      volumes:
      - name: pgdata
        persistentVolumeClaim:
          claimName: local-pg-pvc
      - name: superset
        persistentVolumeClaim:
          claimName: local-superset-pvc
EOF

sudo k3s kubectl apply -f ./superset-pg-deployment.yml

5. サービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > superset-service.yml
apiVersion: v1
kind: Service
metadata:
  name: superset-service
spec:
  selector:
    app: superset-pg
  type: LoadBalancer
  externalIPs:
  - xxx.xxx.xxx.xxx  # 外部からアクセスできるk3sをインストールしたホストのIPを設定します。
  ports:
  - name: http
    protocol: TCP
    port: 8080
    targetPort: 8088
  - name: db
    protocol: TCP
    port: 5432
    targetPort: 5432
EOF

sudo k3s kubectl apply -f ./superset-service.yml

ブラウザからhttp://<ホスト名またはIP>:8080 にアクセスします。ユーザ名admin、パスワードadminでログインします。

〇Apache Supersetの画面

関連情報

・Apache Supersetのインストール方法・ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2022年3月18日金曜日

PythonでApache Supersetのチャート一覧を取得する

PythonでApache Supersetのチャート一覧を取得するには、以下のサンプルコードを実行します。

list-charts.py
# coding: utf-8
import pprint
import json
import requests

host = 'xxx.xxx.xxx.xxx:8080' # Supersetのホスト名またはIPアドレスとポート
user = 'admin' # ユーザ名
password = 'adminpass' # ユーザパスワード

base = "http://{}".format(host)
# ユーザ名とパスワードでアクセストークンの取得
res_login = requests.post(base + "/api/v1/security/login",
  json = {
    "password": user,
    "provider": "db",
    "refresh": True,
    "username": password
  }
)
access_token = res_login.json()['access_token']
print(access_token)

# CSRFトークンの取得
res_csrf = requests.get(base + "/api/v1/security/csrf_token",
  headers = {
    'Authorization': "Bearer {}".format(access_token)
  }
)
csrf_token = res_csrf.json()['result']
print(csrf_token)

# API呼び出し用Request headers
api_headers = {
  'Referer': base,
  'Authorization': "Bearer {}".format(access_token),
  'X-CSRFToken': csrf_token
}
# チャート一覧
res_charts = requests.get(base + "/api/v1/chart",
  headers = api_headers
)
#pprint.pprint(res_charts.json()['result'])
for chart in res_charts.json()['result']:
  print("---")
  print("chart name: {}".format(chart['slice_name'])) # チャート名
  print("visualization type: {}".format(chart['viz_type'])) # 可視化方式

・実行方法
python3 list-charts.py

関連情報

・その他のApache Supersetの情報については、以下のまとめページを参照してください。
Apache Supersetのまとめ

2022年2月22日火曜日

Apache SupersetのMixed Time-SeriesチャートのX軸のラベル表示を45度に傾ける

Apache SupersetのMixed Time-SeriesチャートのX軸のラベル表示を45度に傾けるには、以下の手順を実行します。

操作手順

1. Mixed Time-Serirsチャートの「カスタマイズ」タブをクリックします。

2. 下図のようにX軸グループの「ROTATE X AXIS LABEL」で「45°」を選択します。

関連情報

・Apache Supersetのインストール方法・ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2022年2月21日月曜日

Minikubeで同一ポッド内にPostgreSQLとApache Supersetを配置する

Apache SupersetはPython製のBIツールです。Minikubeで同一ポッド内にPostgreSQLとApache Supersetを配置するには、以下の手順を実行します。

実行手順

1. local永続ボリュームで使用するディレクトリの作成
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
minikube ssh

sudo mkdir -p /var/pgdata

sudo mkdir -p /var/superset

cd /var/superset

SECRET_KEY=`echo -e "import os; print(os.urandom(24).hex())" | python3`

cat << EOF | sudo tee superset_config.py
# Superset specific config
ROW_LIMIT = 5000

BABEL_DEFAULT_LOCALE='ja'

SUPERSET_WEBSERVER_PORT = 8088

# Flask App Builder configuration
# Your App secret key
#SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
SECRET_KEY = '#####'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
#SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:mypostgres@127.0.0.1/superset'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
EOF

sudo sed -i "s/#####/$SECRET_KEY/" superset_config.py

exit

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※PostgreSQLデータ用
cat << EOF > local-pg-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pg-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/pgdata
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube
EOF

kubectl apply -f ./local-pg-pv.yml

※superset用
cat << EOF > local-superset-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-superset-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/superset
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube
EOF

kubectl apply -f ./local-superset-pv.yml

3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※PostgreSQL用
cat << EOF > local-pg-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-pg-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 5Gi
  volumeName: local-pg-pv
EOF

kubectl apply -f ./local-pg-pvc.yml

※superset用
cat << EOF > local-superset-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-superset-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 5Gi
  volumeName: local-superset-pv
EOF

kubectl apply -f ./local-superset-pvc.yml

4. SupersetとPostgrelSQLのDeploymentの作成
以下のコマンドでsupersetとPostgreSQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > superset-pg-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: superset-pg-deployment
  labels:
    app: superset-pg
spec:
  replicas: 1
  selector:
    matchLabels:
      app: superset-pg
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: superset-pg
    spec:
      containers:
      - name: mypg
        image: postgres:14-alpine
        env:
        - name: POSTGRES_DB
          value: superset
        - name: POSTGRES_PASSWORD
          value: mypostgres
        ports:
        - containerPort: 5432
        volumeMounts:
        - name: pgdata
          mountPath: /var/lib/postgresql/data
      - name: superset
        image: apache/superset:latest
        command: ["/bin/sh","-c"]
        args: ["pip install psycopg2 ; superset fab create-admin --username admin --firstname Superset --lastname Admin --email admin@superset.com --password admin ; superset db upgrade ; superset load_examples ; superset init ; /usr/bin/run-server.sh"]
        env:
        - name: PYTHONPATH
          value: /opt
        ports:
        - containerPort: 8088
        volumeMounts:
        - name: superset
          mountPath: /opt
      volumes:
      - name: pgdata
        persistentVolumeClaim:
          claimName: local-pg-pvc
      - name: superset
        persistentVolumeClaim:
          claimName: local-superset-pvc
EOF

kubectl apply -f ./superset-pg-deployment.yml

5. サービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > superset-service.yml
apiVersion: v1
kind: Service
metadata:
  name: superset-service
spec:
  selector:
    app: superset-pg
  ports:
  - name: http
    protocol: TCP
    port: 8080
    targetPort: 8088
  - name: db
    protocol: TCP
    port: 5432
    targetPort: 5432
EOF

kubectl apply -f ./superset-service.yml

6. Port-Fowardingで外部からアクセスできるようにする
kubectl port-forward --address 0.0.0.0 service/superset-service 8080:8080 5432:5432
ブラウザからhttp://<ホスト名:8080 にアクセスします。ユーザ名admin、パスワードadminでログインします。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2022年2月13日日曜日

Microk8sで同一ポッド内にPostgreSQLとApache Supersetを配置する

Apache SupersetはPython製のBIツールです。Microk8sで同一ポッド内にPostgreSQLとApache Supersetを配置するには、以下の手順を実行します。

実行手順

1. local永続ボリュームで使用するディレクトリの作成
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/pg-data

sudo mkdir -p /var/superset-data

cd /var/superset-data

SECRET_KEY=`echo -e "import os; print(os.urandom(24).hex())" | python3`

cat << EOF | sudo tee superset_config.py
# Superset specific config
ROW_LIMIT = 5000

BABEL_DEFAULT_LOCALE='ja'

SUPERSET_WEBSERVER_PORT = 8088

# Flask App Builder configuration
# Your App secret key
#SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
SECRET_KEY = '#####'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
#SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:mypostgres@127.0.0.1/superset'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
EOF

sudo sed -i "s/#####/$SECRET_KEY/" superset_config.py

cd

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※PostgreSQLデータ用
cat << EOF > local-pg-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pg-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/pg-data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF

microk8s kubectl apply -f ./local-pg-pv.yml

※superset用
cat << EOF > local-superset-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-superset-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/superset-data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF

microk8s kubectl apply -f ./local-superset-pv.yml

3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※PostgreSQL用
cat << EOF > local-pg-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-pg-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 5Gi
  volumeName: local-pg-pv
EOF

microk8s kubectl apply -f ./local-pg-pvc.yml

※superset用
cat << EOF > local-superset-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-superset-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 5Gi
  volumeName: local-superset-pv
EOF

microk8s kubectl apply -f ./local-superset-pvc.yml

4. SupersetとPostgrelSQLのDeploymentの作成
以下のコマンドでsupersetとPostgreSQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > superset-pg-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: superset-pg-deployment
  labels:
    app: superset-pg
spec:
  replicas: 1
  selector:
    matchLabels:
      app: superset-pg
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: superset-pg
    spec:
      containers:
      - name: mypg
        image: postgres:14-alpine
        env:
        - name: POSTGRES_DB
          value: superset
        - name: POSTGRES_PASSWORD
          value: mypostgres
        ports:
        - containerPort: 5432
        volumeMounts:
        - name: pgdata
          mountPath: /var/lib/postgresql/data
      - name: superset
        image: apache/superset:latest
        command: ["/bin/sh","-c"]
        args: ["pip install psycopg2 ; superset fab create-admin --username admin --firstname Superset --lastname Admin --email admin@superset.com --password admin ; superset db upgrade ; superset load_examples ; superset init ; /usr/bin/run-server.sh"]
        env:
        - name: PYTHONPATH
          value: /opt
        ports:
        - containerPort: 8088
        volumeMounts:
        - name: superset
          mountPath: /opt
      volumes:
      - name: pgdata
        persistentVolumeClaim:
          claimName: local-pg-pvc
      - name: superset
        persistentVolumeClaim:
          claimName: local-superset-pvc
EOF

microk8s kubectl apply -f ./superset-pg-deployment.yml

5. サービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > superset-service.yml
apiVersion: v1
kind: Service
metadata:
  name: superset-service
spec:
  selector:
    app: superset-pg
  type: LoadBalancer
  externalIPs:
  - xxx.xxx.xxx.xxx # 外部からアクセスできるMicrok8sをインストールしたホストのIPを設定します。
  ports:
  - name: http
    protocol: TCP
    port: 8080
    targetPort: 8088
  - name: db
    protocol: TCP
    port: 5432
    targetPort: 5432
EOF

microk8s kubectl apply -f ./superset-service.yml
ブラウザからhttp://<ホスト名:8080 にアクセスします。ユーザ名admin、パスワードadminでログインします。

〇Apache Supersetの画面

2022年2月4日金曜日

Apache Supersetでデータセットを集計して二重軸時系列グラフ(Mixed Time-Series)で表示する

二重時系列グラフ(Mixed Time-Series)で軸が異なる2つの値を同じ時系列で表示することができます。以下の操作手順で二十時系列グラフを作成します。

操作手順

1. (任意)データセットの準備
この例では、DHT11センサーで取得した温度・湿度データを使用します。適宜、お手持ちのデータに変更してください。
DHT11センサーで取得した温度・湿度をPostgreSQLに格納する例は、以下のページを参照してください。
Raspberry Pi Zeroに接続したDHT11センサーの温度・湿度データをPostgreSQLに保存する
1.1. SQL Labメニューの「SQL Editor」を選択します。

1.2. データベースで任意のデータベースを選択後、以下のようなSQLクエリを入力します。ここでは直近3日のデータを取得しています。このテーブルではdata_tsにデータのタイムスタンプ、temperature列に温度、humidity列に湿度を格納しています。クエリを入力したら、実行ボタンを押して結果を確認し、「EXPLORE」をクリックします。
select * from env_f_sensor where log_ts >= timestamp '2022-01-01 00:00:00';

1.3. データセットの名称を入力して、「SAVE & EXPLORE」をクリックします。

2. チャートの作成
データセットを元にチャートを作成します。デフォルトでは「テーブル」になっている可視化方式のボタンをクリックします。

2.1. 可視化方式で「# LINE」のタグをクリックして、その中にある「Mixed Time-Series」を選択して「SELECT」ボタンをクリックします。

2.2.時間グループのTIME COLUMNにタイムスタンプの列が選択されているのを確認し、TIME GRAINで集計単位を選択します。この例では「HOUR」を選択しています。

2.3. Query Aグループの指標のフィールド部分(Add metric)をクリックします。表示されたポップアップウインドウでSIMPLEタブをクリックしてからCOLUMNにhumidity列、AGGREGATEにMAX集計関数を選択します

2.4. ポップアップウインドウ上部の鉛筆アイコンをクリックして、指標名に「湿度」を入力して保存ボタンをクリックします。

2.5. Query Bグループの指標のフィールド部分(Add metric)をクリックします。表示されたポップアップウインドウでSIMPLEタブをクリックしてからCOLUMNにtermperature列、AGGREGATEにMAX集計関数を選択します

2.6. ポップアップウインドウ上部の鉛筆アイコンをクリックして、指標名に「温度」を入力して保存ボタンをクリックします。

2.7. チャートのクエリ実行ボタンをクリックします

2.8. チャートの「カスタマイズ」タブをクリックします。

2.9. 「Query B」グループの「Y軸」で「Secondary」を選択します。

2.10. 「+ 保存」ボタンをクリックして、表示された「チャートを保存」ダイアログでチャート名を入力して「保存」ボタンをクリックします。

関連情報

・Apache Supersetのインストール方法・ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2022年1月24日月曜日

Apache Supersetのまとめ

Apache SupersetはPython製のBIツールです。データベース内のデータを集計して、コーディング無しでダッシュボード等を作成することができます。

インストール方法

※Ubuntu 20.04の場合
Ubuntu 20.04にApache SupersetとMariaDBをインストールする

Ubuntu 20.04にApache SupersetとPostgreSQL 14をインストールする

※Debianの場合
Debian 11(Bullseye)にApache SupersetとMariaDBをインストールする

Debian 11(Bullseye)にApache SupersetとPostgreSQL 14をインストールする

※Rocky Linuxの場合
Rocky Linux 8にApache SupersetとMariaDBをインストールする

Rocky Linux 8にApache SupersetとPostgreSQL 14をインストールする

※AlmaLinuxの場合
AlmaLinux 8にApache SupersetとMariaDBをインストールする

AlmaLinux 8にApache SupersetとPostgreSQL 14をインストールする

※Dockerの場合
Debian 11とUbuntu 20.04でApache SupersetをDockerを使用してインストールする

※Microk8sの場合
Microk8sで同一ポッド内にPostgreSQLとApache Supersetを配置する

※Minikubeの場合
Minikubeで同一ポッド内にPostgreSQLとApache Supersetを配置する

CSVのアップロード

CSVファイルをブラウザからアップロードして、データベーステーブルに格納することが出来ます。

Apache SupersetでデータベースをCSVアップロード可能に設定する

Apache SupersetでCSVファイルをアップロードして、データベースに格納する

Apache Supersetで日付型の列を持つCSVファイルをアップロードして、データベースに格納する

データセットの論理名称

データベースのテーブルカラム名などの物理名称ではなく、分かりやすい日本語の論理名称をつけることができます。

Apache SupersetでAGGREGATEタイプのチャートの指標に日本語などの論理名称を設定する

Apache Supersetでデータセットの列に論理名称を設定する

チャートによるデータの可視化

チャートの種類によってさまざまな形でデータを可視化することができます。
※表:データの明細を表示するのに適しています。
Apache Supersetでデータセットを集計して表で一覧表示する

Apache Supersetでデータセットのレコードを表で一覧表示する

※棒グラフチャート:系列間の比較に適しています。
Apache Supersetでデータセットを集計して棒グラフで表示する

Apache Supersetで棒グラフチャートの値を表示する

Apache Supersetで棒グラフチャートのY軸ラベルを設定する

※折れ線グラフチャート:時系列のデータを表示するのに適しています。
Apache Supersetでデータセットを集計して折れ線グラフ(Line Chart)で表示する

Apache SupersetでLine Chartのマーカーを表示する

Apache Supersetでデータセットを集計して二重軸時系列グラフ(Mixed Time-Series)で表示する

Apache SupersetのMixed Time-SeriesチャートのX軸のラベル表示を45度に傾ける

※円グラフ・ドーナツグラフ:データの構成比を表示するのに適しています。
Apache Supersetでデータセットを集計して円グラフ(Pie Chart)で表示する

Apache Supersetで円グラフ(Pie Chart)をドーナツグラフに変更して表示する

※領域グラフ:各要素の積み上げを時系列で表示するのに適しています。
Apache Supersetで領域グラフ(Area Chart)の凡例・値を表示する

Apache Supersetでデータセットを集計して積み上げ領域グラフ(Area Chart)で表示する

※数値チャート:KPIなどの値を表示にするのに適しています。
Apache Supersetでデータセットを集計して「数値」チャートで表示する

※Big Number with Trendlineチャート:KPI最新値とその推移を表示するのに適しています。
Apache Supersetでデータセットを集計して数値とトレンドライン(Big Number with Trendline)で表示する

※国別地図チャート:都道府県別の値を可視化するのに適しています。
Apache Supersetでデータセットを集計して都道府県別に表示する

※ゲージチャート:KPIなどのパーセント値を表示にするのに適しています。
Apache Supersetでデータセットを集計してゲージチャートで表示する

※レーダーチャート:複数軸の強み・弱み、バランスを可視化するのに適しています。
Apache Supersetでデータセットを集計してレーダーチャートで表示する

※ツリーマップ:ヒートマップとも呼ばれます。全体に対する各要素の構成、強弱を俯瞰するのに適しています。
Apache Supersetでデータセットを集計してツリーマップで表示する

※ピボットテーブル:行列にフレキシブルに集計データを表形式で表示することができます。
Apache Supersetでデータセットを集計してピボットテーブルで表示する

ダッシュボード

チャートを組み合わせて、ダッシュボードを作ることができます。

Apache Supersetでダッシュボードを作成する

※ダッシュボード内で項目を選択して、データの絞り込みなどを行うこともできます。
Apache Supersetでフィルタボックスを使用してデータを絞り込む

画面のカスタマイズ・修飾

画面の各部の色をCSSで変更したり、画像を追加することもできます。

Apache Supersetのチャートのヘッダー色を変更する

Apache Supersetのダッシュボード内のチャートの背景色を変更する

Apache Supersetのダッシュボードのヘッダー色を変更する

Apache Supersetのダッシュボードの背景色を変更する

Apache Supersetのダッシュボードに任意の画像を追加する

データベース

チャートなどで使用するデータセットをSQLに記述する事も出来ます
Apache SupersetでSQL Editorを使用してデータセットを作成する

Debian 11(Bullseye)/Ubuntu 20.04でApache SupersetにMariaDBへのデータベース接続を追加する

REST APIによるアクセス

REST APIでApache Supersetにアクセスすることもできます。
PythonでApache Supersetのチャート一覧を取得する

2021年12月3日金曜日

Debian 11とUbuntu 20.04でApache SupersetをDockerを使用してインストールする

Debian 11とUbuntu 20.04でApache SupersetをDockerを使用してインストールするには、以下の手順を実行します。

〇Apache Supersetの画面

インストール手順

1.DockerとDocker Composeのインストール
以下のページを参照してDockerとDocker Composeをインストールします。
Debian 11(Bullseye)にDocker/Docker Compose V2系をインストールする

Ubuntu 20.04にDocker/Docker Compose V2系をインストールする

2.Apache Supersetのインストール
以下のコマンドを実行して、Apache Supersetをインストールします。
sudo apt-get update

sudo apt-get -y install git

git clone https://github.com/apache/superset.git

cd superset

docker compose build

docker compose up
※docker compose upの後、利用可能になるまでかなり時間がかかります。

3.ブラウザでhttp://<サーバ名またはIPアドレス>:8088/ にアクセスします。adminユーザ、パスワードadminでログインします。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2021年12月1日水曜日

Debian 11(Bullseye)/Ubuntu 20.04でApache SupersetにMariaDBへのデータベース接続を追加する

Apache SupersetにMariaDBへのデータベース接続を追加するには、以下の手順を実行します。

MariaDBデータベース追加方法

1. (任意)以下のコマンドを実行してMariaDBをインストールします。既存のMariaDBがある場合は、スキップしてください。
sudo apt-get update

sudo apt-get -y install mariadb-server mariadb-client libmariadb-dev

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"
※パスワードは適宜変更してください。

mysql -uroot -proot -e "CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;"

mysql -uroot -proot -e "CREATE USER test@localhost IDENTIFIED BY 'test';"
※パスワードは適宜変更してください。

mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost';"

mysql -uroot -proot -e "FLUSH PRIVILEGES;"

2. PyMySQLをインストールします。ここでは、仮想環境を~/supersetに作成した場合を想定しています。
cd ~/superset

pipenv install PyMySQL
※lockで失敗した場合は以下を実行してみます。
pipenv install PyMySQL --skip-lock
Apache Supersetを再起動します。
sudo systemctl restart superset

3.データメニューの「データベース」を選択後、画面右上の「+データベース」ボタンをクリックします。

4.「Connect a database」で「MySQL」をクリックして選択します。

5.表示名・SQLALCHEMY URIフィールドを入力します。SQLALCHEMY URIには、以下を入力します。
mysql+pymysql://test:test@localhost:3306/test
「接続のテスト」ボタンをクリックして、画面に「Connection looks good」と表示されたら、「CONNECT」ボタンをクリックして設定を完了します。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2021年11月30日火曜日

Rocky Linux 8にApache SupersetとMariaDBをインストールする

Apache SupersetはPython製のBIツールです。

〇Apache Supersetの画面

インストール方法

1. firewallでhttpの8088番ポートを開けます
sudo firewall-cmd --add-port=8088/tcp --permanent

sudo firewall-cmd --reload

2. SELinuxの無効化
sudo setenforce 0

sudo getenforce

sudo sed -i -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3. MariaDBをインストール
sudo dnf -y install mariadb mariadb-server

sudo systemctl enable mariadb.service

sudo systemctl start mariadb.service

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"

mysql -uroot -proot -e "CREATE DATABASE superset DEFAULT CHARACTER SET utf8mb4;"

mysql -uroot -proot -e "CREATE USER superset@localhost IDENTIFIED BY 'superset';"

mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON superset.* TO 'superset'@'localhost';"

mysql -uroot -proot -e "FLUSH PRIVILEGES;"
※ユーザー名・パスワードは適宜変更してください

4.pipenvのインストール
sudo dnf -y install python3 python3-devel python3-pip

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

echo "export PYTHONPATH=/home/rocky/superset" >> ~/.bashrc
※この例ではrockyユーザのホームディレクトリ下のsupersetディレクトリにsuperset_config.pyを配置することを想定しています。適宜パスを変更してください。

source ~/.bashrc

5.Apache Supersetのインストール
sudo dnf -y install gcc gcc-c++ libffi-devel python3-wheel openssl-devel cyrus-sasl-devel openldap-devel

mkdir -p ~/superset

cd ~/superset

pipenv --python 3

pipenv install apache-superset

pipenv install PyMySQL

pipenv install dataclasses

SECRET_KEY=`echo -e "import os; print(os.urandom(24).hex())" | python3`

cat << EOF > superset_config.py
# Superset specific config
ROW_LIMIT = 5000

BABEL_DEFAULT_LOCALE='ja'

SUPERSET_WEBSERVER_PORT = 8088

# Flask App Builder configuration
# Your App secret key
#SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
SECRET_KEY = '#####'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
#SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://superset:superset@localhost:3306/superset'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
EOF
※データベースのパスワードなど、適宜変更してください。

sed -i "s/#####/$SECRET_KEY/" superset_config.py

pipenv shell

superset db upgrade

superset fab create-admin --username admin --firstname admin --lastname user --email admin@localhost.localdomain --password admin
※管理者のユーザ名やパスワードなど適宜変更してください。

superset load_examples

superset init

superset run -h 0.0.0.0 -p 8088 --with-threads --reload
※動作の確認。Ctrl+Cで止めます。

6. サービス化
cat << EOF | sudo tee /etc/systemd/system/superset.service
[Unit]
Description=superset
[Service]
Type=simple
Environment=PYTHONPATH=/home/rocky/superset
ExecStart=/home/rocky/superset/.venv/bin/superset run -h 0.0.0.0 -p 8088 --with-threads --reload
User=rocky
Group=rocky
WorkingDirectory=/home/rocky/superset
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
※この例ではrockyユーザでサービスを実行し、supersetをインストールした仮想環境は/home/rocky/supersetにあることを想定しています。適宜変更してください。

sudo systemctl enable superset.service

sudo systemctl start superset.service

ブラウザでhttp://<サーバ名またはIPアドレス>:8088/ にアクセスします。adminユーザ、パスワードadminでログインします。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2021年11月29日月曜日

AlmaLinux 8にApache SupersetとMariaDBをインストールする

Apache SupersetはPython製のBIツールです。

〇Apache Supersetの画面

インストール方法

1. firewallでhttpの8088番ポートを開けます
sudo firewall-cmd --add-port=8088/tcp --permanent

sudo firewall-cmd --reload

2. SELinuxの無効化
sudo setenforce 0

sudo getenforce

sudo sed -i -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3. MariaDBをインストール
sudo dnf -y install mariadb mariadb-server

sudo systemctl enable mariadb.service

sudo systemctl start mariadb.service

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"

mysql -uroot -proot -e "CREATE DATABASE superset DEFAULT CHARACTER SET utf8mb4;"

mysql -uroot -proot -e "CREATE USER superset@localhost IDENTIFIED BY 'superset';"

mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON superset.* TO 'superset'@'localhost';"

mysql -uroot -proot -e "FLUSH PRIVILEGES;"
※ユーザー名・パスワードは適宜変更してください

4.pipenvのインストール
sudo dnf -y install python3 python3-devel python3-pip

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

echo "export PYTHONPATH=/home/alma/superset" >> ~/.bashrc
※この例ではalmaユーザのホームディレクトリ下のsupersetディレクトリにsuperset_config.pyを配置することを想定しています。適宜パスを変更してください。

source ~/.bashrc

5.Apache Supersetのインストール
sudo dnf -y install gcc gcc-c++ libffi-devel python3-wheel openssl-devel cyrus-sasl-devel openldap-devel

mkdir -p ~/superset

cd ~/superset

pipenv --python 3

pipenv install apache-superset

pipenv install PyMySQL

pipenv install dataclasses

SECRET_KEY=`echo -e "import os; print(os.urandom(24).hex())" | python3`

cat << EOF > superset_config.py
# Superset specific config
ROW_LIMIT = 5000

BABEL_DEFAULT_LOCALE='ja'

SUPERSET_WEBSERVER_PORT = 8088

# Flask App Builder configuration
# Your App secret key
#SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
SECRET_KEY = '#####'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
#SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://superset:superset@localhost:3306/superset'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
EOF
※データベースのパスワードなど、適宜変更してください。

sed -i "s/#####/$SECRET_KEY/" superset_config.py

pipenv shell

superset db upgrade

superset fab create-admin --username admin --firstname admin --lastname user --email admin@localhost.localdomain --password admin
※管理者のユーザ名やパスワードなど適宜変更してください。

superset load_examples

superset init

superset run -h 0.0.0.0 -p 8088 --with-threads --reload
※動作の確認。Ctrl+Cで止めます。

6. サービス化
cat << EOF | sudo tee /etc/systemd/system/superset.service
[Unit]
Description=superset
[Service]
Type=simple
Environment=PYTHONPATH=/home/alma/superset
ExecStart=/home/alma/superset/.venv/bin/superset run -h 0.0.0.0 -p 8088 --with-threads --reload
User=alma
Group=alma
WorkingDirectory=/home/alma/superset
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
※この例ではalmaユーザでサービスを実行し、supersetをインストールした仮想環境は/home/alma/supersetにあることを想定しています。適宜変更してください。

sudo systemctl enable superset.service

sudo systemctl start superset.service

ブラウザでhttp://<サーバ名またはIPアドレス>:8088/ にアクセスします。adminユーザ、パスワードadminでログインします。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2021年11月28日日曜日

Debian 11(Bullseye)にApache SupersetとMariaDBをインストールする

Apache SupersetはPython製のBIツールです。

〇Apache Supersetの画面(Debian 11)

インストール方法

1. 以下のコマンドを実行してMariaDBをインストールします。
sudo apt-get update

sudo apt-get -y install mariadb-server mariadb-client libmariadb-dev

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"
※パスワードは適宜変更してください。

mysql -uroot -proot -e "CREATE DATABASE superset DEFAULT CHARACTER SET utf8mb4;"

mysql -uroot -proot -e "CREATE USER superset@localhost IDENTIFIED BY 'superset';"
※パスワードは適宜変更してください。

mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON superset.* TO 'superset'@'localhost';"

mysql -uroot -proot -e "FLUSH PRIVILEGES;"

2.pipenvのインストール
sudo apt-get -y install python3-pip python3-distutils python3-dev python3-testresources

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

echo "export PYTHONPATH=/home/debian/superset" >> ~/.bashrc
※この例ではdebianユーザのホームディレクトリ下のsupersetディレクトリにsuperset_config.pyを配置することを想定しています。適宜パスを変更してください。

source ~/.bashrc

3.Apache Supersetのインストール
sudo apt-get -y install build-essential libssl-dev libffi-dev libsasl2-dev libldap2-dev

mkdir -p ~/superset

cd ~/superset

pipenv --python 3

pipenv install apache-superset

pipenv install PyMySQL

SECRET_KEY=`echo -e "import os; print(os.urandom(24).hex())" | python3`

cat << EOF > superset_config.py
# Superset specific config
ROW_LIMIT = 5000

BABEL_DEFAULT_LOCALE='ja'

SUPERSET_WEBSERVER_PORT = 8088

# Flask App Builder configuration
# Your App secret key
#SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
SECRET_KEY = '#####'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
#SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://superset:superset@localhost:3306/superset'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
EOF
※データベースのパスワードなど、適宜変更してください。

sed -i "s/#####/$SECRET_KEY/" superset_config.py

pipenv shell

superset db upgrade

superset fab create-admin --username admin --firstname admin --lastname user --email admin@localhost.localdomain --password admin
※管理者のユーザ名やパスワードなど適宜変更してください。

superset load_examples

superset init

superset run -h 0.0.0.0 -p 8088 --with-threads --reload
※動作の確認。Ctrl+Cで止めます。

4. サービス化
cat << EOF | sudo tee /etc/systemd/system/superset.service
[Unit]
Description=superset
[Service]
Type=simple
Environment=PYTHONPATH=/home/debian/superset
ExecStart=/home/debian/superset/.venv/bin/superset run -h 0.0.0.0 -p 8088 --with-threads --reload
User=debian
Group=debian
WorkingDirectory=/home/debian/superset
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
※この例ではdebianユーザでサービスを実行し、supersetをインストールした仮想環境は/home/debian/supersetにあることを想定しています。適宜変更してください。

sudo systemctl enable superset.service

sudo systemctl start superset.service

ブラウザでhttp://<サーバ名またはIPアドレス>:8088/ にアクセスします。adminユーザ、パスワードadminでログインします。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2021年11月27日土曜日

Ubuntu 20.04にApache SupersetとMariaDBをインストールする

Apache SupersetはPython製のBIツールです。

〇Apache Supersetの画面

インストール方法

1. 以下のコマンドを実行してMariaDBをインストールします。
sudo apt-get update

sudo apt-get -y install mariadb-server mariadb-client libmariadb-dev

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"
※パスワードは適宜変更してください。

mysql -uroot -proot -e "CREATE DATABASE superset DEFAULT CHARACTER SET utf8mb4;"

mysql -uroot -proot -e "CREATE USER superset@localhost IDENTIFIED BY 'superset';"
※パスワードは適宜変更してください。

mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON superset.* TO 'superset'@'localhost';"

mysql -uroot -proot -e "FLUSH PRIVILEGES;"

2.pipenvのインストール
sudo apt-get -y install python3-pip python3-distutils python3-dev python3-testresources

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

echo "export PYTHONPATH=/home/ubuntu/superset" >> ~/.bashrc
※この例ではubuntuユーザのホームディレクトリ下のsupersetディレクトリにsuperset_config.pyを配置することを想定しています。適宜パスを変更してください。

source ~/.bashrc

3.Apache Supersetのインストール
sudo apt-get -y install build-essential libssl-dev libffi-dev libsasl2-dev libldap2-dev

mkdir -p ~/superset

cd ~/superset

pipenv --python 3

pipenv install apache-superset

pipenv install PyMySQL

SECRET_KEY=`echo -e "import os; print(os.urandom(24).hex())" | python3`

cat << EOF > superset_config.py
# Superset specific config
ROW_LIMIT = 5000

BABEL_DEFAULT_LOCALE='ja'

SUPERSET_WEBSERVER_PORT = 8088

# Flask App Builder configuration
# Your App secret key
#SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
SECRET_KEY = '#####'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
#SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://superset:superset@localhost:3306/superset'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
EOF
※データベースのパスワードなど、適宜変更してください。

sed -i "s/#####/$SECRET_KEY/" superset_config.py

pipenv shell

superset db upgrade

superset fab create-admin --username admin --firstname admin --lastname user --email admin@localhost.localdomain --password admin
※管理者のユーザ名やパスワードなど適宜変更してください。

superset load_examples

superset init

superset run -h 0.0.0.0 -p 8088 --with-threads --reload
※動作の確認。Ctrl+Cで止めます。

4. サービス化
cat << EOF | sudo tee /etc/systemd/system/superset.service
[Unit]
Description=superset
[Service]
Type=simple
Environment=PYTHONPATH=/home/ubuntu/superset
ExecStart=/home/ubuntu/superset/.venv/bin/superset run -h 0.0.0.0 -p 8088 --with-threads --reload
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/superset
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
※この例ではubuntuユーザでサービスを実行し、supersetをインストールした仮想環境は/home/ubuntu/supersetにあることを想定しています。適宜変更してください。

sudo systemctl enable superset.service

sudo systemctl start superset.service

ブラウザでhttp://<サーバ名またはIPアドレス>:8088/ にアクセスします。adminユーザ、パスワードadminでログインします。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2021年11月26日金曜日

Apache Supersetのダッシュボードのヘッダー色を変更する

Apache SupersetはダッシュボードのCSSをカスタマイズすることが出来ます。以下の手順でダッシュボードのヘッダー色を変更します。

操作手順

1. ダッシュボードを開いて「ダッシュボードを編集」をクリックします。編集モードで画面右上の「・・・」ボタン(下図赤枠部分)をクリックして「CSSを編集」を選択します。

2.CSSウインドウが表示されるので、Live CSS editorでdashboard-headerクラスに以下の様な属性を設定して、ヘッダー色を指定します。
.dashboard-header {
  background-color: #FFF587;
}
※注:Apache Superset version 1.3.1では上記設定で変わりますが、バージョンアップによって効かない可能性があります

CSSウインドウ外をクリックすると閉じることができます。

3.保存ボタンまたは「別名で保存」メニューでダッシュボードを保存します。ダッシュボードの背景色が変わったことを確認します。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2021年11月25日木曜日

Apache Supersetのダッシュボードの背景色を変更する

Apache SupersetはダッシュボードのCSSをカスタマイズすることが出来ます。以下の手順でダッシュボードの背景色を変更します。

操作手順

1. ダッシュボードを開いて「ダッシュボードを編集」をクリックします。編集モードで画面右上の「・・・」ボタン(下図赤枠部分)をクリックして「CSSを編集」を選択します。

2.CSSウインドウが表示されるので、Live CSS editorでdashboard-contentクラスに以下の様な属性を設定して、背景色を指定します。
.dashboard-content {
  background-color: #FF8C64;
}
※注:Apache Superset version 1.3.1では上記設定で変わりますが、バージョンアップによって効かない可能性があります

CSSウインドウ外をクリックすると閉じることができます。

3.保存ボタンまたは「別名で保存」メニューでダッシュボードを保存します。ダッシュボードの背景色が変わったことを確認します。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

2021年11月24日水曜日

Apache Supersetのダッシュボード内のチャートの背景色を変更する

Apache SupersetはダッシュボードのCSSをカスタマイズすることが出来ます。以下の手順でダッシュボード内のチャートの背景色を変更します。

操作手順

1. ダッシュボードを開いて「ダッシュボードを編集」をクリックします。編集モードで画面右上の「・・・」ボタン(下図赤枠部分)をクリックして「CSSを編集」を選択します。

2.CSSウインドウが表示されるので、Live CSS editorでdashboard-component-chart-holderクラスに以下の様な属性を設定して、背景色を指定します。
.dashboard-component-chart-holder {
  background-color: #d3cacc;
}
※注:Apache Superset version 1.3.1では上記設定で変わりますが、バージョンアップによって効かない可能性があります

CSSウインドウ外をクリックすると閉じることができます。

3.保存ボタンまたは「別名で保存」メニューでダッシュボードを保存します。チャートの背景色が変わったことを確認します。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ