AbsaOSS / AbsaOSS/cobrix

How can I load these multi-segment data from ASCII files?

Đang mở
#137 9 bình luận 0 reaction 0 người được giao Xem trên GitHub
question
Ngôn ngữ chính
Scala
Star
170
Fork
96
Merge trung bình
57 phút
Pull request đã merge (30 ngày)
2

Mô tả

Hello,

Thank you for your work on this project, it is of great help for me.

So far, I have been able to successfully load ASCII single segment files, but failed with multi-segment ones.

Here is a simplified example of the kind of data I am trying to load into a DataFrame:

Copybook:
```
01 COMPANY-DETAILS.
05 SEGMENT-ID PIC 9(1).
05 STATIC-DETAILS.
10 NAME PIC X(2).

05 CONTACTS REDEFINES STATIC-DETAILS.
10 PERSON PIC X(3).
```

Data:
```
1BB
2CCC
```

Code:
```scala
val copybook =
""" 01 COMPANY-DETAILS.
| 05 SEGMENT-ID PIC 9(1).
| 05 STATIC-DETAILS.
| 10 NAME PIC X(2).
|
| 05 CONTACTS REDEFINES STATIC-DETAILS.
| 10 PERSON PIC X(3).
""".stripMargin

val df = spark.read
.format("cobol")
.option("copybook_contents", copybook)
.option("is_record_sequence", "true")
.option("schema_retention_policy", "collapse_root")
.option("encoding", "ascii")
.load("data_ascii/mini.txt")
```

Output:
```
+----------+--------------+--------+
|SEGMENT_ID|STATIC_DETAILS|CONTACTS|
+----------+--------------+--------+
| null| [2C]| [2CC]|
+----------+--------------+--------+
```
I can see 2 problems in my output:
* null value
* only one row : the 2 records seems to be read as if they were one (in my tests with my real data containing many records, I always end up with only one row in the dataframe)

After thoroughly reading your (very nice) README, I have tried to modify the copybook, data and several options, but I still fail to load my data correctly.

Since I am new to Cobol formats, I suspect either my use of Cobrix options to be incorrect, or my data format (ASCII, no record header in data) to be incompatible with Cobrix.

Can you see what is wrong here?

Thanks!

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.