Github user mattyb149 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/2003#discussion_r127120413
  
    --- Diff: 
nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/csv/CSVRecordSetWriter.java
 ---
    @@ -48,6 +54,7 @@
         @Override
         protected List<PropertyDescriptor> getSupportedPropertyDescriptors() {
             final List<PropertyDescriptor> properties = new 
ArrayList<>(super.getSupportedPropertyDescriptors());
    +        properties.add(CSVUtils.EXPLICIT_COLUMNS);
    --- End diff --
    
    Sorry this is the wrong spot to leave the comment but since 
@CapabilityDescription (line 40/46) wasn't part of the diff, I couldn't leave 
the comment there. Setting Explicit Columns can affect the first line written, 
so the CapabilityDescription text should be updated to include that.
    
    In addition, explicitly setting the output columns is subject to the same 
rules as if you had an output Avro schema; namely, the output field/column 
names have to match the input names or else there will be empty columns/fields 
in the output. In the general case this is covered by processor or 
reader/writer doc, but since this is CSV-specific I think we should make this 
clear. On one hand, there is the interesting feature that columns can be 
re-arranged by specifying the input fields in a different order in the explicit 
output columns; but on the other hand, if the user expects to use the writer to 
rename the fields (because the names are positional), that won't work.
    
    In general, I'd like this extra flexibility/power to not be too confusing 
for the user, or its usefulness will be overshadowed by its complexity. For 
example, you can use the Explicit Columns in the CSVReader to rename the 
columns, and in the CSVRecordSetWriter to reorder the columns, but the inverse 
is not true. These could remain undocumented/unsupported features, and/or we'd 
need very clear documentation explaining their use.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to