private static String convertHistogram(byte[] buffer, ColumnStatisticsData._Fields field) {
    if (buffer == null || buffer.length == 0) {
      return "";
    }
    final KllFloatsSketch kll = KllFloatsSketch.heapify(Memory.wrap(buffer));
    // to keep the visualization compact, we print only the quartiles (Q1, Q2 and Q3),
    // as min and max are displayed as separate statistics already
    final float[] quantiles = kll.getQuantiles(new double[]{ 0.25, 0.5, 0.75 },  QuantileSearchCriteria.EXCLUSIVE);

    Function<Float, Object> converter;

    switch(field) {
      case DATE_STATS:
        converter = f -> Date.valueOf(Timestamp.ofEpochSecond(f.longValue(), 0, getZoneIdFromConf()).toString());
        break;
      case DECIMAL_STATS:
        converter = HiveDecimal::create;
        break;
      case DOUBLE_STATS:
        converter = f -> f;
        break;
      case TIMESTAMP_STATS:
        converter = f -> Timestamp.ofEpochSecond(f.longValue(), 0, getZoneIdFromConf());
        break;
      case LONG_STATS:
        converter = Float::longValue;
        break;
      default:
        return "";
    }

    return kll.isEmpty() ? "" : "Q1: " + converter.apply(quantiles[0]) + ", Q2: "
        + converter.apply(quantiles[1]) + ", Q3: " + converter.apply(quantiles[2]);
  }
Creates a String from the properties in this format:
   'property_name1'='property_value1',
   'property_name2'='property_value2',
   ...

Properties are listed in alphabetical order.

@param properties The properties to list.
@param exclude Property names to exclude.
ql/src/java/org/apache/hadoop/hive/ql/ddl/ShowUtils.java