All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.query.querystruct.selectors.QueryFunctionHelper Maven / Gradle / Ivy

The newest version!
package prerna.query.querystruct.selectors;

public class QueryFunctionHelper {

	public static final String MIN = "Min";
	public static final String MAX = "Max";
	public static final String MEAN = "Mean";
	public static final String UNIQUE_MEAN = "UniqueMean";
	public static final String AVERAGE_1 = "Average";
	public static final String UNIQUE_AVERAGE_1 = "UniqueAverage";
	public static final String AVERAGE_2 = "Avg";
	public static final String UNIQUE_AVERAGE_2 = "UniqueAvg";
	public static final String MEDIAN = "Median";
	public static final String SUM = "Sum";
	public static final String UNIQUE_SUM = "UniqueSum";
	public static final String STDEV_1 = "StandardDeviation";
	public static final String STDEV_2 = "stdev";
	public static final String COUNT = "Count";
	public static final String UNIQUE_COUNT = "UniqueCount";
	public static final String CONCAT = "Concat";
	public static final String GROUP_CONCAT = "GroupConcat";
	public static final String UNIQUE_GROUP_CONCAT = "UniqueGroupConcat";
	public static final String LOWER = "Lower";
	public static final String COALESCE = "Coalesce";
	public static final String REGEXP_LIKE = "RegexLike";
	public static final String SUBSTRING = "Substring";
	public static final String DATE_FORMAT = "DateFormat";
	public static final String CAST = "CAST";
	
	// Date functions
	public static final String DATE_ADD = "DateAdd";
	public static final String MONTH_NAME = "MonthName";
	public static final String DAY_NAME = "DayName";
	public static final String QUARTER = "Quarter";
	public static final String WEEK = "Week";
	public static final String YEAR = "Year";
	
	private QueryFunctionHelper() {
		
	}
	
	/**
	 * DUE TO THE LARGE VARIANCE IN SQL 
	 * THIS IS PUSHED TO THE {{@link prerna.util.sql.SQLQueryUtil}}
	 * AND IS USED BY METHOD {{@link prerna.util.sql.SQLQueryUtil#getSqlFunctionSyntax()}}
	 * 
	 * INDIVIDUAL QUERY UTIL IMPLEMENTATIONS CAN OVERRIDE THE SUBMETHODS FOR THEIR VERSION
	 * OF THE QUERY FUNCTION
	 * 
	 */
	
//	/**
//	 * Convert the function name to ansi-sql syntax
//	 * @param inputFunction
//	 * @return
//	 */
//	public static String convertFunctionToSqlSyntax(String inputFunction) {
//		if(inputFunction.equalsIgnoreCase(MIN)) {
//			inputFunction = "MIN";
//		} else if(inputFunction.equalsIgnoreCase(MAX)) {
//			inputFunction = "MAX";
//		} else if(inputFunction.equalsIgnoreCase(MEAN) || inputFunction.equalsIgnoreCase(AVERAGE_1) || inputFunction.equalsIgnoreCase(AVERAGE_2) 
//				|| inputFunction.equalsIgnoreCase(UNIQUE_MEAN) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_1) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_2)) {
//			inputFunction = "AVG";
//		} else if(inputFunction.equalsIgnoreCase(MEDIAN)) {
//			inputFunction = "MEDIAN";
//		} else if(inputFunction.equalsIgnoreCase(SUM) || inputFunction.equalsIgnoreCase(UNIQUE_SUM)) {
//			inputFunction = "SUM";
//		} else if(inputFunction.equalsIgnoreCase(STDEV_1) || inputFunction.equalsIgnoreCase(STDEV_2)) {
//			inputFunction = "STDDEV_SAMP";
//		} else if(inputFunction.equalsIgnoreCase(COUNT)) {
//			inputFunction = "COUNT";
//		} else if(inputFunction.equalsIgnoreCase(UNIQUE_COUNT)) {
//			inputFunction = "COUNT";
//		} else if(inputFunction.equalsIgnoreCase(CONCAT)) {
//			inputFunction = "CONCAT";
//		} else if(inputFunction.equalsIgnoreCase(GROUP_CONCAT)) {
//			inputFunction = "GROUP_CONCAT";
//		} else if(inputFunction.equalsIgnoreCase(UNIQUE_GROUP_CONCAT)) {
//			inputFunction = "GROUP_CONCAT";
//		} else if(inputFunction.equalsIgnoreCase(LOWER)) {
//			inputFunction = "LOWER";
//		} else if(inputFunction.equalsIgnoreCase(COALESCE)) {
//			inputFunction = "COALESCE";
//		}
//		
//		return inputFunction;
//	}
	
