Python OLAP組織

こんにちは、読者の皆様。
今日は、簡単なPythonデータ分析システムを構築する方法について説明します。 フレームワークキューブcubesviewerパッケージは、これに役立ちます。
キューブは、Pythonを使用して多次元データを操作するためのフレームワークです。 さらに、レポート作成アプリケーションの開発と一般的なデータ表示を簡素化するOLAP HTTPサーバーが含まれています。
Cubesviewerは、上記のサーバーを操作するためのWebベースのインターフェイスです。


キューブをインストールして構成する


最初に、パッケージが機能するために必要なライブラリをインストールする必要があります。

pip install pytz python-dateutil jsonschema pip install sqlalchemy flask 

次に、 キューブパッケージ自体をインストールします。

 pip install cubes 

実践が示しているように、現在のリポジトリのバージョン(1.0alpha2)を使用することをお勧めします

Windowsの詳細設定

Windowsで作業する場合は、 {PYTHON_DIR} \ Lib \ site-packages \ dateutil \ tz.pyファイルの40行を置き換える必要があります。
 return myfunc(*args, **kwargs).encode() 



 return myfunc(*args, **kwargs) 

次に、使用するプラットフォームに関係なく、jsonパーサーが正しく機能するように次の修正を追加する必要があります。 90行目から{PYTHON_DIR} \ Lib \ site-packages \ cubes-1.0alpha-py2.7.egg \ cubes \ metadata.pyに入力する必要があります。

 elif len(parts.scheme) == 1 and os.path.isdir(source): # TODO: same hack as in _json_from_url return read_model_metadata_bundle(source) 


キューブのセットアップとその展開プロセスの説明


たとえば、 cubesに付属しているOLAPキューブを考えますexamples / hello_worldフォルダにあります (リポジトリから取得できます)。
私たちにとって最も興味深いのは2つのファイルです。

それらについて詳しく見ていきましょう。 次のセクションを含む場合があるslicer.iniファイルから始めましょう。

したがって、テストファイルから、サーバーがローカルマシンに配置され、5000ポートで動作することを分析します。 data.sqliteと呼ばれるローカルSQLiteデータベースがストレージとして使用されます。
サーバー構成の詳細については、ドキュメントをご覧ください
また、ファイルから、キューブのモデルの説明がmodel.jsonファイルにあることがわかります。このファイルの構造の説明は、これから取り上げます。
モデル記述ファイルは、次の論理セクションを含むjsonファイルです。

キューブディメンションのセクションは、私たちにとって興味深いものです。 その他はすべてオプションです。
ディメンションリストアイテムには、次のメタデータが含まれます。
キー説明
お名前次元識別子
ラベルユーザーに表示されるディメンション名
説明ユーザーの測定の説明
レベル測定レベルのリスト
階層階層リスト
default_hierarchy_name階層ID

キューブリストアイテムには、次のメタデータが含まれています。
キー説明
お名前次元識別子
ラベルユーザーに表示されるディメンション名
説明ユーザーの測定の説明
寸法上記の測定名のリスト
対策対策のリスト
集合体集約関数のリスト
マッピング論理的および物理的属性のマークアップ

上記に基づいて、( item、ye​​ar )のモデルに2つのディメンションがあることを理解できます。 「 アイテム 」測定には3つの測定レベルがあります。

キューブのメジャーとして、 「amount」フィールドが機能します。このフィールドでは、合計と行数のカウントの機能が実行されます。
ドキュメントでキューブモデルのマーク付けの詳細をご覧ください
設定を理解したら、テストベースを作成する必要があります。 これを行うには、 prepare_data.pyスクリプトを実行する必要があります。

 python prepare_data.py 

あとは、スライサーと呼ばれるキューブでテストサーバーを起動するだけです。

 slicer serve slicer.ini 

その後、キューブのパフォーマンスを確認できます。 これを行うには、ブラウザバーに次のように入力できます。
localhost :5000 / cube / irbd_balance / aggregate?drilldown = year
応答として、データの集計結果を含むjsonオブジェクトを取得します。 サーバーの応答形式の詳細については、 こちらをご覧ください

cubesviewerをインストールする


キューブを構成したら、 subviewviewerのインストールに進むことができます。 これを行うには、 リポジトリをディスクにコピーします

 git clone https://github.com/nonsleepr/cubesviewer.git 

そして、 / srcフォルダーの内容を目的の場所に移動するだけです。
cubesviewerはDjangoアプリケーションであるため、 Django(バージョン1.4以下)リクエストおよびdjango-pistonパッケージが必要であることに注意してください。 なぜなら このバージョンのDjangoはすでに古くなっているため、上記のリンクを使用して、バージョンDjango 1.6のサブビューアーを入手できます。
それをインストールすると、行を追加する必要があるという点で元のものとわずかに異なります allow_cors_origin: localhost:8000
その後、ファイル{CUBESVIEWER_DIR} /web/cvapp/settings.pyでアプリケーションを構成する必要があります 。 データベース設定、OLAPサーバーアドレス( CUBESVIEWER_CUBES_URL変数)およびCUBESVIEWER_CUBES_URLアドレス( CUBESVIEWER_BACKEND_URL )を指定することにより
dajno-pistonに小さな修正を加えることは残っています
これで、アプリケーションをデータベースと同期できます。 これを行うには、 {CUBESVIEWER_DIR} / web / cvappから実行する必要があります。

 python manage.py syncdb 

ローカルのDjangoサーバーを起動します

 python manage.py runserver 

これで、ブラウザを介してCUBESVIEWER_BACKEND_URL指定されたアドレスに移動することができます。 そして、完成した結果をお楽しみください。


おわりに


作業を説明するために、最も単純な例を取り上げました。 実稼働プロジェクトの場合、 キューブapacheuswgiなどにデプロイできることに注意してください 。 この記事を使用してcubesviewerを接続するのは難しくありません。
トピックがコミュニティにとって興味深いものである場合、今後の記事の1つで公開します。

Source: https://habr.com/ru/post/J222421/


All Articles