comments
Example for count, timestamps, limiting results by partition.
Example for count, timestamps, limiting results by partition.
SOURCE '0_create_keyspace.cql'; // START-drop DROP TABLE IF EXISTS cycling.comments; //END-drop /* Support fast retrieval of first record on each partition and show upserts of timestamp type fields */ // START-comments-table CREATE TABLE IF NOT EXISTS cycling.comments ( record_id timeuuid, id uuid, commenter text, comment text, created_at timestamp, PRIMARY KEY (id, created_at) ) WITH CLUSTERING ORDER BY (created_at DESC); // END-comments-table DROP INDEX IF EXISTS cycling.fn_sparse; // START-fn_sparse CREATE CUSTOM INDEX IF NOT EXISTS fn_sparse ON cycling.comments (created_at) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = { 'mode': 'SPARSE' }; // END-fn_sparse // START-insertall INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-02-14 12:43:20-0800', 'Raining too hard should have postponed', 'Alex'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-02-14 12:43:20.234-0800', 'Raining too hard should have postponed', 'Alex'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-03-21 13:11:09.999-0800', 'Second rest stop was out of water', 'Alex'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-04-01 06:33:02.16-0800', 'LATE RIDERS SHOULD NOT DELAY THE START', 'Alex'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), c7fceba0-c141-4207-9494-a29f9809de6f, totimestamp(now()), 'The gift certificate for winning was the best', 'Amy'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), c7fceba0-c141-4207-9494-a29f9809de6f, '2017-02-17 12:43:20.234+0400', 'Glad you ran the race in the rain', 'Amy'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), c7fceba0-c141-4207-9494-a29f9809de6f, '2017-03-22 5:16:59.001+0400', 'Great snacks at all reststops', 'Amy'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), c7fceba0-c141-4207-9494-a29f9809de6f, '2017-04-01 17:43:08.030+0400', 'Last climb was a killer', 'Amy'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 8566eb59-07df-43b1-a21b-666a3c08c08a, totimestamp(now()), 'Fastest womens time ever way to go amy!', 'Maryanne'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 8566eb59-07df-43b1-a21b-666a3c08c08a, '2017-02-13 11:20:17.020-0600', 'Great race on a crappy day', 'Maryanne'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 8566eb59-07df-43b1-a21b-666a3c08c08a, '2017-03-20 15:45:10.101-0600', 'Saggers really rocked it', 'Maryanne'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 8566eb59-07df-43b1-a21b-666a3c08c08a, '2017-04-14 05:16:52.009-0600', 'Not bad for a flatlander', 'Maryanne'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), fb372533-eb95-4bb4-8685-6ef61e994caa, totimestamp(now()), 'Great course', 'Michael'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), fb372533-eb95-4bb4-8685-6ef61e994caa, '2017-02-15 18:22:11-0800', 'Some entries complain a lot', 'Michael'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), fb372533-eb95-4bb4-8685-6ef61e994caa, '2017-03-16 19:43:01.030-0800', 'Getting read for the race', 'Michael'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), fb372533-eb95-4bb4-8685-6ef61e994caa, '2017-03-22 1:19:44.060-0800', 'Awesome race glad you held it anyway', 'Michael'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), fb372533-eb95-4bb4-8685-6ef61e994caa, '2017-04-07 11:21:14.001-0800', 'Thanks for waiting for me!', 'Michael'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 9011d3be-d35c-4a8d-83f7-a3c543789ee7, totimestamp(now()), 'Can''t wait for the next race', 'Katarzyna'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 9011d3be-d35c-4a8d-83f7-a3c543789ee7, '2017-01-01 11:20:17.020-0600', 'Gearing up for the seaon', 'Katarzyna'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 5b6962dd-3f90-4c93-8f61-eabfa4a803e2, totimestamp(now()), 'Thanks for all your hard work', 'Marianne'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 220844bf-4860-49d6-9a4b-6b5d3a79cbfb, totimestamp(now()), 'A for effort!', 'Paolo'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), c4b65263-fe58-4846-83e8-f0e1c13d518f, totimestamp(now()), 'Closing ceremony was a little lame', 'Rossella'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 38ab64b6-26cc-4de9-ab28-c257cf011659, totimestamp(now()), 'Next time guys!', 'Marcia'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 38ab64b6-26cc-4de9-ab28-c257cf011659, '2017-02-11 22:09:56+0800', 'First race was amazing, can''t wait for more', 'Marcia'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47, totimestamp(now()), 'So many great races thanks y''all', 'Steven'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47, '2017-02-02 09:49:00.02+0800', 'Best of luck everybody I can''t make it', 'Steven'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47, '2017-04-05 12:01:00.003', 'Bike damaged in transit bummer', 'Steven'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), e7cd5752-bc0d-4157-a80f-7523add8dbcd, totimestamp(now()), 'Go team, you rocked it', 'Anna'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 6d5f1663-89c0-45fc-8cfd-60a373b01622, totimestamp(now()), 'Next year the tour of california!', 'Melissa'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 95addc4c-459e-4ed7-b4b5-472f19a67995, totimestamp(now()), 'Next year for sure!', 'Vera'); INSERT INTO cycling.comments (record_id, id, created_at, comment, commenter) VALUES (now(), 95addc4c-459e-4ed7-b4b5-472f19a67995, '2017-02-13 11:40:16.123-0600', 'I can do without the rain@@@@', 'Vera'); // END-insertall CAPTURE 'select_from_comments.results'; // START-select SELECT * FROM cycling.comments WHERE created_at < '2017-02-13 11:40:16.123'; // END-select CAPTURE OFF; // START-alt ALTER TABLE cycling.comments WITH compression = { 'sstable_compression' : 'DeflateCompressor', 'chunk_length_kb' : 64 }; // END-alt // START-cache ALTER TABLE cycling.comments WITH caching = { 'keys' : 'NONE', 'rows_per_partition' : 10 }; // END-cache // START-nocompact ALTER TABLE cycling.comments WITH COMPACTION = { 'class' : 'SizeTieredCompactionStrategy', 'enabled' : 'false' }; // END-nocompact // START-compaction ALTER TABLE cycling.comments WITH COMPACTION = { 'class' : 'SizeTieredCompactionStrategy', 'enabled' : 'true' }; // END-compaction
Queries against the comment tables
Filter data on the time UUID
field.
// SOURCE 'comments-table.cql'
// START-removedata
TRUNCATE cycling.comments;
// END-removedata
// START-insert_timeuuid
INSERT INTO cycling.comments (
record_id,
id,
created_at
) VALUES (
now(),
e7ae5cf3-d358-4d99-b900-85902fda9bb0,
'2017-02-14 12:43:20-0800'
);
// END-insert_timeuuid
// START-s_insert_timeuuid
SELECT record_id
FROM cycling.comments
WHERE id = e7ae5cf3-d358-4d99-b900-85902fda9bb0
AND created_at = '2017-02-14 12:43:20-0800';
// END-s_insert_timeuuid
/* START-rinsert_timeuuid
record_id
--------------------------------------
e81aee50-4670-11e7-9fd7-81d397057b18
(1 rows)
END-rinsert_timeuuid */
Return the most recent
records:
// SOURCE 'comments-table.cql'; CAPTURE 'select_mostrecent_from_comments.results'; // START-select-mostrecent SELECT toDate(created_at) AS Date, comment, commenter FROM cycling.comments PER PARTITION LIMIT 1; // END-select-mostrecent CAPTURE OFF;
date | comment | commenter
------------+-----------------------------------------------+-----------
2017-04-01 | LATE RIDERS SHOULD NOT DELAY THE START | Alex
2019-11-05 | The gift certificate for winning was the best | Amy
2019-11-05 | Fastest womens time ever way to go amy! | Maryanne
2019-11-05 | Great course | Michael
2019-11-05 | Can't wait for the next race | Katarzyna
2019-11-05 | Thanks for all your hard work | Marianne
2019-11-05 | A for effort! | Paolo
2019-11-05 | Closing ceremony was a little lame | Rossella
2019-11-05 | Next time guys! | Marcia
2019-11-05 | So many great races thanks y'all | Steven
2019-11-05 | Go team, you rocked it | Anna
2019-11-05 | Next year the tour of california! | Melissa
2019-11-05 | Next year for sure! | Vera
(13 rows)
Date and time
queries:
// SOURCE 'comments-table.cql' // START-removedata TRUNCATE cycling.comments; // END-removedata /* CURRENT DATE */ // START-now_date INSERT INTO cycling.comments ( id, created_at ) VALUES ( e7ae5cf3-d358-4d99-b900-85902fda9bb0, toTimeStamp(toDate(now())) ); // END-now_date // START-snow_date SELECT created_at FROM cycling.comments WHERE id = e7ae5cf3-d358-4d99-b900-85902fda9bb0 LIMIT 1; // END-snow_date /* START-rnow_date created_at --------------------------------- 2017-06-01 00:00:00.000000+0000 (1 rows) END-rnow_date */ /* CURRENT TIMESTAMP */ // START-now_timestamp INSERT INTO cycling.comments ( id, created_at ) VALUES ( e7ae5cf3-d358-4d99-b900-85902fda9bb0, toTimeStamp(now()) ); // END-now_timestamp // START-snow_timestamp SELECT created_at FROM cycling.comments WHERE id = e7ae5cf3-d358-4d99-b900-85902fda9bb0 LIMIT 1; // END-snow_timestamp /* START-rnow_timestamp created_at --------------------------------- 2017-06-01 03:28:41.526000+0000 (1 rows) END-rnow_timestamp */ /* DATE without time or zone */ // START-string_date_no_tz INSERT INTO cycling.comments ( id, created_at ) VALUES ( e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-04-01' ); // END-string_date_no_tz // START-sstring_date_no_tz SELECT created_at FROM cycling.comments WHERE id = e7ae5cf3-d358-4d99-b900-85902fda9bb0 AND created_at = '2017-04-01'; // END-sstring_date_no_tz /* START-rstring_date_no_tz created_at --------------------------------- 2017-04-01 00:00:00.000000+0000 (1 rows) END-rstring_date_no_tz */ /* DATE WITH TIMEZONE */ // START-string_date_tz INSERT INTO cycling.comments ( id, created_at ) VALUES ( e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-04-01+0000' ); // END-string_date_tz // START-sstring_date_tz SELECT created_at FROM cycling.comments WHERE id = e7ae5cf3-d358-4d99-b900-85902fda9bb0 AND created_at = '2017-04-01+0000'; // END-sstring_datetz /* START-rstring_date_tz created_at --------------------------------- 2017-04-01 00:00:00.000000+0000 (1 rows) END-rstring-date_tz */ /* FULL TIMESTAMP */ // START-string_ts INSERT INTO cycling.comments ( id, created_at ) VALUES ( e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-04-01T11:21:59.001+0000' ); // END-string_ts // START-sstring_ts SELECT created_at FROM cycling.comments WHERE id = e7ae5cf3-d358-4d99-b900-85902fda9bb0 AND created_at = '2017-04-01T11:21:59.001-0800'; // END-sstring_ts /* START-rstring_ts created_at --------------------------------- 2017-04-01 11:21:59.001000-0800 END-rstring_ts */