	/**
	 * Convert the function name to r data.table syntax
	 * @param inputFunction
	 * @return
	 */
	public static String convertFunctionToRSyntax(String inputFunction) {
		if(inputFunction.equalsIgnoreCase(MIN)) {
			inputFunction = "min";
		} else if(inputFunction.equalsIgnoreCase(MAX)) {
			inputFunction = "max";
		} else if(inputFunction.equalsIgnoreCase(MEAN) || inputFunction.equalsIgnoreCase(AVERAGE_1) || inputFunction.equalsIgnoreCase(AVERAGE_2)
				|| inputFunction.equalsIgnoreCase(UNIQUE_MEAN) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_1) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_2)) {
			inputFunction = "mean";
		} else if(inputFunction.equalsIgnoreCase(MEDIAN)) {
			inputFunction = "median";
		} else if(inputFunction.equalsIgnoreCase(SUM) || inputFunction.equalsIgnoreCase(UNIQUE_SUM)) {
			inputFunction = "sum";
		} else if(inputFunction.equalsIgnoreCase(STDEV_1) || inputFunction.equalsIgnoreCase(STDEV_2)) {
			inputFunction = "sd";
		} else if(inputFunction.equalsIgnoreCase(COUNT)) {
			inputFunction = "length";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_COUNT)) {
			inputFunction = "uniqueN";
		} else if(inputFunction.equalsIgnoreCase(CONCAT)) {
			inputFunction = "paste";
		} else if(inputFunction.equalsIgnoreCase(GROUP_CONCAT)) {
			inputFunction = "paste";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_GROUP_CONCAT)) {
			inputFunction = "paste";
		} else if(inputFunction.equalsIgnoreCase(LOWER)) {
			inputFunction = "tolower";
		}
		
		return inputFunction;
	}
	
	/**
	 * Convert the function name to r data.table syntax
	 * @param inputFunction
	 * @return
	 */
	public static String convertFunctionToPandasSyntax(String inputFunction) {
		if(inputFunction.equalsIgnoreCase(MIN)) {
			inputFunction = "min";
		} else if(inputFunction.equalsIgnoreCase(MAX)) {
			inputFunction = "max";
		} else if(inputFunction.equalsIgnoreCase(MEAN) || inputFunction.equalsIgnoreCase(AVERAGE_1) || inputFunction.equalsIgnoreCase(AVERAGE_2)
				|| inputFunction.equalsIgnoreCase(UNIQUE_MEAN) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_1) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_2)) {
			inputFunction = "mean";
		} else if(inputFunction.equalsIgnoreCase(MEDIAN)) {
			inputFunction = "median";
		} else if(inputFunction.equalsIgnoreCase(SUM) || inputFunction.equalsIgnoreCase(UNIQUE_SUM)) {
			inputFunction = "sum";
		} else if(inputFunction.equalsIgnoreCase(STDEV_1) || inputFunction.equalsIgnoreCase(STDEV_2)) {
			inputFunction = "std";
		} else if(inputFunction.equalsIgnoreCase(COUNT)) {
			inputFunction = "count";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_COUNT)) {
			inputFunction = "nunique";
		} else if(inputFunction.equalsIgnoreCase(CONCAT)) {
			inputFunction = "sum";
		} else if(inputFunction.equalsIgnoreCase(GROUP_CONCAT)) {
			inputFunction = "count";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_GROUP_CONCAT)) {
			inputFunction = "count";
		} else if(inputFunction.equalsIgnoreCase(LOWER)) {
			inputFunction = "str.lower";
		} else if(inputFunction.equalsIgnoreCase(SUBSTRING)) {
			inputFunction = "str.slice";
		} else if(inputFunction.equalsIgnoreCase(DAY_NAME)) {
			inputFunction = "dt.weekday_name";
		} else if(inputFunction.equalsIgnoreCase(MONTH_NAME)) {
			inputFunction = "dt.month_name()";
		} else if(inputFunction.equalsIgnoreCase(YEAR)) {
			inputFunction = "dt.year";
		} else if(inputFunction.equalsIgnoreCase(QUARTER)) {
			inputFunction = "dt.quarter";
		} else if(inputFunction.equalsIgnoreCase(WEEK)) {
			inputFunction = "dt.week";
		}
		
		return inputFunction;
	}
	

	
	/**
	 * Convert the function name to sparql syntax
	 * @param inputFunction
	 * @return
	 */
	public static String convertFunctionToSparqlSyntax(String inputFunction) {
		if(inputFunction.equalsIgnoreCase(MIN)) {
			inputFunction = "MIN";
		} else if(inputFunction.equalsIgnoreCase(MAX)) {
			inputFunction = "MAX";
		} else if(inputFunction.equalsIgnoreCase(MEAN) || inputFunction.equalsIgnoreCase(AVERAGE_1) || inputFunction.equalsIgnoreCase(AVERAGE_2) 
				|| inputFunction.equalsIgnoreCase(UNIQUE_MEAN) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_1) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_2)) {
			inputFunction = "AVG";
		} else if(inputFunction.equalsIgnoreCase(MEDIAN)) {
			inputFunction = null;
		} else if(inputFunction.equalsIgnoreCase(SUM) || inputFunction.equalsIgnoreCase(UNIQUE_SUM)) {
			inputFunction = "SUM";
		} else if(inputFunction.equalsIgnoreCase(STDEV_1) || inputFunction.equalsIgnoreCase(STDEV_2)) {
			inputFunction = null;
		} else if(inputFunction.equalsIgnoreCase(COUNT)) {
			inputFunction = "COUNT";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_COUNT)) {
			inputFunction = "COUNT";
		} else if(inputFunction.equalsIgnoreCase(CONCAT)) {
			inputFunction = "CONCAT";
		} else if(inputFunction.equalsIgnoreCase(GROUP_CONCAT)) {
			inputFunction = "GROUP_CONCAT";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_GROUP_CONCAT)) {
			inputFunction = "GROUP_CONCAT";
		} else if(inputFunction.equalsIgnoreCase(LOWER)) {
			inputFunction = "LCASE";
		} else if(inputFunction.equalsIgnoreCase(COALESCE)) {
			inputFunction = "COALESCE";
		}
		
		return inputFunction;
	}
	
	/**
	 * Try to predict the function type
	 * Default to number
	 * @param inputFunction
	 * @return
	 */
	public static String determineTypeOfFunction(String inputFunction) {
		if(inputFunction.equalsIgnoreCase(CONCAT) 
				|| inputFunction.equalsIgnoreCase(GROUP_CONCAT) 
				|| inputFunction.equalsIgnoreCase(UNIQUE_GROUP_CONCAT)
				|| inputFunction.equalsIgnoreCase(LOWER)
				|| inputFunction.equalsIgnoreCase(COALESCE)
				|| inputFunction.equalsIgnoreCase(SUBSTRING)
				|| inputFunction.equalsIgnoreCase(MONTH_NAME)
				|| inputFunction.equalsIgnoreCase(DAY_NAME)) {
			return "STRING";
		} else if(inputFunction.equalsIgnoreCase(COUNT) 
				|| inputFunction.equalsIgnoreCase(UNIQUE_COUNT) ) {
			return "INT";
		} else if (inputFunction.equalsIgnoreCase(DATE_FORMAT) || inputFunction.equalsIgnoreCase(DATE_ADD) ) {
			return "DATE";
		}
		
		// default, it is probably a number
		return "NUMBER";
	}
	
	public static String getPrettyName(String inputFunction) {
		if(inputFunction.equalsIgnoreCase(MIN)) {
			inputFunction = "Min";
		} else if(inputFunction.equalsIgnoreCase(MAX)) {
			inputFunction = "Max";
		} else if(inputFunction.equalsIgnoreCase(MEAN) || inputFunction.equalsIgnoreCase(AVERAGE_1) || inputFunction.equalsIgnoreCase(AVERAGE_2)) {
			inputFunction = "Average";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_MEAN) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_1) || inputFunction.equalsIgnoreCase(UNIQUE_AVERAGE_2)) {
			inputFunction = "UniqueAverage";
		} else if(inputFunction.equalsIgnoreCase(MEDIAN)) {
			inputFunction = "Median";
		} else if(inputFunction.equalsIgnoreCase(SUM)) {
			inputFunction = "Sum";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_SUM)) {
			inputFunction = "UniqueSum";
		} else if(inputFunction.equalsIgnoreCase(STDEV_1) || inputFunction.equalsIgnoreCase(STDEV_2)) {
			inputFunction = "StandardDeviation";
		} else if(inputFunction.equalsIgnoreCase(COUNT)) {
			inputFunction = "Count";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_COUNT)) {
			inputFunction = "UniqueCount";
		} else if(inputFunction.equalsIgnoreCase(CONCAT)) {
			inputFunction = "Concat";
		} else if(inputFunction.equalsIgnoreCase(GROUP_CONCAT)) {
			inputFunction = "GroupConcat";
		} else if(inputFunction.equalsIgnoreCase(UNIQUE_GROUP_CONCAT)) {
			inputFunction = "UniqueGroupConcat";
		} else if(inputFunction.equalsIgnoreCase(LOWER)) {
			inputFunction = "Lower";
		} else if(inputFunction.equalsIgnoreCase(COALESCE)) {
			inputFunction = "Coalesce";
		} else if(inputFunction.equalsIgnoreCase(REGEXP_LIKE)) {
			inputFunction = "RegexLike";
		} else if(inputFunction.equalsIgnoreCase(SUBSTRING)) {
			inputFunction = "Substring";
		} else if(inputFunction.equalsIgnoreCase(DATE_FORMAT)) {
			inputFunction = "DateFormat";
		}
		
		return inputFunction;
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy