|
|
|
|
@@ -24,13 +24,15 @@
|
|
|
|
|
String dataset = ElementParameterParser.getValue(node, "__DATASET__");
|
|
|
|
|
String table = ElementParameterParser.getValue(node, "__TABLE__");
|
|
|
|
|
String gsFile = ElementParameterParser.getValue(node, "__GS_FILE__");
|
|
|
|
|
boolean setFieldDelimiter = ElementParameterParser.getBooleanValue(node, "__SET_FIELD_DELIMITER__");
|
|
|
|
|
String fieldDelimiter = ElementParameterParser.getValue(node, "__FIELD_DELIMITER__");
|
|
|
|
|
String actionOnData = ElementParameterParser.getValue(node, "__ACTION_ON_DATA__");
|
|
|
|
|
boolean dieOnError = "true".equals(ElementParameterParser.getValue(node, "__DIE_ON_ERROR__"));
|
|
|
|
|
|
|
|
|
|
boolean dieOnError = ElementParameterParser.getBooleanValue(node, "__DIE_ON_ERROR__");
|
|
|
|
|
boolean createTableIfNotExist = ElementParameterParser.getBooleanValue(node, "__CREATE_TABLE_IF_NOT_EXIST__");
|
|
|
|
|
String gsFileHeader = ElementParameterParser.getValue(node, "__GS_FILE_HEADER__");
|
|
|
|
|
String tokenFile = ElementParameterParser.getValue(node,"__TOKEN_NAME__");
|
|
|
|
|
|
|
|
|
|
boolean isLog4jEnabled = ("true").equals(ElementParameterParser.getValue(node.getProcess(), "__LOG4J_ACTIVATE__"));
|
|
|
|
|
boolean isLog4jEnabled = ElementParameterParser.getBooleanValue(node.getProcess(), "__LOG4J_ACTIVATE__");
|
|
|
|
|
boolean dropTable = ElementParameterParser.getBooleanValue(node, "__DROP__");
|
|
|
|
|
|
|
|
|
|
String passwordFieldName = "";
|
|
|
|
|
|
|
|
|
|
@@ -201,7 +203,7 @@
|
|
|
|
|
} else {
|
|
|
|
|
throw new IllegalArgumentException("authentication mode should be either \"SERVICEACCOUNT\" or \"OAUTH\", but it is " + authMode);
|
|
|
|
|
}
|
|
|
|
|
boolean bulkFileAlreadyExists = "true".equals(ElementParameterParser.getValue(node, "__BULK_FILE_ALREADY_EXIST__"));
|
|
|
|
|
boolean bulkFileAlreadyExists = ElementParameterParser.getBooleanValue(node, "__BULK_FILE_ALREADY_EXIST__");
|
|
|
|
|
String accessKey = ElementParameterParser.getValue(node, "__GS_ACCESS_KEY__");
|
|
|
|
|
String secretKey = ElementParameterParser.getValue(node, "__GS_SECRET_KEY__");
|
|
|
|
|
String localFilename = ElementParameterParser.getValue(node, "__GS_LOCAL_FILE__");
|
|
|
|
|
@@ -234,6 +236,7 @@
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
gsService_<%=cid%>.putObject(<%=bucketName%>, fileObject_<%=cid%>);
|
|
|
|
|
/* ----END-UPLOADING-FILE---- */
|
|
|
|
|
<%
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
@@ -242,7 +245,6 @@
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
/* ----END-UPLOADING-FILE---- */
|
|
|
|
|
|
|
|
|
|
<%
|
|
|
|
|
if (authMode.equals("OAUTH")) {
|
|
|
|
|
@@ -258,95 +260,131 @@
|
|
|
|
|
|
|
|
|
|
com.google.api.services.bigquery.model.JobConfiguration config_<%=cid%> = new com.google.api.services.bigquery.model.JobConfiguration();
|
|
|
|
|
com.google.api.services.bigquery.model.JobConfigurationLoad queryLoad_<%=cid%> = new com.google.api.services.bigquery.model.JobConfigurationLoad();
|
|
|
|
|
com.google.api.services.bigquery.model.TableSchema schema_<%=cid%> = new com.google.api.services.bigquery.model.TableSchema();
|
|
|
|
|
|
|
|
|
|
<%
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
log.info("<%=cid%> - Table field schema:");
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
java.util.List<com.google.api.services.bigquery.model.TableFieldSchema> fields_<%=cid%> = new java.util.ArrayList<com.google.api.services.bigquery.model.TableFieldSchema>();
|
|
|
|
|
<%
|
|
|
|
|
List<IMetadataTable> metadatas = node.getMetadataList();
|
|
|
|
|
if ((metadatas!=null) && (metadatas.size() > 0)) {
|
|
|
|
|
IMetadataTable metadata = metadatas.get(0);
|
|
|
|
|
if (metadata != null) {
|
|
|
|
|
List<IMetadataColumn> columns = metadata.getListColumns();
|
|
|
|
|
int nbColumns = columns.size();
|
|
|
|
|
for (int i = 0; i < nbColumns; i++ ) {
|
|
|
|
|
IMetadataColumn column = columns.get(i);
|
|
|
|
|
String columnName = column.getLabel();
|
|
|
|
|
String typeToGenerate = "string";
|
|
|
|
|
if("id_Float".equals(column.getTalendType()) || "id_Double".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "float";
|
|
|
|
|
}else if("id_Integer".equals(column.getTalendType()) || "id_Long".equals(column.getTalendType()) || "id_Short".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "integer";
|
|
|
|
|
} else if("id_Character".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "string";
|
|
|
|
|
} else if("id_BigDecimal".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "numeric";
|
|
|
|
|
} else if("id_Boolean".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "boolean";
|
|
|
|
|
} else if("id_Date".equals(column.getTalendType())) {
|
|
|
|
|
String pattern = column.getPattern();
|
|
|
|
|
if(pattern.length() == 12 || pattern.isEmpty() || "\"\"".equals(pattern)) {
|
|
|
|
|
typeToGenerate = "date";
|
|
|
|
|
}else if(pattern.length() > 12){
|
|
|
|
|
typeToGenerate = "timestamp";
|
|
|
|
|
}else{
|
|
|
|
|
typeToGenerate = "string";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
<%if (dropTable) {%>
|
|
|
|
|
try {
|
|
|
|
|
bigqueryclient_<%=cid%>.tables().delete(PROJECT_ID_<%=cid%>, <%=dataset%>, <%=table%>).execute();
|
|
|
|
|
} catch (com.google.api.client.googleapis.json.GoogleJsonResponseException e_<%=cid%>) {
|
|
|
|
|
if (e_<%=cid%>.getDetails().getCode() != 404) {
|
|
|
|
|
<%
|
|
|
|
|
if(dieOnError) {
|
|
|
|
|
%>
|
|
|
|
|
throw e_<%=cid%>;
|
|
|
|
|
<%
|
|
|
|
|
} else {
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
log.error("<%=cid%> - "+ e_<%=cid%>.getDetails().getMessage());
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
System.err.println(e_<%=cid%>.getDetails().getMessage());
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
<%
|
|
|
|
|
String modeType = null;
|
|
|
|
|
if (!column.isNullable()) {
|
|
|
|
|
modeType = "REQUIRED";
|
|
|
|
|
} else {
|
|
|
|
|
modeType = "NULLABLE";
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
com.google.api.services.bigquery.model.TableFieldSchema <%=columnName%>_<%=cid%> = new com.google.api.services.bigquery.model.TableFieldSchema();
|
|
|
|
|
<%=columnName%>_<%=cid%>.setName("<%=columnName%>");
|
|
|
|
|
<%=columnName%>_<%=cid%>.setType("<%=typeToGenerate%>");
|
|
|
|
|
<%=columnName%>_<%=cid%>.setMode("<%=modeType%>");
|
|
|
|
|
fields_<%=cid%>.add(<%=columnName%>_<%=cid%>);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
<%}%>
|
|
|
|
|
|
|
|
|
|
<%if (createTableIfNotExist) { %>
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
com.google.api.services.bigquery.model.Table getTable = bigqueryclient_<%=cid%>.tables().get(PROJECT_ID_<%=cid%>, <%=dataset%>, <%=table%>).execute();
|
|
|
|
|
queryLoad_<%=cid%>.setCreateDisposition("CREATE_NEVER");
|
|
|
|
|
} catch (com.google.api.client.googleapis.json.GoogleJsonResponseException e_<%=cid%>){
|
|
|
|
|
if (e_<%=cid%>.getDetails().getCode() == 404) {
|
|
|
|
|
com.google.api.services.bigquery.model.TableSchema schema_<%=cid%> = new com.google.api.services.bigquery.model.TableSchema();
|
|
|
|
|
<%
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
log.debug("<%=cid%> - Field index[<%=i%>] {\"name\":\"<%=columnName%>\",\"type\":\"<%=typeToGenerate%>\",\"mode\":\"<%=modeType%>\"}");
|
|
|
|
|
log.info("<%=cid%> - Table field schema:");
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
java.util.List<com.google.api.services.bigquery.model.TableFieldSchema> fields_<%=cid%> = new java.util.ArrayList<com.google.api.services.bigquery.model.TableFieldSchema>();
|
|
|
|
|
<%
|
|
|
|
|
List<IMetadataTable> metadatas = node.getMetadataList();
|
|
|
|
|
if ((metadatas!=null) && (metadatas.size() > 0)) {
|
|
|
|
|
IMetadataTable metadata = metadatas.get(0);
|
|
|
|
|
if (metadata != null) {
|
|
|
|
|
List<IMetadataColumn> columns = metadata.getListColumns();
|
|
|
|
|
int nbColumns = columns.size();
|
|
|
|
|
for (int i = 0; i < nbColumns; i++ ) {
|
|
|
|
|
IMetadataColumn column = columns.get(i);
|
|
|
|
|
String columnName = column.getLabel();
|
|
|
|
|
String typeToGenerate = "string";
|
|
|
|
|
if("id_Float".equals(column.getTalendType()) || "id_Double".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "float";
|
|
|
|
|
}else if("id_Integer".equals(column.getTalendType()) || "id_Long".equals(column.getTalendType()) || "id_Short".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "integer";
|
|
|
|
|
} else if("id_Character".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "string";
|
|
|
|
|
} else if("id_BigDecimal".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "numeric";
|
|
|
|
|
} else if("id_Boolean".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "boolean";
|
|
|
|
|
} else if("id_Date".equals(column.getTalendType())) {
|
|
|
|
|
String pattern = column.getPattern();
|
|
|
|
|
if(pattern.length() == 12 || pattern.isEmpty() || "\"\"".equals(pattern)) {
|
|
|
|
|
typeToGenerate = "date";
|
|
|
|
|
}else if(pattern.length() > 12){
|
|
|
|
|
typeToGenerate = "timestamp";
|
|
|
|
|
}else{
|
|
|
|
|
typeToGenerate = "string";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
String modeType = (!column.isNullable()) ? "REQUIRED" : "NULLABLE";
|
|
|
|
|
%>
|
|
|
|
|
com.google.api.services.bigquery.model.TableFieldSchema <%=columnName%>_<%=cid%> = new com.google.api.services.bigquery.model.TableFieldSchema();
|
|
|
|
|
<%=columnName%>_<%=cid%>.setName("<%=columnName%>");
|
|
|
|
|
<%=columnName%>_<%=cid%>.setType("<%=typeToGenerate%>");
|
|
|
|
|
<%=columnName%>_<%=cid%>.setMode("<%=modeType%>");
|
|
|
|
|
fields_<%=cid%>.add(<%=columnName%>_<%=cid%>);
|
|
|
|
|
<%
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
log.debug("<%=cid%> - Field index[<%=i%>] {\"name\":\"<%=columnName%>\",\"type\":\"<%=typeToGenerate%>\",\"mode\":\"<%=modeType%>\"}");
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
schema_<%=cid%>.setFields(fields_<%=cid%>);
|
|
|
|
|
queryLoad_<%=cid%>.setSchema(schema_<%=cid%>);
|
|
|
|
|
queryLoad_<%=cid%>.setCreateDisposition("CREATE_IF_NEEDED");
|
|
|
|
|
} else {
|
|
|
|
|
<%
|
|
|
|
|
if(dieOnError) {
|
|
|
|
|
%>
|
|
|
|
|
throw e_<%=cid%>;
|
|
|
|
|
<%
|
|
|
|
|
} else {
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
log.error("<%=cid%> - "+ e_<%=cid%>.getDetails().getMessage());
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
System.err.println(e_<%=cid%>.getDetails().getMessage());
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
schema_<%=cid%>.setFields(fields_<%=cid%>);
|
|
|
|
|
|
|
|
|
|
queryLoad_<%=cid%>.setSchema(schema_<%=cid%>);
|
|
|
|
|
<%
|
|
|
|
|
if("true".equals(ElementParameterParser.getValue(node, "__CREATE_TABLE_IF_NOT_EXIST__"))) {
|
|
|
|
|
%>
|
|
|
|
|
queryLoad_<%=cid%>.setCreateDisposition("CREATE_IF_NEEDED");
|
|
|
|
|
<%
|
|
|
|
|
} else {
|
|
|
|
|
%>
|
|
|
|
|
queryLoad_<%=cid%>.setCreateDisposition("CREATE_NEVER");
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if("true".equals(ElementParameterParser.getValue(node, "__SET_FIELD_DELIMITER__"))) {
|
|
|
|
|
if(setFieldDelimiter) {
|
|
|
|
|
%>
|
|
|
|
|
queryLoad_<%=cid%>.setFieldDelimiter(<%=fieldDelimiter%>);
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
queryLoad_<%=cid%>.setAllowQuotedNewlines(true);
|
|
|
|
|
|
|
|
|
|
queryLoad_<%=cid%>.setWriteDisposition("WRITE_<%=actionOnData%>");
|
|
|
|
|
com.google.api.services.bigquery.model.TableReference destinationTable_<%=cid%> = new com.google.api.services.bigquery.model.TableReference();
|
|
|
|
|
destinationTable_<%=cid%>.setProjectId(PROJECT_ID_<%=cid%>);
|
|
|
|
|
@@ -354,8 +392,8 @@
|
|
|
|
|
destinationTable_<%=cid%>.setTableId(<%=table%>);
|
|
|
|
|
|
|
|
|
|
queryLoad_<%=cid%>.setDestinationTable(destinationTable_<%=cid%>);
|
|
|
|
|
queryLoad_<%=cid%>.setSourceUris(java.util.Arrays.asList(<%=ElementParameterParser.getValue(node, "__GS_FILE__")%>));
|
|
|
|
|
queryLoad_<%=cid%>.setSkipLeadingRows(<%=ElementParameterParser.getValue(node, "__GS_FILE_HEADER__")%>);
|
|
|
|
|
queryLoad_<%=cid%>.setSourceUris(java.util.Arrays.asList(<%=gsFile%>));
|
|
|
|
|
queryLoad_<%=cid%>.setSkipLeadingRows(<%=gsFileHeader%>);
|
|
|
|
|
queryLoad_<%=cid%>.setNullMarker("\\N");
|
|
|
|
|
config_<%=cid%>.setLoad(queryLoad_<%=cid%>);
|
|
|
|
|
|
|
|
|
|
@@ -459,9 +497,11 @@
|
|
|
|
|
%>
|
|
|
|
|
/* ----START-CREATING-JOB (Cloud API)---- */
|
|
|
|
|
com.google.cloud.bigquery.TableId tableId_<%=cid%> = com.google.cloud.bigquery.TableId.of(<%=projectId%>, <%=dataset%>, <%=table%>);
|
|
|
|
|
com.google.cloud.bigquery.Table table_<%=cid%> = bigquery_<%=cid%>.getTable(tableId_<%=cid%>);
|
|
|
|
|
com.google.cloud.bigquery.LoadJobConfiguration.Builder loadJobBuilder_<%=cid%> = com.google.cloud.bigquery.LoadJobConfiguration.newBuilder(tableId_<%=cid%>, <%=gsFile%>);
|
|
|
|
|
if (<%=ElementParameterParser.getBooleanValue(node, "__DROP__")%> && table_<%=cid%> != null) {
|
|
|
|
|
|
|
|
|
|
boolean dropTable_<%=cid%> = <%=dropTable%>;
|
|
|
|
|
|
|
|
|
|
if (dropTable_<%=cid%> && bigquery_<%=cid%>.getTable(tableId_<%=cid%>) != null) {
|
|
|
|
|
boolean deleted = bigquery_<%=cid%>.delete(tableId_<%=cid%>);
|
|
|
|
|
if (deleted) {
|
|
|
|
|
<%
|
|
|
|
|
@@ -475,123 +515,100 @@
|
|
|
|
|
throw new RuntimeException("Unable to delete table " + tableId_<%=cid%>);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (<%=ElementParameterParser.getBooleanValue(node, "__DROP__")%> || <%=ElementParameterParser.getBooleanValue(node, "__CREATE_TABLE_IF_NOT_EXIST__")%>) {
|
|
|
|
|
java.util.List<com.google.cloud.bigquery.Field> fields_<%=cid%> = new java.util.ArrayList<>();
|
|
|
|
|
<%
|
|
|
|
|
List<IMetadataTable> metadatas = node.getMetadataList();
|
|
|
|
|
if ((metadatas!=null) && (metadatas.size() > 0)) {
|
|
|
|
|
IMetadataTable metadata = metadatas.get(0);
|
|
|
|
|
if (metadata != null) {
|
|
|
|
|
List<IMetadataColumn> columns = metadata.getListColumns();
|
|
|
|
|
int nbColumns = columns.size();
|
|
|
|
|
for (int i = 0; i < nbColumns; i++ ) {
|
|
|
|
|
IMetadataColumn column = columns.get(i);
|
|
|
|
|
String columnName = column.getLabel();
|
|
|
|
|
String typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.STRING";
|
|
|
|
|
if("id_String".equals(column.getTalendType()) || "id_Character".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.STRING";
|
|
|
|
|
} else if ("id_Float".equals(column.getTalendType()) || "id_Double".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.FLOAT";
|
|
|
|
|
} else if ("id_Short".equals(column.getTalendType()) || "id_Integer".equals(column.getTalendType()) || "id_Long".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.INTEGER";
|
|
|
|
|
} else if ("id_BigDecimal".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.NUMERIC";
|
|
|
|
|
} else if ("id_Boolean".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.BOOLEAN";
|
|
|
|
|
} else if ("id_Date".equals(column.getTalendType())) {
|
|
|
|
|
String pattern = column.getPattern();
|
|
|
|
|
if(pattern.length() == 12 || pattern.isEmpty() || "\"\"".equals(pattern)) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.DATE";
|
|
|
|
|
}else if(pattern.length() > 12){
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.TIMESTAMP";
|
|
|
|
|
}else{
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.STRING";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String modeType = "NULLABLE";
|
|
|
|
|
if (!column.isNullable()) {
|
|
|
|
|
modeType = "REQUIRED";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
<%if(createTableIfNotExist){%>
|
|
|
|
|
if(bigquery_<%=cid%>.getTable(tableId_<%=cid%>) == null){
|
|
|
|
|
java.util.List<com.google.cloud.bigquery.Field> fields_<%=cid%> = new java.util.ArrayList<>();
|
|
|
|
|
<%
|
|
|
|
|
List<IMetadataTable> metadatas = node.getMetadataList();
|
|
|
|
|
if ((metadatas!=null) && (metadatas.size() > 0)) {
|
|
|
|
|
IMetadataTable metadata = metadatas.get(0);
|
|
|
|
|
if (metadata != null) {
|
|
|
|
|
List<IMetadataColumn> columns = metadata.getListColumns();
|
|
|
|
|
int nbColumns = columns.size();
|
|
|
|
|
for (int i = 0; i < nbColumns; i++ ) {
|
|
|
|
|
IMetadataColumn column = columns.get(i);
|
|
|
|
|
String columnName = column.getLabel();
|
|
|
|
|
String typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.STRING";
|
|
|
|
|
if("id_String".equals(column.getTalendType()) || "id_Character".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.STRING";
|
|
|
|
|
} else if ("id_Float".equals(column.getTalendType()) || "id_Double".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.FLOAT";
|
|
|
|
|
} else if ("id_Short".equals(column.getTalendType()) || "id_Integer".equals(column.getTalendType()) || "id_Long".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.INTEGER";
|
|
|
|
|
} else if ("id_BigDecimal".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.NUMERIC";
|
|
|
|
|
} else if ("id_Boolean".equals(column.getTalendType())) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.BOOLEAN";
|
|
|
|
|
} else if ("id_Date".equals(column.getTalendType())) {
|
|
|
|
|
String pattern = column.getPattern();
|
|
|
|
|
if(pattern.length() == 12 || pattern.isEmpty() || "\"\"".equals(pattern)) {
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.DATE";
|
|
|
|
|
}else if(pattern.length() > 12){
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.TIMESTAMP";
|
|
|
|
|
}else{
|
|
|
|
|
typeToGenerate = "com.google.cloud.bigquery.LegacySQLTypeName.STRING";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
String modeType = (!column.isNullable()) ? "REQUIRED" : "NULLABLE";
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
|
|
com.google.cloud.bigquery.Field field_<%=i%> = com.google.cloud.bigquery.Field.newBuilder("<%=columnName%>", <%=typeToGenerate%>)
|
|
|
|
|
.setMode(com.google.cloud.bigquery.Field.Mode.valueOf("<%=modeType%>"))
|
|
|
|
|
.build();
|
|
|
|
|
fields_<%=cid%>.add(field_<%=i%>);
|
|
|
|
|
<%
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
log.debug("<%=cid%> - Field index[<%=i%>] {\"name\":\"<%=columnName%>\",\"type\":\"<%=typeToGenerate%>\"}");
|
|
|
|
|
<%
|
|
|
|
|
<%
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
log.debug("<%=cid%> - Field index[<%=i%>] {\"name\":\"<%=columnName%>\",\"type\":\"<%=typeToGenerate%>\"}");
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
|
|
com.google.cloud.bigquery.Schema schema_<%=cid%> = com.google.cloud.bigquery.Schema.of(fields_<%=cid%>);
|
|
|
|
|
com.google.cloud.bigquery.TableInfo tableInfo_<%=cid%> = com.google.cloud.bigquery.TableInfo.newBuilder(tableId_<%=cid%>, com.google.cloud.bigquery.StandardTableDefinition.of(schema_<%=cid%>)).build();
|
|
|
|
|
table_<%=cid%> = bigquery_<%=cid%>.create(tableInfo_<%=cid%>);
|
|
|
|
|
loadJobBuilder_<%=cid%>.setSchema(schema_<%=cid%>);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
<%
|
|
|
|
|
if("true".equals(ElementParameterParser.getValue(node, "__CREATE_TABLE_IF_NOT_EXIST__"))) {
|
|
|
|
|
%>
|
|
|
|
|
com.google.cloud.bigquery.Schema schema_<%=cid%> = com.google.cloud.bigquery.Schema.of(fields_<%=cid%>);
|
|
|
|
|
com.google.cloud.bigquery.TableInfo tableInfo_<%=cid%> = com.google.cloud.bigquery.TableInfo.newBuilder(tableId_<%=cid%>, com.google.cloud.bigquery.StandardTableDefinition.of(schema_<%=cid%>)).build();
|
|
|
|
|
com.google.cloud.bigquery.Table table_<%=cid%> = bigquery_<%=cid%>.create(tableInfo_<%=cid%>);
|
|
|
|
|
loadJobBuilder_<%=cid%>.setSchema(schema_<%=cid%>);
|
|
|
|
|
loadJobBuilder_<%=cid%>.setCreateDisposition(com.google.cloud.bigquery.JobInfo.CreateDisposition.CREATE_IF_NEEDED);
|
|
|
|
|
<%
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
%>
|
|
|
|
|
loadJobBuilder_<%=cid%>.setCreateDisposition(com.google.cloud.bigquery.JobInfo.CreateDisposition.CREATE_NEVER);
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
<%} else {%>
|
|
|
|
|
loadJobBuilder_<%=cid%>.setCreateDisposition(com.google.cloud.bigquery.JobInfo.CreateDisposition.CREATE_NEVER);
|
|
|
|
|
<%}%>
|
|
|
|
|
|
|
|
|
|
<%
|
|
|
|
|
if("APPEND".equals(actionOnData)) {
|
|
|
|
|
%>
|
|
|
|
|
loadJobBuilder_<%=cid%>.setWriteDisposition(com.google.cloud.bigquery.JobInfo.WriteDisposition.WRITE_APPEND);
|
|
|
|
|
<%
|
|
|
|
|
} else if("TRUNCATE".equals(actionOnData)) {
|
|
|
|
|
%>
|
|
|
|
|
loadJobBuilder_<%=cid%>.setWriteDisposition(com.google.cloud.bigquery.JobInfo.WriteDisposition.WRITE_TRUNCATE);
|
|
|
|
|
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
%>
|
|
|
|
|
loadJobBuilder_<%=cid%>.setWriteDisposition(com.google.cloud.bigquery.JobInfo.WriteDisposition.WRITE_EMPTY);
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
|
|
loadJobBuilder_<%=cid%>.setDestinationTable(tableId_<%=cid%>);
|
|
|
|
|
com.google.cloud.bigquery.CsvOptions.Builder csvOptions_<%=cid%> = com.google.cloud.bigquery.CsvOptions.newBuilder();
|
|
|
|
|
csvOptions_<%=cid%>.setAllowQuotedNewLines(true);
|
|
|
|
|
loadJobBuilder_<%=cid%>.setWriteDisposition(com.google.cloud.bigquery.JobInfo.WriteDisposition.WRITE_<%=actionOnData%>);
|
|
|
|
|
loadJobBuilder_<%=cid%>.setDestinationTable(tableId_<%=cid%>);
|
|
|
|
|
com.google.cloud.bigquery.CsvOptions.Builder csvOptions_<%=cid%> = com.google.cloud.bigquery.CsvOptions.newBuilder();
|
|
|
|
|
csvOptions_<%=cid%>.setAllowQuotedNewLines(true);
|
|
|
|
|
csvOptions_<%=cid%>.setSkipLeadingRows(<%=gsFileHeader%>);
|
|
|
|
|
|
|
|
|
|
<%if("true".equals(ElementParameterParser.getValue(node, "__SET_FIELD_DELIMITER__"))) {
|
|
|
|
|
%>
|
|
|
|
|
loadJobBuilder_<%=cid%>.setFormatOptions(csvOptions_<%=cid%>.setFieldDelimiter(<%=fieldDelimiter%>).build());
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
<%if(setFieldDelimiter) {
|
|
|
|
|
%>
|
|
|
|
|
loadJobBuilder_<%=cid%>.setFormatOptions(csvOptions_<%=cid%>.setFieldDelimiter(<%=fieldDelimiter%>).build());
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
|
|
loadJobBuilder_<%=cid%>.setNullMarker("\\N");
|
|
|
|
|
com.google.cloud.bigquery.Job job_<%=cid%> = bigquery_<%=cid%>.create(com.google.cloud.bigquery.JobInfo.of(loadJobBuilder_<%=cid%>.build()));
|
|
|
|
|
job_<%=cid%> = job_<%=cid%>.waitFor(com.google.cloud.RetryOption.initialRetryDelay(org.threeten.bp.Duration.ofSeconds(1)), com.google.cloud.RetryOption.totalTimeout(org.threeten.bp.Duration.ofSeconds(30)));
|
|
|
|
|
if (job_<%=cid%> != null && job_<%=cid%>.getStatus().getError() == null) {
|
|
|
|
|
<%
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
log.info("<%=cid%> - Job execution status: " + job_<%=cid%>.getStatus());
|
|
|
|
|
<%
|
|
|
|
|
loadJobBuilder_<%=cid%>.setNullMarker("\\N");
|
|
|
|
|
com.google.cloud.bigquery.Job job_<%=cid%> = bigquery_<%=cid%>.create(com.google.cloud.bigquery.JobInfo.of(loadJobBuilder_<%=cid%>.build()));
|
|
|
|
|
job_<%=cid%> = job_<%=cid%>.waitFor(com.google.cloud.RetryOption.initialRetryDelay(org.threeten.bp.Duration.ofSeconds(1)));
|
|
|
|
|
if (job_<%=cid%> != null && job_<%=cid%>.getStatus().getError() == null) {
|
|
|
|
|
<%
|
|
|
|
|
if(isLog4jEnabled){
|
|
|
|
|
%>
|
|
|
|
|
log.info("<%=cid%> - Job execution status: " + job_<%=cid%>.getStatus());
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
} else {
|
|
|
|
|
List<com.google.cloud.bigquery.BigQueryError> errorList = job_<%=cid%>.getStatus().getExecutionErrors();
|
|
|
|
|
throw new RuntimeException("Job failed: " + errorList.get(errorList.size() - 1));
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
} else {
|
|
|
|
|
List<com.google.cloud.bigquery.BigQueryError> errorList = job_<%=cid%>.getStatus().getExecutionErrors();
|
|
|
|
|
throw new RuntimeException("Job failed: " + errorList.get(errorList.size() - 1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ----END-CREATING-JOB (Cloud API)---- */
|
|
|
|
|
<%
|
|
|
|
|
|