Exemplo n.º 1
0
    def testPerformBinning(self):
        cubeSetName = "test-" + str(uuid.uuid4())
        csvFilePath = cubeSetName + ".csv"
        try:
            shutil.copyfile("cubify/tests/testdata.csv", cubeSetName + ".csv")
        except Exception:
            shutil.copyfile("./testdata.csv", cubeSetName + ".csv")
        binningFileName = "cubify/tests/test_binnings.json"
        if os.path.isfile(binningFileName) == False:
            binningFileName = "./test_binnings.json"
        with open(binningFileName) as binnings_file:
            binnings = json.load(binnings_file)

        cs = CubeSetService("testdb")
        cubeSet = cs.createCubeSet("testOwner", cubeSetName, csvFilePath, binnings, None)

        # Change the binning
        for binning in binnings:
            if binning["binningName"] == "QtyBinning":
                bins = []
                bins.append({"label": "0-3", "min": 0, "max": 3})
                bins.append({"label": "3+", "min": 4, "max": 99999999})
                binning["bins"] = bins

        cs.performBinning(cubeSet, binnings)

        binnedCubeRows = cs.getBinnedCubeRows(cubeSet)
        dimkeys = []
        for binnedCubeRow in binnedCubeRows:
            dimkeys.append(binnedCubeRow["dimensionKey"])
        dimkeys.sort()

        self.assertTrue(
            dimkeys[0]
            == "#CustomerId:C1#PriceBin:0-5#ProductId:P1#QtyBin:0-3#Region:West#State:CA#Year:Year2014#Date:2014-10-11"
        )
        self.assertTrue(
            dimkeys[1]
            == "#CustomerId:C1#PriceBin:0-5#ProductId:P1#QtyBin:0-3#Region:West#State:CA#Year:Year2015#Date:2015-10-11"
        )
        self.assertTrue(
            dimkeys[2]
            == "#CustomerId:C1#PriceBin:10+#ProductId:P1#QtyBin:0-3#Region:West#State:CA#Year:Year2014#Date:2014-10-10"
        )
        self.assertTrue(
            dimkeys[3]
            == "#CustomerId:C1#PriceBin:10+#ProductId:P1#QtyBin:0-3#Region:West#State:CA#Year:Year2015#Date:2015-10-10"
        )
        self.assertTrue(
            dimkeys[4]
            == "#CustomerId:C1#PriceBin:10+#ProductId:P2#QtyBin:0-3#Region:West#State:CA#Year:Year2014#Date:2014-10-11"
        )
        self.assertTrue(
            dimkeys[5]
            == "#CustomerId:C1#PriceBin:10+#ProductId:P2#QtyBin:0-3#Region:West#State:CA#Year:Year2015#Date:2015-10-11"
        )
        self.assertTrue(
            dimkeys[6]
            == "#CustomerId:C2#PriceBin:0-5#ProductId:P1#QtyBin:0-3#Region:NorthEast#State:NY#Year:Year2014#Date:2014-10-11"
        )
        self.assertTrue(
            dimkeys[7]
            == "#CustomerId:C2#PriceBin:0-5#ProductId:P1#QtyBin:0-3#Region:NorthEast#State:NY#Year:Year2015#Date:2015-10-11"
        )
        self.assertTrue(
            dimkeys[8]
            == "#CustomerId:C2#PriceBin:10+#ProductId:P1#QtyBin:0-3#Region:NorthEast#State:NY#Year:Year2014#Date:2014-10-10"
        )
        self.assertTrue(
            dimkeys[9]
            == "#CustomerId:C2#PriceBin:10+#ProductId:P1#QtyBin:0-3#Region:NorthEast#State:NY#Year:Year2015#Date:2015-10-10"
        )
        self.assertTrue(
            dimkeys[10]
            == "#CustomerId:C2#PriceBin:5-10#ProductId:P2#QtyBin:3+#Region:NorthEast#State:NY#Year:Year2014#Date:2014-10-10"
        )
        self.assertTrue(
            dimkeys[11]
            == "#CustomerId:C2#PriceBin:5-10#ProductId:P2#QtyBin:3+#Region:NorthEast#State:NY#Year:Year2015#Date:2015-10-10"
        )
        self.assertTrue(
            dimkeys[12]
            == "#CustomerId:C3#PriceBin:10+#ProductId:P1#QtyBin:3+#Region:NorthEast#State:MA#Year:Year2014#Date:2014-10-11"
        )
        self.assertTrue(
            dimkeys[13]
            == "#CustomerId:C3#PriceBin:10+#ProductId:P1#QtyBin:3+#Region:NorthEast#State:MA#Year:Year2015#Date:2015-10-11"
        )

        os.remove(cubeSetName + ".csv")