public Object getValueConformToDataType(int index) { MetricFieldSpec metricFieldSpec = _metricFieldSpecs.get(index); if (metricFieldSpec.getDataType() == FieldSpec.DataType.STRING) { assert metricFieldSpec.getDerivedMetricType() == DerivedMetricType.HLL; return HllUtil.convertHllToString((HyperLogLog) _values[index]); } else { return _values[index]; } } }
break; case STRING: assert metricFieldSpec.getDerivedMetricType() == DerivedMetricType.HLL; buffer.put(HllUtil.toBytes((HyperLogLog) _values[i])); break;
public void aggregate(MetricBuffer buffer) { int numValues = _values.length; for (int i = 0; i < numValues; i++) { MetricFieldSpec metricFieldSpec = _metricFieldSpecs.get(i); switch (metricFieldSpec.getDataType()) { case INT: _values[i] = (Integer) _values[i] + (Integer) buffer._values[i]; break; case LONG: _values[i] = (Long) _values[i] + (Long) buffer._values[i]; break; case FLOAT: _values[i] = (Float) _values[i] + (Float) buffer._values[i]; break; case DOUBLE: _values[i] = (Double) _values[i] + (Double) buffer._values[i]; break; case STRING: assert metricFieldSpec.getDerivedMetricType() == DerivedMetricType.HLL; try { ((HyperLogLog) _values[i]).addAll((HyperLogLog) buffer._values[i]); } catch (CardinalityMergeException e) { throw new RuntimeException(e); } break; default: throw new IllegalStateException(); } } }
break; case STRING: assert metricFieldSpec.getDerivedMetricType() == DerivedMetricType.HLL; byte[] hllBytes = new byte[metricFieldSpec.getFieldSize()]; buffer.get(hllBytes);
String metricName = _metricNames.get(i); Object metricValue = row.getValue(metricName); if (_metricFieldSpecs.get(i).getDerivedMetricType() == MetricFieldSpec.DerivedMetricType.HLL) {
String column = metricFieldSpec.getName(); if (metricFieldSpec.isDerivedMetric()) { assert metricFieldSpec.getDerivedMetricType() == MetricFieldSpec.DerivedMetricType.HLL; functionColumnPairs.add(new AggregationFunctionColumnPair(AggregationFunctionType.FASTHLL, column)); } else {
/** * Test derived {@link MetricFieldSpec}. */ @Test public void testDerivedMetricFieldSpec() throws Exception { MetricFieldSpec derivedMetricField = new MetricFieldSpec("derivedMetric", STRING, 10, MetricFieldSpec.DerivedMetricType.HLL); Assert.assertEquals(derivedMetricField.getFieldSize(), 10); Assert.assertTrue(derivedMetricField.isDerivedMetric()); Assert.assertEquals(derivedMetricField.getDerivedMetricType(), MetricFieldSpec.DerivedMetricType.HLL); Assert.assertEquals(derivedMetricField.getDefaultNullValue(), "null"); // Test serialize deserialize. MetricFieldSpec derivedMetricField2 = JsonUtils.stringToObject(derivedMetricField.toJsonObject().toString(), MetricFieldSpec.class); Assert.assertEquals(derivedMetricField2, derivedMetricField); }
Assert.assertEquals(metricFieldSpec.getDefaultNullValue(), 0); Assert.assertEquals(metricFieldSpec.getFieldSize(), 4); Assert.assertNull(metricFieldSpec.getDerivedMetricType()); Assert.assertEquals(metricFieldSpec.getDefaultNullValue(), 5); Assert.assertEquals(metricFieldSpec.getFieldSize(), 4); Assert.assertNull(metricFieldSpec.getDerivedMetricType()); Assert.assertEquals(metricFieldSpec.getDefaultNullValue(), "null"); Assert.assertEquals(metricFieldSpec.getFieldSize(), 10); Assert.assertNotNull(metricFieldSpec.getDerivedMetricType()); Assert.assertEquals(metricFieldSpec.getDefaultNullValue(), defaultString); Assert.assertEquals(metricFieldSpec.getFieldSize(), 10); Assert.assertNotNull(metricFieldSpec.getDerivedMetricType());