bwiley1 / pandleau

A quick and easy way to convert a Pandas DataFrame to a Tableau .hyper or .tde extract.
MIT License
60 stars 19 forks source link

Some values are causing fatal errors #12

Open ThibTrip opened 6 years ago

ThibTrip commented 6 years ago

Hello,

In a few days I have already saved about 40 Pandas DataFrames to .hyper and I am very thankful for that. Somehow 3 Pandas DataFrames could not be saved to .hyper (some segments will however sucessfully be saved) and I could not troubleshoot the issue.

I made a sample with 3 lines. As you will see it is the last row that causes a fatal error. I'd be very happy if you could find the issue or provide a workaround.

In the zip file you will find: 1) Exported .hyper file - Test.hyper 2) The data causing the issues - Bug_pandleau_data.sqlite3 3) A notebook to read the data and try the conversion + some attempt at fixing the issue - Troubleshooting_pandleau.ipynb

troubleshoot_pandleau.zip

EDIT:

Thanks in advance,

Cheers,

Thibault

bwiley1 commented 6 years ago

Hi ThibTrip,

Thanks for raising this issue. I will try to take a look and get back to you with more information. Thanks!

Best, Ben

ThibTrip commented 5 years ago

Hi ThibTrip,

Thanks for raising this issue. I will try to take a look and get back to you with more information. Thanks!

Best, Ben

Hi bwiley1 :),

thanks again for your attention and sorry to bother you but I think I found something interesting. This very minimal code produces a bug. And it also does not work with pantab (library similar as pandleau):

import pandas as pd
from pandleau import *
df_test = pd.DataFrame({'Test':['Ø']})
df_tableau = pandleau(df_test)
df_tableau.to_tableau('test.hyper', add_index=False)

import pantab
pantab.frame_to_hyper(df_test, 'test.hyper')

Python version: 3.6.5 (using Anaconda) Pandas version: 0.23.0 Tableausdk: ?? I think I have the latest version since it was last updated on this date: Version: 10.3 | Updated on 10/2/2018 (see https://onlinehelp.tableau.com/current/api/sdk/en-us/help.htm)

I tried troubleshooting using both libraries a while ago without success. I think the problem lies in tableausdk and has to do with ctypes and I think it is during the data type conversion that something breaks.

Please tell me if there is anything I can do to help.

EDIT: True/False also produces errors. Just replace the dict to construct the DataFrame by {'Test':[True]} and it fails (in my case at least).

Best Regards, Thibault