#python #tableau-api #tabpy
#python #tableau-api #tabpy
Вопрос:
Я использую Tableau Prep со скриптом Python, но когда я выполняю скрипт Python, в потоке вывода появляется ошибка «функция prep_int() не определена«. prep_int() Я использовал в скрипте Python для функции get_output_schema.
Код Python:
import pandas as pd
import requests
import json
df = pd.read_csv("E:/dummy.csv")
port = "8080"
target_columns = ["id"]
# target_columns = df['id']
source_columns = list(set(df.columns) - {"target"})
# print(target_columns)
target_json = json.loads(df[target_columns].to_json(orient="records"))
source_json = json.loads(df[source_columns].to_json(orient="records"))
# print(source_json)
payload = {"source": {"data": source_json}, "target": {"data": target_json}}
# print(payload)
# Run a single or mini-batch prediction
headers = {"content-type": "application/json", "accept": "application/json"}
r = requests.post(
"http://14.141.154.146:9871/invocations", data=json.dumps(payload), headers=headers
)
# print(r.text)
def filldata():
df = pd.DataFrame()
ID(int)
# fill df up with data
# for example
# name (string)
# time (datetime)
# number (int)
return df
def get_output_schema(self):
return pd.DataFrame({"ID": prep_int()})
- Экран подготовки таблицы с сообщением об ошибке:
Комментарии:
1. Пожалуйста, поделитесь некоторым сокращенным кодом, чтобы мы могли видеть, что там происходит.
2. Добавлено еще несколько деталей.
3. Ну
prep_int()
, в вашем коде нигде нет определения функции. Где находится телоprep_int
?4. Я перехожу по ссылке документации Tableau Prep( help.tableau.com/current/prep/en-us/prep_scripts_TabPy.htm ), пожалуйста, изучите это и, пожалуйста, помогите мне, что добавить в мой код.
Ответ №1:
Вы почти на месте!
Просмотр документации https://help.tableau.com/current/prep/en-us/prep_scripts_TabPy.htm
Вы должны сопоставить внутренние компоненты вашего возвращаемого фрейма данных pandas и вашего def get_output_schema() .
Вы нигде не возвращаете фрейм данных, и get_output_schema также не соответствует этому фрейму данных, поскольку он не существует.
итак, вам понадобится функция
def filldata():
df=pd.DataFrame()
# fill df up with data
# for example
# name (string)
# time (datetime)
# number (int)
return df
и вам понадобится соответствующая функция
def get_output_schema():
return pd.DataFrame({
'name' : prep_string(),
'time' : prep_datetime(),
'number' : prep_int()
})
затем перейдите к tableau, чтобы указать на скрипт и функцию, которую нужно вызвать для получения данных.
Комментарии:
1. Все еще получаю сообщение об ошибке «prep_int() не определен». добавление обновленного скрипта. Пожалуйста, взгляните.
2. Вам нужно поместить данные, которые вы хотите передать, обратно в DataFrame df в функции filldata() . У меня недостаточно, чтобы продолжить этот вопрос, чтобы сделать это за вас. Вы просто вводите ID(int). вам нужно указать что-то вроде df[‘ID’] = *, где ID — это имя столбца, а * — данные (типа int в ряду, который соответствует данным). *, конечно, является заполнителем для вашего кода.