@ProcessElement public void processElement( @Element KV<T, Void> element, PaneInfo pane, OutputReceiver<T> receiver) { if (pane.isFirst()) { // Only output the key if it's the first time it's been seen. receiver.output(element.getKey()); } } }));
@Override public Iterable<T> apply(Iterable<ValueInSingleWindow<T>> input) { List<T> outputs = new ArrayList<>(); for (ValueInSingleWindow<T> value : input) { if (!value.getPane().isFirst() || !value.getPane().isLast()) { throw site.wrap( String.format( "Expected elements to be produced by a trigger that fires at most once, but got " + "a value %s in a pane that is %s.", value, value.getPane().isFirst() ? "not the last pane" : "not the first pane")); } outputs.add(value.getValue()); } return outputs; } }
res.append(iw.start().toString()).append("-").append(iw.end().toString()); boolean isOnlyFiring = pane.isFirst() && pane.isLast(); if (!isOnlyFiring) { if (res.length() > 0) {
@ProcessElement public void processElement(@Element Attribution attribution, @Timestamp Instant timestamp, BoundedWindow window, PaneInfo pane, OutputReceiver<String> output) { StringBuilder builder = new StringBuilder(String.format( "%s: %s %s %-7s", Utils.formatWindow(window), attribution, Utils.formatTime(timestamp), pane.getTiming())); if (pane.getTiming() != PaneInfo.Timing.UNKNOWN) { builder.append(String.format(" index=%d", pane.getIndex())); if (pane.getNonSpeculativeIndex() > -1) builder.append(" onTimeIndex=" + pane.getNonSpeculativeIndex()); if (pane.isFirst()) builder.append(" isFirst"); if (pane.isLast()) builder.append(" isLast"); } output.output(builder.toString()); } }
@ProcessElement public void processElement(@Element KV<String, Integer> kv, @Timestamp Instant timestamp, BoundedWindow window, PaneInfo pane, OutputReceiver<String> output) { StringBuilder builder = new StringBuilder(String.format( "%s: %s:%-2d %s %-7s index=%d", Utils.formatWindow(window), kv.getKey(), kv.getValue(), Utils.formatTime(timestamp), pane.getTiming(), pane.getIndex())); if (pane.getNonSpeculativeIndex() > -1) builder.append(" onTimeIndex=" + pane.getNonSpeculativeIndex()); if (pane.isFirst()) builder.append(" isFirst"); if (pane.isLast()) builder.append(" isLast"); output.output(builder.toString()); } }
@ProcessElement public void processElement(ProcessContext c, BoundedWindow window) throws Exception { String[] values = c.element().getValue().split(",", -1); TableRow row = new TableRow() .set("trigger_type", triggerType) .set("freeway", c.element().getKey()) .set("total_flow", Integer.parseInt(values[0])) .set("number_of_records", Long.parseLong(values[1])) .set("window", window.toString()) .set("isFirst", c.pane().isFirst()) .set("isLast", c.pane().isLast()) .set("timing", c.pane().getTiming().toString()) .set("event_time", c.timestamp().toString()) .set("processing_time", Instant.now().toString()); c.output(row); } }