luocooong commented on a change in pull request #2211:
URL: https://github.com/apache/drill/pull/2211#discussion_r624658770
##########
File path: contrib/format-excel/pom.xml
##########
@@ -67,7 +67,7 @@
<dependency>
<groupId>com.github.pjfanning</groupId>
<artifactId>excel-streaming-reader</artifactId>
- <version>3.0.3</version>
+ <version>3.0.4</version>
Review comment:
It‘s always good to use the latest version. Is possible to record it on
the `Description` of PR and `Message` of Commits?
##########
File path:
contrib/format-excel/src/main/java/org/apache/drill/exec/store/excel/ExcelBatchReader.java
##########
@@ -566,6 +598,34 @@ private void writeMetadata() {
metadataColumnWriters.get(index).setTimestamp(Instant.ofEpochMilli(timeValue.getTime()));
}
}
+
+ // Write the sheet names. Since this is the only list field
+ int listIndex = IMPLICIT_STRING_COLUMN.values().length +
IMPLICIT_TIMESTAMP_COLUMN.values().length;
+ String sheetColumnName = IMPLICIT_LIST_COLUMN.SHEETS.fieldName;
+ List<String> sheetNames = listMetadata.get(sheetColumnName);
+
+ if (sheetNameWriter == null) {
+ int sheetColumnIndex =
rowWriter.tupleSchema().index(IMPLICIT_LIST_COLUMN.SHEETS.getFieldName());
+ if (sheetColumnIndex == -1) {
+ ColumnMetadata colSchema = MetadataUtils.newScalar(sheetColumnName,
MinorType.VARCHAR, DataMode.REPEATED);
+ colSchema.setBooleanProperty(ColumnMetadata.EXCLUDE_FROM_WILDCARD,
true);
+ listIndex = rowWriter.addColumn(colSchema);
+ }
+ sheetNameWriter = rowWriter.column(listIndex).array().scalar();
+ }
+
+ for (String sheetName : sheetNames) {
+ sheetNameWriter.setString(sheetName);
+ }
+ }
+
+ private List<String> getSheetNames() {
+ List<String> sheets = new ArrayList<>();
+ int sheetCount = streamingWorkbook.getNumberOfSheets();
+ for (int i = 0; i < sheetCount; i++) {
+ sheets.add(streamingWorkbook.getSheetName(i));
Review comment:
Is it worked fine if the `getSheetName()`is a blank?
##########
File path:
contrib/format-excel/src/main/java/org/apache/drill/exec/store/excel/ExcelBatchReader.java
##########
@@ -566,6 +598,34 @@ private void writeMetadata() {
metadataColumnWriters.get(index).setTimestamp(Instant.ofEpochMilli(timeValue.getTime()));
}
}
+
+ // Write the sheet names. Since this is the only list field
+ int listIndex = IMPLICIT_STRING_COLUMN.values().length +
IMPLICIT_TIMESTAMP_COLUMN.values().length;
+ String sheetColumnName = IMPLICIT_LIST_COLUMN.SHEETS.fieldName;
+ List<String> sheetNames = listMetadata.get(sheetColumnName);
+
+ if (sheetNameWriter == null) {
+ int sheetColumnIndex =
rowWriter.tupleSchema().index(IMPLICIT_LIST_COLUMN.SHEETS.getFieldName());
+ if (sheetColumnIndex == -1) {
+ ColumnMetadata colSchema = MetadataUtils.newScalar(sheetColumnName,
MinorType.VARCHAR, DataMode.REPEATED);
+ colSchema.setBooleanProperty(ColumnMetadata.EXCLUDE_FROM_WILDCARD,
true);
Review comment:
Great feature. Does this function also apply to other format plugins
(`EXCLUDE_FROM_WILDCARD ` set to true)?
##########
File path:
contrib/format-excel/src/main/java/org/apache/drill/exec/store/excel/ExcelBatchReader.java
##########
@@ -116,6 +117,23 @@ public String getFieldName() {
}
}
+ private enum IMPLICIT_LIST_COLUMN {
+ /**
+ * A list of the available sheets in the file.
+ */
+ SHEETS("_sheets");
+
+ private final String fieldName;
+
+ IMPLICIT_LIST_COLUMN(String fieldName) {
+ this.fieldName = fieldName;
+ }
+
+ public String getFieldName() {
Review comment:
It can simply declare to `String getFieldName()`. the code of above is
same to this.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]