久しぶりの技術ブログになりました。塚田です。趣味は公園巡りです。
お昼休みに会社近くの代々木公園で鳩を眺めていたところで redash v10 のニュースが入ってきました。
change log を確認すると New Data Source: CSV/Excel Files との記載があり、新しく CSV や Excel がデータソースとして加わったようです。
https://github.com/getredash/redash/blob/release/10.0.x/CHANGELOG.md
しかし オフィシャルサイトを見ると、これについてのドキュメントは 2021/10/4 現在見つかりません。(どこかにあったら教えてください)
そのため 今回 Excel に絞りソースコードを元に確認しました。
https://github.com/getredash/redash/blob/master/redash/query_runner/excel.py#L12
今回新しく追加されたデータソースで ガチガチに実装しているということではなく、Pandas のライブラリを使っているようです。
このため、集計に不要のレコード・カラムがあった場合スキップさせることができそうです。
https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html
試してみた
ソースのデータ
サンプルとして、無料で公開されている Excel を使わせて貰いました。 https://file-examples.com/index.php/sample-documents-download/sample-xls-download/#google_vignette
redash から接続
以下のようなクエリを書いて接続しました。
url: 'https://file-examples-com.github.io/uploads/2017/02/file_example_XLS_10.xls' user-agent: 'sample' usecols: [1, 2, 4] names: - First Name - Last Name - Country skiprows: 0 skipfooter: 0
- url ... 接続先の URL
- user-agent ... 接続する際のユーザーエージェント
- usecols: 利用するカラム
- names: カラムに対するラベリング
- skiprows & skipfooter: 読み込む際にスキップするカラム
結果
無事 Excel のデータを redash で描写することができました。
補足事項
Google drive に Excel を置いて試しましたが Excel file format cannot be determined, you must specify an engine manually. というエラーが出ました。 Excel の拡張子で保存する必要があるようです。
それでは。