2

我正在使用带有 Python 脚本的 Tableau Prep,但是当我执行 Python 脚本时,在输出流中出现“未定义 prep_int() 函数”的错误。prep_int() 我在 Python 脚本中使用了 get_output_schema 函数。

蟒蛇代码:

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()})

  • 带有错误消息的 Tableau 准备屏幕:

在此处输入图像描述

4

1 回答 1

1

你快到了!

查看文档https://help.tableau.com/current/prep/en-us/prep_scripts_TabPy.htm

您必须让返回的 pandas DataFrame 的内部结构和您的 def get_output_schema() 匹配。

您没有在任何地方返回 DataFrame,并且 get_output_schema 也不匹配该 DataFrame,因为它不存在。

所以你需要一个函数

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 以指向脚本和要调用以获取数据的函数。

于 2020-11-19T06:16:42.523 回答