thanks for the reply. i understand why, but it still seem a bit strange
coming from years and years of sql. so if i want to avoid the extra
load from fetching way more than i needed would i be best off split this
CF into two?
thanks,
deno
On 2/13/2012 10:41 AM, aaron morton wrote:
My understanding is you expected to see
111:ticks
222:ticks
333:ticks
444:ticks
But instead you are getting
111:ticks
111:quote
222:ticks
222:quote
333:ticks
333:quote
444:ticks
If that is the case things are working as expected.
The slice operation gets a column range. So if you start at 111:ticks
and end at 444:ticks you are asking for all the column in between.
it is not possible to filter at each level of a composite column.
Hope that helps.
-----------------
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com
On 10/02/2012, at 10:58 PM, Deno Vichas wrote:
all,
could somebody clue me to why the below code doesn't work. my schema is;
create column family StockHistory
with comparator = 'CompositeType(LongType,UTF8Type)'
and default_validation_class = 'UTF8Type'
and key_validation_class = 'UTF8Type';
the time part works but i'm getting other column with the second
half not equaling the value set. it's like it's ignoring the string
part of the composite.
Composite start = new Composite();
Composite end = new Composite();
start.addComponent(0,
startDate.toDateTimeAtStartOfDay().toDate().getTime(),
Composite.ComponentEquality.EQUAL);
end.addComponent(0,
endDate.toDateMidnight().toDate().getTime(),
Composite.ComponentEquality.EQUAL);
start.addComponent(1, "ticks",
Composite.ComponentEquality.EQUAL);
end.addComponent(1, "ticks",
Composite.ComponentEquality.GREATER_THAN_EQUAL);
SliceQuery<String, Composite, String> sliceQuery =
HFactory.createSliceQuery(_keyspace,
_stringSerializer, new CompositeSerializer(), _stringSerializer);
sliceQuery.setColumnFamily(CF_STOCK_HISTORY).setKey(symbol);
sliceQuery.setRange(start, end, false, 10);
QueryResult<ColumnSlice<Composite, String>> result =
sliceQuery.execute();
ColumnSlice<Composite, String> cs = result.get();
SortedSet<String> historyJSON = new TreeSet<String>();
for ( HColumn<Composite, String> col: cs.getColumns() ) {
System.out.println(col.getName().get(0, _longSerializer)
+"|"+ col.getName().get(1,StringSerializer.get()));
}
this outputs the following;
1327035600000|ticks
1327046400000|quote
1327294800000|ticks
1327305600000|quote
1327381200000|ticks
1327392000000|quote
1327467600000|ticks
1327478400000|quote
1327554000000|ticks
1327564800000|quote
thanks,
deno