Zuvor habe ich So stapeln Sie eine CSV-Datei mit einem PostgreSQL-ähnlichen COPY-Befehl stapelweise in eine Tableau-Hyperdatei, diesmal ist es jedoch eine vorhandene Hyperdatei. Erfahren Sie, wie Sie die Datenquelle für Ihre twbx-Datei (Tableau Packaged Workbook) aktualisieren.
Wenn Sie die Datenquelle der twbx-Datei aktualisieren möchten, müssen Sie normalerweise Tableau Desktop öffnen und die GUI bedienen. https://help.tableau.com/current/pro/desktop/ja-jp/save_savework_packagedworkbooks.htm
Wenn jedoch die Anzahl der zu aktualisierenden gepackten Arbeitsmappen und Datenquellen zunimmt, ist dies sehr problematisch. Daher ist es besser, diesmal mit CUI zu aktualisieren.
Bevor wir zum Hauptthema kommen, lassen Sie uns darüber sprechen, was eine Twbx-Datei ist.
Zusammenfassend sind ** Twbx-Dateien Twb-Dateien (Tableau-Arbeitsmappen) und komprimierte Datenquellen (Hyper-Dateien) **.
Lassen Sie uns den Inhalt der twbx-Datei überprüfen.
Sie können sehen, dass sample.twbx`` sample.twb
und Data / sample / sample.hyper
enthält.
Umgekehrt können ** Twb-Dateien (Tableau-Arbeitsmappen) und Datenquellen (Hyper-Dateien) mit der entsprechenden Verzeichnisstruktur zip-komprimiert werden, um Twbx-Dateien zu werden **!
Im Folgenden werden wir es basierend auf dieser Idee implementieren.
Wir werden es im folgenden Verzeichnis implementieren.
.
├── conf
│ └── update_conf.csv
├── input
│ ├── sales.csv
│ └── titanic.csv
├── output
│ ├── sales.hyper
│ └── titanic.hyper
├── src
│ └── update_twbx.py
├── twbx
│ └── sample.twbx
└── work
.twbx /
Platzieren Sie die zu aktualisierende twbx-Datei (sample.twbx
) in .twbx /
.
sample.twbx
wird durch Verweisen auf zwei Datenquellen (Hyperdateien) erstellt.
Die Datenquellen sind Titanic (train.csv) und Predict Future Sales, die Kaggle bekannt sind. c / Competitive-Data-Science-Predict-Future-Sales) (sales_train.csv).
Die Dateinamen wurden aus Gründen der Übersichtlichkeit unten umbenannt.
.output /
Platzieren Sie die Datenquelle (Hyperdatei), die Sie aktualisieren möchten, in .output /
.
Bitte beachten Sie Folgendes bezüglich der zu platzierenden Dateien.
.conf / update_conf.csv
Beschreiben Sie Folgendes in der Konfigurationsdatei (.conf / update_conf.csv
).
csv:.conf/update_conf.csv
datasource,update_target_twbx,create_target_twbx
./output,./twbx/sample.twbx,./twbx/output.twbx
Implementieren Sie nach der Vorbereitung das Python-Skript. Implementieren Sie den folgenden Verarbeitungsablauf.
. / Work
python:.src/update_twbx.py
import csv
import zipfile
import os
import glob
import re
import shutil
work_dir = './work'
twbx_dir = './twbx'
#Holen Sie sich den zu aktualisierenden twbx-Dateipfad
with open('./conf/update_conf.csv') as f:
reader = csv.reader(f)
next(reader)
line_list = [row for row in reader]
for replace_dir, update_from, update_to in line_list:
#Entpacken Sie den zu aktualisierenden Twbx in das Arbeitsverzeichnis
with zipfile.ZipFile(update_from) as existing_zip:
existing_zip.extractall(work_dir)
#Holen Sie sich den Namen der twb-Datei in twbx
for file_name in os.listdir(work_dir):
if 'twb' in file_name:
twb_file_name = file_name
twb_file_path = os.path.join(work_dir, twb_file_name)
#Hyper-Dateispeicherverzeichnis in twbx
data_dir_regexp = os.path.join(work_dir, 'Data/*/*.hyper')
#Holen Sie sich die Hyper-Dateiliste in twbx
data_file_list = glob.glob(data_dir_regexp)
data_file_dict = {}
for data_file_path in data_file_list:
data_file_dict[re.sub(r'^.*/', '', data_file_path)] = data_file_path
replace_file_dict = {}
for replace_file_path in glob.glob(f'{replace_dir}*.hyper'):
replace_file_dict[re.sub(r'^.*/', '', replace_file_path)] = replace_file_path
#Aktualisierte Datenquelle in twbx enthalten
for key in data_file_dict.keys():
shutil.copy2(data_file_dict[key], replace_file_dict[key])
with zipfile.ZipFile(update_to, 'w', compression=zipfile.ZIP_DEFLATED) as new_zip:
new_zip.write(twb_file_path, arcname=twb_file_name)
for data_file_path in data_file_list:
data_file_name = re.sub(r'^.*/', '', data_file_path)
new_zip.write(data_file_path, arcname=data_file_name)
Sie können Ihre gepackte Arbeitsmappe folgendermaßen aktualisieren:
python src/update_twbx.py
Nach der Ausführung konnte ich bestätigen, dass die aktualisierte twbx-Datei an dem in update_twbx_list.csv
angegebenen Speicherort erstellt wurde!
Dieses Mal folgte ich der Verzeichnisstruktur, die durch das Entpacken der twbx-Datei erstellt wurde. Sie können die Datenquelle jedoch in einem beliebigen Verzeichnis platzieren, indem Sie das Datenquellen-Tag der entpackten twb-Datei bearbeiten. Das Bearbeiten der Twb-Datei wird unter So schreiben Sie die DB-Verbindungsinformationen von Tableau Desktop (Twb-Datei) mit Python neu beschrieben.
Recommended Posts