コード例 #1
0
ファイル: BucketSizesTests.cs プロジェクト: diffix/explorer
        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));
        }
コード例 #2
0
        public void TestSmaller()
        {
            var b = new BucketSize(80);

            Assert.Equal(100M, b.SnappedSize);
            Assert.Equal(20M, b.Smaller(2).SnappedSize);
        }
コード例 #3
0
        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,
            });
        }