Aus irgendeinem Grund fand ich beim Betrachten der Tableau SDK-API-Referenz die folgende Beschreibung. Ich war überrascht.
Insert Data Directly from CSV Files
Alles, ** Mit dem PostgreSQL-ähnlichen Befehl COPY können Sie schnell Datensätze in eine Hyperdatei einfügen, die das einzigartige Datenformat von Tableau darstellt **.
Vor einigen Jahren habe ich einen Prozess zum Erstellen einer tde-Datei aus einer CSV-Datei implementiert, um Tableau Reader regelmäßig zu verteilen. Aufgrund der SDK-Spezifikationen handelt es sich jedoch um eine Einfügung für jeden Datensatz, sodass eine große Datenmenge verarbeitet wird Ich habe den Eindruck, dass es lange gedauert hat. Wenn Sie jedoch direkt mit dem Befehl COPY einfügen können, können Sie anscheinend auch mit einer großen Datenmenge schnell eine eigene Tableau-Datei erstellen (in diesem Fall hyper).
Dieses Mal werde ich die Trainingsdaten (CSV-Datei) von Kaggles Titanic-Datensatz mit dem Befehl COPY in die Hyper-Datei einfügen.
Klicken Sie hier für den Code https://github.com/yolo-kiyoshi/csv2hyper
Die komplette _API kann mit pip install tableau hyperapi
installiert werden. _
Es wird im folgenden Verzeichnis ausgeführt.
Die .hyper
Datei wird unter data /
erstellt.
Verzeichnisaufbau
.
├── data
│ └── train.csv # Titanic train
└── notebook
└── insert_test.ipynb
Definieren Sie zunächst die E / A-Datei.
#Fügen Sie den CSV-Quelldateipfad ein
src_path = '../data/train.csv'
#Hyper-Dateipfad, den Sie erstellen möchten
dist_path = '../data/train.hyper'
Verwenden Sie dann den Befehl COPY, um von CSV zu hyper einzufügen. Es ist eine grobe Erklärung, aber es ist wie "(1) Erstellen einer Sitzung zum Verarbeiten von Hyperdateien", "(2) Erstellen einer virtuellen PostgreSQL-ähnlichen Tabelle", "(3) Einfügen auf einmal aus einer CSV-Datei" und "(4) Ausspucken der gesamten Tabelle in eine Hyperdatei".
from tableauhyperapi import HyperProcess, Telemetry, Connection, CreateMode, NOT_NULLABLE, NULLABLE, SqlType, TableDefinition, escape_string_literal
#Erstellen Sie eine Sitzung für die Arbeit mit Hyper-Dateien
with HyperProcess(telemetry=Telemetry.SEND_USAGE_DATA_TO_TABLEAU) as hyper:
with Connection(
endpoint=hyper.endpoint,
database=dist_path,
create_mode=CreateMode.CREATE_AND_REPLACE
) as connection:
#Tabelle definieren
table_def = TableDefinition(
table_name='train',
columns=[
TableDefinition.Column("PassengerId", SqlType.big_int(), NOT_NULLABLE),
TableDefinition.Column("Survived", SqlType.big_int(), NOT_NULLABLE),
TableDefinition.Column("Pclass", SqlType.big_int(), NOT_NULLABLE),
TableDefinition.Column("Name", SqlType.text(), NOT_NULLABLE),
TableDefinition.Column("Sex", SqlType.text(), NOT_NULLABLE),
TableDefinition.Column("Age", SqlType.double(), NULLABLE),
TableDefinition.Column("SibSp", SqlType.big_int(), NOT_NULLABLE),
TableDefinition.Column("Parch", SqlType.big_int(), NOT_NULLABLE),
TableDefinition.Column("Ticket", SqlType.text(), NOT_NULLABLE),
TableDefinition.Column("Fare", SqlType.double(), NULLABLE),
TableDefinition.Column("Cabin", SqlType.text(), NULLABLE),
TableDefinition.Column("Embarked", SqlType.text(), NULLABLE)
]
)
#Erstellen Sie praktisch eine Tabelle basierend auf der Tabellendefinition(Das Standardschema ist öffentlich)
connection.catalog.create_table(table_def)
#Führen Sie den Befehl COPY wie PostgreSQL aus
record_count = connection.execute_command(
command=f'''
COPY {table_def.table_name} from {escape_string_literal(src_path)} with (format csv, delimiter ',', header)
'''
)
print(f"The number of rows in table {table_def.table_name} is {record_count}.")
Ausführungsergebnis
The number of rows in table "train" is 891.
Wenn Sie sich nach der Verarbeitung "data / train.hyper" in Tableau ansehen ... Ich konnte bestätigen, dass die Hyperdatei erfolgreich erstellt wurde!
Ich war beeindruckt, dass sich das Tableau SDK bisher weiterentwickelt hat. Wenn Sie hauptsächlich Tableau Desktop oder Tableau Server verwenden, haben Sie selten die Möglichkeit, Hyperdateien zu verwenden. Wenn Sie jedoch aus irgendeinem Grund Berichte mit Tableau Reader usw. verteilen müssen, ist dies sehr nützlich. Wird besorgt.
https://help.tableau.com/current/api/hyper_api/en-us/docs/hyper_api_insert_csv.html
Recommended Posts