Получение prep_int() не определенной ошибки в tableau prep

#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 в ряду, который соответствует данным). *, конечно, является заполнителем для вашего кода.