Metadata-Version: 2.1
Name: prep2dbt
Version: 0.0.3
Summary: Tools for converting Tableau Prep flows to dbt models
Author-email: Tomomi Kodama <t.kodama@datumstudio.jp>
License: MIT License
        
        Copyright (c) 2023 t.kodama
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Documentation, https://github.com/t0momi219/prep2dbt
Project-URL: Changelog, https://github.com/t0momi219/prep2dbt
Project-URL: Repository, https://github.com/t0momi219/prep2dbt
Project-URL: Issues, https://github.com/t0momi219/prep2dbt
Keywords: Tableau,dbt
Classifier: Development Status :: 3 - Alpha
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=8.1.7
Requires-Dist: networkx>=3.2.1
Requires-Dist: pandas>=2.1.4
Requires-Dist: ruamel.yaml>=0.18.5
Requires-Dist: snowflake-sqlalchemy>=1.5.1
Requires-Dist: sqlalchemy[mypy]>=1.4.50

# prep2dbt

Tableau Prepで作成されたフローをdbtモデルに変換するツールです。

ドキュメント
- https://hogehoge

ソースコード
- https://github.com/t0momi219/prep2dbt

サンプル（Superstoreを本ツールでdbtに変換）
- https://t0momi219.github.io/prep2dbt-demo/#!/overview

## モチベーション

Tableau PrepはGUIで簡易なデータパイプラインを作成・操作することに焦点が当てられたツールです。フローが複雑化してきた場合や複数人でフローを利用する場合には、これを維持・管理するために大きな労力を支払わなければなりません。

一方、dbtはSQLを中核にしたデータパイプラインを構築するためのツールとして知られています。コードのモジュール化、テスト、自動ドキュメント作成など、共同でパイプラインを管理するために必要となる様々な機能が提供されます。

このツールは、Tableau Prepの処理自体をdbtへ移植する、あるいはドキュメント化だけをdbtに頼るといった部分的な利用を支援するために作りました。

## 機能

### dbtモデル変換

フローファイルをdbtモデル（SQLファイルとYML構成ファイル）に変換します。

> [!NOTE]
> 
> dbtプロジェクト自体はこのツールでは作成しないため、プロジェクトは別で用意してください。
> 
> 初めてdbtを利用する方は、クイックスタートでプロジェクトの作り方を確認できます。

> [!caution]
> 
> Tableau Prepのフローファイルからは、変換に十分な情報が取得できない場合があります。
> （例えば、データソースがどのようなカラムを持っているのかといった情報がファイルに残っていません。）
> よって、変換後のSQLが完璧に動作する保証はありません。
> 
> また、多くの場合でTableau PrepのフローをそのままSQLにマッピングするだけのモデルは、パフォーマンスや再利用性の観点から推奨しません
> あくまで開発の土台として利用してください。


### 統計情報の出力

フローが利用している機能の一覧と、統計情報を出力します。これはフロー移行前に難易度や見積もりの測定を行ったり、リファクタリングのヒントとして活用するために利用できます。


## インストール

pipからインストールできます。

```sh
$ pip install prep2dbt
```

または、このプロジェクトをローカルでパッケージとして実行します。

```sh
$ git clone https://github.com/t0momi219/prep2dbt.git
$ python -m prep2dbt convert -f /path/to/file.tfl
```
