Exemplo n.º 1
0
    def testExportAggCubesCsv(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)
        aggFileName = "cubify/tests/test_agg.json"
        if os.path.isfile(aggFileName) == False:
            aggFileName = "./test_agg.json"
        with open(aggFileName) as agg_file:
            aggs = json.load(agg_file)

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

        cs.exportAggCubesToCsv(cubeSet, ".")

        print cubeSetName + "_binned_agg1.csv"

        with open(cubeSetName + "_agg_" + cubeSetName + "_binned_agg1.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            fieldNames = reader.fieldnames
            self.assertTrue(fieldNames == ["S:ProductId", "S:Region", "N:AveragePrice", "N:AverageQty", "N:Count"])
            rowNum = 0
            for row in reader:
                rowNum += 1
            self.assertTrue(rowNum == 4)

        with open(cubeSetName + "_agg_" + cubeSetName + "_binned_agg2.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            fieldNames = reader.fieldnames
            self.assertTrue(fieldNames == ["S:ProductId", "N:Count", "N:TotalQty"])
            rowNum = 0
            for row in reader:
                rowNum += 1
            self.assertTrue(rowNum == 2)

        with open(cubeSetName + "_agg_" + cubeSetName + "_binned_agg3.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            fieldNames = reader.fieldnames
            self.assertTrue(fieldNames == ["S:ProductId", "N:AverageRevenue", "N:Count"])
            rowNum = 0
            for row in reader:
                rowNum += 1
            self.assertTrue(rowNum == 2)

        os.remove(cubeSetName + ".csv")
        os.remove(cubeSetName + "_agg_" + cubeSetName + "_binned_agg1.csv")
        os.remove(cubeSetName + "_agg_" + cubeSetName + "_binned_agg2.csv")
        os.remove(cubeSetName + "_agg_" + cubeSetName + "_binned_agg3.csv")