public static JobDataNodeEntry unmarshal(final String text) {
        List<String> segments = Splitter.on(":").splitToList(text);
        String logicTableName = segments.get(0);
        List<DataNode> dataNodes = new LinkedList<>();
        for (String each : Splitter.on(",").omitEmptyStrings().splitToList(segments.get(1))) {
            dataNodes.add(DataNodeUtils.parseWithSchema(each));
        }
        return new JobDataNodeEntry(logicTableName, dataNodes);
    }
@Test
    void assertUnmarshalWithSchema() {
        JobDataNodeEntry actual = JobDataNodeEntry.unmarshal("t_order:ds_0.public.t_order_0,ds_1.test.t_order_1");
        assertThat(actual.getLogicTableName(), is("t_order"));
        assertNotNull(actual.getDataNodes());
        assertThat(actual.getDataNodes().size(), is(2));
        DataNode first = actual.getDataNodes().get(0);
        assertThat(first.getDataSourceName(), is("ds_0"));
        assertThat(first.getSchemaName(), is("public"));
        assertThat(first.getTableName(), is("t_order_0"));
        DataNode second = actual.getDataNodes().get(1);
        assertThat(second.getDataSourceName(), is("ds_1"));
        assertThat(second.getSchemaName(), is("test"));
        assertThat(second.getTableName(), is("t_order_1"));
    }