dataiku / dataiku/dss-plugin-api-connect

Issue with bigint columns containing null in recipe's input dataset

Open
#86 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
4
Forks
4
Avg merge
3d 21h
Merged PRs (30d)
1

Description

So some testing.

  1. As a dataset tested about 1 million rows against a well known API system performance is comparable.
  2. When I tried to use this in the Recipe form I got a different error. May not be related to the changes you just made. The following anallysis was written up by Claude AI.

Title: Recipe fails on a SQL-backed input when an unused column is a nullable integer

Plugin: API Connect 1.4.3 (failing) and 1.4.2 (working) — recipe.py line is identical in both, so this is not version-related
DSS: 14.7.3 local (failing), Dataiku Cloud (working)
Data Store: PostgreSQL local (failing), SPARK Parquet cloud (working.)

What happens

The recipe reads its full input with DSS schema types enforced:

input_parameters_dataframe = input_parameters_dataset.get_dataframe(infer_with_pandas=False)

pandas int64 cannot hold NA, so any int-typed column with empty values raises before
the first HTTP request — including columns the recipe never reads.
process_dataframe() only touches self.column_to_parameter_dict.

Why it looks intermittent

The same project, same recipe config, same data shape, on two backends:

Input backend Type of the unused timestamp column Result
S3 / Parquet via Spark string (inferred) Runs
PostgreSQL bigint, nullable ValueError

The recipe has one parameter column, id (string). The column that breaks the read is
a nullable Unix timestamp that is not a parameter column.

Traceback

File "<string>", line 56, in <module>
File ".../dataiku/core/dataset.py", line 766, in get_dataframe
    results = pd.read_table(dku_output, ...)
...
ValueError: Integer column has NA values in column 8

Steps to reproduce

  1. Create a PostgreSQL-backed dataset with a nullable bigint column.
  2. Add a string column to use as the API parameter, e.g. id.
  3. Build an API Connect recipe on it, selecting only id as the parameter column.
  4. Run.

Current work around I changed the type of the input column to string. With that type change in the input. I seem to be able to process data successfully.

Originally posted by @tom-aspireleaders in #84

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in recipe.py, then trace process_dataframe() and the input_parameters_dataset.get_dataframe(infer_with_pandas=False) call. Reproduce with a PostgreSQL-backed dataset containing an unused nullable bigint column and an id parameter; done means the recipe reads and processes the input without failing before the first HTTP request.

Written by the indexing model from the issue text.

Assessment

Tech stack
pandas, postgresql, python
Domain
api, data, databases
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
64/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.