目次:
I.はじめに
Tableau が数日前にアップデートされたと聞きました。特に Python や R などのサードパーティ ツールのサポートを強化するために、データ テーブルの処理を容易にする新しい機能 Table Extension が追加されました。
これまでの Tableau では、元のデータテーブルに計算列を追加したり、データソースのフィルタリング期間を通じて行データを削除したりすることしかできませんでしたが、データを処理して行数を追加することはできませんでしたが、Table Extension ではこの機能を拡張することで実現できます。この側面におけるより古典的なアプリケーションは、ワード クラウド マップです。
以前のバージョンでは、ワード クラウド マップを作成する場合、通常はデータ テーブルがあり、Python を使用してテーブル内の関連テキストをセグメント化し、それを新しいデータ テーブルとして保存し、新しいデータ テーブルを取得していました。ワード クラウド マップの作成には Tableau を使用します (実際、ワード クラウド マップを Python で直接描画する方が便利です!)。
Table Extension を使用すると、Tableau 上でワード クラウド マップをより適切に描画できるようになりました。(もちろん機能はそれだけではなく、さまざまなアルゴリズムの制御も可能です。)
2. 構成環境
2.1 Tableau 2022.3 をダウンロードしてインストールする
Tableau 2022.3 バージョンのダウンロード リンク ここをクリックして
ダウンロードしてインストールします。
インストール プロセス中にエラー 1310 が表示される場合があります: xxx.dll ファイルに書き込めません。このディレクトリにアクセスできることを確認する必要があります (スクリーンショットを撮り忘れました。これはおそらくこれを意味します)。
解決策: まず 360 を終了し、インストール後に開きます。
2.2 Tabpyのインストール
Tabpy は Tableau と Python を接続するためのツールです。
インストールする前に Python 環境があることを確認してください。!!
コマンド プロンプトまたはターミナルを開き、Windows では次のコードを直接入力して Enter キーを押し、Mac では を使用しますpip3
。
pip install tabpy
2.3 テスト接続
**接続するには Tabpy をオンにする必要があります。**開く方法は次のとおりです。コマンド プロンプトまたはターミナルで Enter キーを押すだけですtabpy
。
これは、ターミナルから jupyter ノートブックを呼び出すのと似ており、開いた後、操作の各ステップがコマンド プロンプトまたはターミナルに出力されます。
を開いた後tabpy
、Tableau に切り替え、以下の手順に従って
ウィンドウがポップアップ表示され、情報を入力して、[接続のテスト] をクリックし、接続後に [保存] をクリックして閉じます。
主机名:127.0.0.1或localhost
端口:9004
3. データの準備と処理
3.1 データの準備
3.1.1 ソースデータの取得
データソース: 「仮想現実と産業アプリケーションの統合と開発のための行動計画 (2022-2026)」の印刷と配布に関する 5 部門の通知処理後のデータ リソースへのリンクについては、記事の最後を参照してください
。
データ構造は次のとおりです。
tableau 2022.3 を開いてファイルを開きます。
ワークシートは 1 つしかないため、デフォルトではアプリケーション領域にドラッグされます。ここで、新しいテーブル拡張ボタンがあることがわかります。それをダブルクリックします。
注: この時点で、アプリケーション領域にはすでにテーブルが存在するため、関連付け関係を編集して新しいテーブルを追加し、プログラム テーブルを拡張する必要があります。(この記事のセクション 3.4 は、関連する内容について補足されています)
ダブルクリック後のインターフェースは以下の通りです。
次に、Sheet1を【ワークシートをここにドラッグ】にドラッグすると、以下のインターフェースが表示されます。
1. データテーブルを追加する場所であり、複数テーブルの関連付けを実行できます;
2. データを処理するためのスクリプトコードです;
3. 対応するフォームを選択してテーブル構造を表示するか、リレーションシップを選択できます処理前後のフィールド間の関係を編集します。拡張テーブルは 2 番目のアプリケーション テーブルであるため、最初のアプリケーション テーブル Sheet1 との関係を確認した後
ます。入力テーブルと出力テーブルのデータを表示する場所。
3.1.2 スクリプトテスト
公式に推奨されるスクリプトは ですreturn _arg1
。次に、スクリプトに次のコードを入力し、[適用] をクリックします。
print(type(_arg1))
print(_arg1)
return _arg1
適用後、以下の図に示すようにインターフェースにいくつかの変化が見られますが、この時点では、テーブル拡張プログラムによって生成されたデータ構造が赤枠の左側に表示されているため、コード出力は有効です。下の図。他の 2 つの内容はprint()
、コマンド プロンプトまたはターミナルで表示できます。
ターミナルを見ると、データは正常に出力されています。**_arg1**
これは辞書型で、列ストレージを使用しており、キーは列名、値は各列の値です。(実際、この点は公式 API ドキュメントで説明されており、「セクション 4 拡張」で追加されています)
注: 私が使用するデータは比較的長いため、見にくいかもしれません。友人は、比較的単純なデータセットを使用して、印刷結果が見やすい。(「第4章 拡張」では別の表の作成方法があり、印刷テストも行えます)
3.1.3 エラーコード 03D52C7A の対処方法
補足: [今すぐ更新] (下記)をクリックすると、エラーが報告される場合があります错误代码:03D52C7A
。
予期しないエラー
内部エラー - 予期しないエラーが発生したため、操作を完了できませんでした。
エラーコード: 03D52C7A:
次に、[データ ソースの更新] ボタンをクリックして問題を修正します。以下に示すように、保存ボタンの隣にあるボタンをクリックします。
3.2 データの処理 - 単語の分割
次に、データセットの処理を開始しましょう。
名詞、動詞、形容詞を残したまま、吃音と分詞を使ってコンテンツを切り取り、それを適用して結果を表示します。
import pandas as pd # 使用pandas来进行数据处理
import jieba.posseg as psg # 使用jieba进行文本分词
# 将_arg1转为DataFrame,以便后续处理
df_input = pd.DataFrame.from_dict(_arg1)
# 定义分词函数
def values_cut(arg):
# 只保留 名词、动词、形容词 这三种词性的词汇
result = [x.word for x in psg.cut(arg) if x.flag in ['n','v','a']]
return result
df_input['内容分词'] = df_input['内容'].map(lambda x : values_cut(x)) # 调用分词函数对歌词字段进行分词
df_middle = df_input[['顺序编号', '内容分词']] # 只取顺序编号和内容分词,以避免数据冗余。
df_middle = df_middle.explode('内容分词')[['顺序编号', '内容分词']] # 对分词后的列表进行行扩展,每个词作为一行数据
df_return = df_middle.to_dict(orient='list') # 将 DataFrame 转为 dict 形式({"列名1":["列值1","列值2"], "列名2":["列值1","列值2"]})
return df_return
注: 最初にリレーションシップを設定し、次に [テーブルの出力] > [すぐに更新]をクリックしてデータを更新する必要があります。
3.3 視覚化
この時点で、ワークシートで単語の分割後の視覚的な結果を表示できます。
特に注目しているのは仮想現実であり、アプリケーションに重点を置いていると言わざるを得ません。テクノロジーとコンテンツを通じた没入型体験の創出に重点が置かれていると同時に、政府は企業のイノベーションを奨励・支援し、教育機関や研究機関は人材の輩出をサポートし、企業はテクノロジーの反復と促進を支援するサポートチェーンが存在します。仮想現実技術と様々な産業・分野の融合・発展を目指します。
第 1 レベルのタイトルを個別にフィルタリングして、各タイトルの焦点を確認できます。
3.4 補足: 拡張マルチテーブル
テーブル拡張プログラムのインターフェース(下図赤枠の内容)を閉じて、一つ前の階層に戻ります。
ご覧のとおり、Sheet1 とテーブル エクステンダー テーブル間の関連付けは次のとおりです。(編集を続けるには、任意のテーブルをダブルクリックできます)
最初に述べたことを思い出してください。Excel ファイルを開いた後、ワークシートは 1 つしかないため、アプリケーション領域に自動的に追加されるため、最初に使用するテーブルがは Sheet1, 他のテーブルを追加する場合は、関連付け関係を設定する必要があります。
複数のワークシートがある場合 (デフォルトではアプリケーション領域に追加されません)、またはワークスペースから Sheet1 を削除し (アプリケーション領域にテーブルを持たないままにしておきます)、新しいシート拡張プログラムをダブルクリックして、シート拡張子のみをダブルクリックします。番組表が(最初の表として)表示されます。新しいテーブルの追加およびプログラムテーブルの拡張のプロセスでは、関連する操作はなく、スクリプトの処理後にデータが直接出力されます。
注: 新しいテーブルを追加するたびに、関連付け関係を編集する必要があります。
テーブルエクステンダテーブルを再構築します。
別のテーブル エクステンダー テーブルを追加する必要がある場合は、拡張されていないテーブルをクリックし、[新しいテーブル エクステンダー] をダブルクリックして 2 番目の拡張データ テーブルを追加できます。
4. 拡張
4.1 表計算と表拡張
拡張部分では、Tableauテーブル拡張の動作原理について説明したいと思います。動作原理について説明する前に、テーブル計算 ( table calculations
) とテーブル拡張 ( Table Extensions
)という 2 つの単語を明確にする必要があります。
表計算については長い議論があり、表展開については資料が非常に少ないため、最初はこれら 2 つの概念に注意を払わず、途中で寄り道してしまいました。 , ますます混乱してきました!
表計算は、以前のバージョンでサポートされていた Python と「対話」するツールで、現在 Python と「対話」する関数は、SCRIPT_BOOL、SCRIPT_INT、SCRIPT_REAL、SCRIPT_STR、MODEL_EXTENSION_BOOL、MODEL_EXTENSION_INT、MODEL_EXTENSION_REAL、MODEL_EXTENSION_STR の 8 つです。この8つはどこで使われるのでしょうか?「ワークシート」インターフェイスで、フィールドを右クリックし、[作成] > [フィールドの計算] を選択し、対応する関数名を検索すると、対応する関数が表示されます。ここでは特定のアプリケーションは展開されません (実際には展開されていません)。注意深く研究されています)。
この記事では、2022.3で新たに追加された機能であるテーブル拡張を中心に説明します。この機能は「データソース」インターフェース上で動作します。
テーブル拡張機能を使用するには、テーブルとテーブル データを処理するコード (Python、R などをサポート) を渡す必要があります。その後、Tableau と対応する拡張ツール (Tabpy、Rserve など) が役立ちます。データを処理してから出力テーブルに戻ります。
4.2 動作原理
2 つの違いを理解したら、ターミナルに戻ります。
端末から送信されたデータの中で、私の注意を引いたものがありましたdef _user_script(tabpy, _arg1):
。
おそらく、完全な状況は次のとおりです。
def _user_script(tabpy, _arg1):
print(type(_arg1))
print(_arg1)
return _arg1
Python の基礎を少しでも持っている場合は、これが関数であることを理解できるはずです。つまり、Tableau に入力したコードは関数にカプセル化されているため、スクリプト コードでステートメントを使用でき_user_script()
ますreturn
。Tableau Analytics Extensions API ドキュメント
を参照した後、いくつかの推測ができました。これは正確ではないかもしれませんが、関連するデータ送信プロセスを理解するのに役立ちます。Tableau は、渡したフォームを辞書として処理します ({"列名 1": ["列の値 1", "列の値 2"], "列名 2": ["列の値 1", "列の値 2"]}) 形式で、Tabpy が Post リクエストを行うと、Tableau はディクショナリをこのパラメーター ( [直接] が、Tableau によって渡されたデータがそのまま直接返され、結果として得られる出力テーブルが入力テーブルと一致することを意味する場合)。注: Tableau に返されるデータ形式は、辞書の形式である必要もあります ({"列名 1": ["列値 1", "列値 2"], "列名 2": ["列値 1 ", "列値 2"]})。_arg1
return arg1
4.3 さらなる可能性: 自己構築テーブルと API 呼び出し
さらに一歩進んで~~
処理された結果データを実現したい場合は、_arg1
処理用のパラメーター (この記事の 3.2 の概要など) を使用できます。処理後は、データ構造が Tableau で必要な場合に限ります。
関数内容の入力は tabpy で処理されるので、テーブルを作成したり、他の場所からデータを読み込んだりすればよいのではないかと思われるかもしれません。答えは「はい」です!
例えば以下のスクリプトを適用すると正常に結果が出力できます。
import pandas as pd
df = pd.DataFrame([i/2 for i in range(10)],columns=['x'])
df['y2'] = df.x.apply(lambda x:x*x)
df_return = df.to_dict(orient='list')
print(type(df_return))
print(df_return)
return df_return
この時点では、テーブル拡張プログラムの下にテーブルがドラッグされていないため、つまり入力テーブルが存在しないため、_arg1
空の辞書になります。{}
つまり、この関数を使用して自分でフォームを作成することができます。もちろん、もっと想像力豊かな方法としてAPI を呼び出すこともできます。
データベースに保存されていない外部データがいくつかあり、データ アイランドを開くためにオープン API を介してデータを取得し、関連付けることができます。
注: アカウントのパスワードのセキュリティを考慮する必要があります。
4.4 ちょっとした不満: と Power BI
最後に、私はまだ文句を言わなければなりません!実際、Python サポートの点では、Tableau は少し劣っているようです。Python と R を介した PowerBI 描画機能は、長い間オンラインになっています。描画領域で、Python 拡張機能のリンクを選択します (下の図 1 Py
) ); Python 拡張機能を使用して、データ テーブルなどを取得することもできます (下の図 2)。
V. まとめ
関連リソースをダウンロードするにはここをクリックして、ポイントなしでダウンロードしてください~~~
参考内容:
Gan Zheng - Tableau 2022.3 のテーブル拡張機能の使い方?
Tableau Analytics 拡張機能 API ドキュメント
Tableau 公式テーブル拡張機能ユーザー マニュアル