public void TestSmallerOutOfBounds() { var b = new BucketSize(0.00022M); Assert.Equal(0.0002M, b.SnappedSize); Assert.Equal(0.0001M, b.Smaller(1)?.SnappedSize); Assert.Null(b.Smaller(2)); }
public void TestSmaller() { var b = new BucketSize(80); Assert.Equal(100M, b.SnappedSize); Assert.Equal(20M, b.Smaller(2).SnappedSize); }
internal static decimal[] EstimateBucketResolutions( long numSamples, double minSample, double maxSample, long valuesPerBucketTarget, bool isIntegerColumn) { if (numSamples <= 0) { throw new System.ArgumentException( $"Argument numSamples should always be greater than zero, got {numSamples}."); } var range = maxSample - minSample; if (range <= 0) { return(new decimal[] { 1M }); } var valueDensity = numSamples / (maxSample - minSample); var targetBucketSize = valuesPerBucketTarget / valueDensity; var bucketSizeEstimate = new BucketSize(isIntegerColumn ? System.Math.Max(targetBucketSize, 5) : targetBucketSize); return(new decimal[] { bucketSizeEstimate.Smaller(steps: 2).SnappedSize, bucketSizeEstimate.SnappedSize, bucketSizeEstimate.Larger(steps: 2).SnappedSize, }); }