/** * @brief Get the column information of this table. * @param name The URI or the name of the ddf. * @return The column information. * @throws DDFException */ private SqlResult describeTable(String name) throws DDFException { DDF ddf = this.getManager().getDDFByName(name); int colSize = ddf.getNumColumns(); List<String> ret = new ArrayList<String>(); for (int colIdx = 0; colIdx < colSize; ++colIdx) { Schema.Column col = ddf.getColumn(ddf.getColumnName(colIdx)); ret.add(col.getName().concat("\t").concat(col.getType().toString() .toLowerCase())); } List<Column> columnList = new ArrayList<Column>(); columnList.add(new Column("column_name", Schema.ColumnType.STRING)); columnList.add(new Column("value_type", Schema.ColumnType.STRING)); Schema schema = new Schema("table_info", columnList); return new SqlResult(schema, ret); }
@Test public void testTransformNativeRserve() throws DDFException { DDF newddf = ddf.Transform.transformNativeRserve("newcol = deptime / arrtime"); System.out.println("name " + ddf.getName()); System.out.println("newname " + newddf.getName()); List<String> res = ddf.VIEWS.head(10); //Assert.assertFalse(ddf.getName().equals(newddf.getName())); Assert.assertNotNull(newddf); Assert.assertEquals("newcol", newddf.getColumnName(8)); Assert.assertEquals(10, res.size()); }
@Ignore public void testTransformMapReduceNative() throws DDFException { // aggregate sum of month group by year String mapFuncDef = "function(part) { keyval(key=part$year, val=part$month) }"; String reduceFuncDef = "function(key, vv) { keyval.row(key=key, val=sum(vv)) }"; DDF newddf = ddf.Transform.transformMapReduceNative(mapFuncDef, reduceFuncDef); System.out.println("name " + ddf.getName()); System.out.println("newname " + newddf.getName()); Assert.assertNotNull(newddf); Assert.assertTrue(newddf.getColumnName(0).equals("key")); Assert.assertTrue(newddf.getColumnName(1).equals("val")); Assert.assertTrue(newddf.getSchemaHandler().getColumns().get(0).getType() == ColumnType.STRING); Assert.assertTrue(newddf.getSchemaHandler().getColumns().get(1).getType() == ColumnType.INT); }
Assert.assertEquals("dist", ddf.getColumnName(8)); Assert.assertEquals(9, ddf.VIEWS.head(1).get(0).split("\\t").length); Assert.assertEquals(31, ddf.getNumRows()); Assert.assertEquals(5, ddf.getNumColumns()); Assert.assertEquals("speed", ddf.getColumnName(4)); ddf.setMutable(false); Assert.assertEquals(31, ddf3.getNumRows()); Assert.assertEquals(6, ddf3.getNumColumns()); Assert.assertEquals("speed", ddf3.getColumnName(5)); Assert.assertEquals(6, ddf3.getSummary().length);
@Test public void testReservedFactor() throws DDFException { ddf.setAsFactor("year"); ddf.setAsFactor("month"); Assert.assertTrue(ddf.getSchema() != null); System.out.println(">>>>> column class = " + ddf.getColumn("year").getColumnClass()); System.out.println(">>>>> column class = " + ddf.getColumn("month").getColumnClass()); Assert.assertTrue(ddf.getColumn("year").getColumnClass() == Schema.ColumnClass.FACTOR); Assert.assertTrue(ddf.getColumn("month").getColumnClass() == Schema.ColumnClass.FACTOR); ddf.setMutable(true); ddf = ddf.Transform.transformUDF("test123= round(distance/2, 2)"); Assert.assertEquals(31, ddf.getNumRows()); Assert.assertEquals(9, ddf.getNumColumns()); Assert.assertEquals("test123", ddf.getColumnName(8)); Assert.assertEquals(9, ddf.VIEWS.head(1).get(0).split("\\t").length); System.out.println(">>>>> column class = " + ddf.getColumn("year").getColumnClass()); System.out.println(">>>>> column class = " + ddf.getColumn("month").getColumnClass()); Assert.assertTrue(ddf.getColumn("year").getColumnClass() == Schema.ColumnClass.FACTOR); Assert.assertTrue(ddf.getColumn("month").getColumnClass() == Schema.ColumnClass.FACTOR); Assert.assertTrue(ddf.getColumn("year").getOptionalFactor().getLevels().size() > 0); Assert.assertTrue(ddf.getColumn("month").getOptionalFactor().getLevels().size() > 0); System.out.println(">>>>>>>>>>>>> " + ddf.getSchema().getColumns()); }