Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-17774

[Python] write csv decimal cast error

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 8.0.0
    • 11.0.0
    • C++

    Description

      Hi, when try to write table with any field in `Decimal128` type, arrow raises with this message:

      In [136]: ds.write_dataset(table, "data", format="csv")
      ---------------------------------------------------------------------------
      ArrowNotImplementedError                  Traceback (most recent call last)
      Cell In [136], line 1
      ----> 1 ds.write_dataset(table, "data", format="csv")
      
      File c:\users\documents\projects\.venv\lib\site-packages\pyarrow\dataset.py:930, in write_dataset(data, base_dir, basename_template, format, partitioning, partitioning_flavor, schema, filesystem, file_options, use_threads, max_partitions, max_open_files, max_rows_per_file, min_rows_per_group, max_rows_per_group, file_visitor, existing_data_behavior, create_dir)
          927         raise ValueError("Cannot specify a schema when writing a Scanner")
          928     scanner = data
      --> 930 _filesystemdataset_write(
          931     scanner, base_dir, basename_template, filesystem, partitioning,
          932     file_options, max_partitions, file_visitor, existing_data_behavior,
          933     max_open_files, max_rows_per_file,
          934     min_rows_per_group, max_rows_per_group, create_dir
          935 )
      
      File c:\users\documents\projects\.venv\lib\site-packages\pyarrow\_dataset.pyx:2737, in pyarrow._dataset._filesystemdataset_write()
      
      File c:\users\documents\projects\.venv\lib\site-packages\pyarrow\error.pxi:121, in pyarrow.lib.check_status()
      
      ArrowNotImplementedError: Unsupported cast from decimal128(21, 15) to utf8 using function cast_string

      my data is:

      In [137]: table
      Out[137]: 
      pyarrow.Table
      col1: int64
      col2: double
      col3: decimal128(21, 15)
      col4: string
      ----
      col1: [[1,2,3,0]]
      col2: [[2.7,0,3.24,3]]
      col3: [[-304236.460000000000000,0.E-15,0.E-15,0.E-15]]
      col4: [["primera","segunda","tercera","cuarta"]]

       

      Thanks in advance.

      Attachments

        Issue Links

          Activity

            People

              milesgranger Miles Granger
              alex_marco Alejandro Marco Ramos
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 50m
                  50m