3

現在、PostgreSQL データベースにあるテーブルから TDE を生成するために、Tableau Extract API を試しています。単一のテーブルから TDE を生成するコードを作成できましたが、結合された複数のテーブルに対してこれを行いたいと考えています。より具体的には、あるフィールドで内部結合された 2 つのテーブルがある場合、この TDE をどのように生成しますか?

少数のテーブルで作業している場合、JOIN 句を含む SQL クエリを使用して 1 つの巨大なテーブルを作成し、そのテーブルから TDE を生成できることがわかります。

>> SELECT * FROM table_1 INNER JOIN table_2 
   INTO new_table_1 
   ON table_1.id_1 = table_2.id_2;

>> SELECT * FROM new_table_1 INNER JOIN TABLE_3
   INTO new_table_2
   ON new_table_1.id_1 = table_3.id_3

次に、new_table_2 から TDE を生成します。

ただし、40 を超える異なるフィールドを持つテーブルがいくつかあるため、これは面倒になる可能性があります。

これは、API の現在のバージョンでも可能ですか?

4

3 に答える 3

2

必要な数のテーブルまたは他のソースから読み取ることができます。または、多数の結合を含む複雑なクエリを使用するか、ビューを作成してそこから読み取ります。通常、ビューを作成すると、多くのテーブルを結合する複雑なクエリがある場合に役立ちます。

データ抽出 API は、フィードするデータを取得する方法や場所にまったく依存しません。要点は、Tableau 用に事前に構築されたドライバーを持たない通常とは異なるソースからデータを取得できるようにすることです。

Tableau には Postgres ドライバーがあり、そこから直接読み取ることができるため、データ抽出 API を使用してプログラムを作成する必要はまったくありません。Tableau Desktop で抽出を定義できます。抽出の自動更新をスケジュールする必要がある場合は、Tableau Server またはその tabcmd コマンドを使用できます。

于 2013-07-17T17:12:02.323 に答える
1

トピックに戻ると、これは私が数日前に Python コードで試したことです。

try:
    tdefile= tde.Extract("extract.tde")
except:
    os.remove("extract.tde")
    tdefile = tde.Extract("extract.tde")

tableDef = tde.TableDefinition()

# Read each column in table and set the column data types using tableDef.addColumn
# Some code goes here...    

for eachTable in tableNames:
    tableAdd = tdeFile.addTable(eachTable, tableDef)

    # Use SQL query to retrieve bunch_of_rows from eachTable

    for some_row in bunch_of_rows:
    # Read each row in table, and set the values in each column position of each row
    # Some code goes here...
    tableAdd.insert(some_row)
    some_row.close()

tdefile.close()

このコードを実行すると、eachTable を "Extract" と呼ぶ必要があるというエラーが表示されます。

もちろん、このコードには欠点があります。このコードには、各テーブルがどのように結合されているかを示す箇所がないからです。

JOIN を使用してすべてを含む 1 つのテーブルを生成しない限り、複数のテーブルを使用できるようには見えないためです。

于 2013-07-17T22:18:33.077 に答える
1

返信ありがとうございます。Tableau Desktop を使用して抽出を定義できることを認識しています。実際、私はこれまで何度もこれを行ってきました。Tableau Desktop を使用して作成するのはほぼ不可能な計算フィールドを作成する必要があるため、API を使用して抽出を作成しようとしています。

この時点で、SQL クエリで JOIN を使用することをためらっています。結果のテーブルが複雑すぎて理解できないからです (これらのテーブルのいくつかには同じフィールド名もあります)。

複数のテーブルまたはソースから読み取ることができるということは、Tableau Extract API を使用することを意味しますか? この時点で、この API のどこにも複数のソースに対応する場所が見つかりません。たとえば、Tableau Desktop で複数のテーブルを使用すると、抽出が複数のテーブルで構成されていることを示すアイコンが左側に表示されます。これは API では発生していないようで、立ち往生しています。とにかく、返信をありがとうございました。

于 2013-07-17T21:56:01.433 に答える