11 videos 📅 2024-05-20 09:00:00 America/Creston
2:05:45
2024-05-20 09:46:48
2:09
2024-05-20 12:30:32
2:41:18
2024-05-20 12:33:23
1:36:58
2024-05-21 08:00:54
5:24:36
2024-05-21 10:06:11
3:24
2024-05-22 06:36:04
9:25
2024-05-22 08:03:05
40:22
2024-05-22 08:14:12
2:49
2024-05-22 09:47:03
1:48:29
2024-05-22 09:50:24
1:57:28
2024-05-22 12:09:49

Visit the Apache Nifi GROUP 2 course recordings page

                WEBVTT

00:00:03.460 --> 00:00:09.940
All right, looks like, well, Darius, you've got yours, maybe, Tom, it looks like you're

00:00:09.940 --> 00:00:11.420
working on it.

00:00:11.960 --> 00:00:13.360
It's zipped inside of a zip.

00:00:13.400 --> 00:00:20.800
Just keep following that folder down and you'll find the data flows, not the sample

00:00:20.800 --> 00:00:21.440
data flows.

00:00:21.760 --> 00:00:24.880
And you're looking for CSV to JSON in the import.

00:00:24.880 --> 00:00:29.560
So you will have the same exact flow that I have.

00:00:31.600 --> 00:00:33.400
Notice it was not a template.

00:00:34.220 --> 00:00:37.460
It's not an XML document, it was a JSON document.

00:00:38.700 --> 00:00:45.400
This is a quirk that I have already found in the enhancement request when I file a

00:00:45.400 --> 00:00:46.120
while back.

00:00:48.280 --> 00:00:52.700
You can do a processor group and import a JSON data flow.

00:00:52.700 --> 00:00:57.120
But if you create a template, it's an XML data.

00:00:57.300 --> 00:01:03.540
It's an XML document, you know, and then we're going to get into registry and

00:01:03.540 --> 00:01:06.420
versioning control, and that's a JSON document.

00:01:06.540 --> 00:01:13.100
So I feel like there is a common way to do this, and we probably should be

00:01:13.100 --> 00:01:19.440
getting rid of templates as, you know, they are configured and go with the JSON

00:01:19.440 --> 00:01:22.140
documents that we can easily share as well.

00:01:22.140 --> 00:01:26.320
So, you know, it's just one of those nuances within NFA.

00:01:26.580 --> 00:01:30.640
So you should have your data flow, should be on your desktop.

00:01:31.920 --> 00:01:35.320
If you want, you can kind of go through.

00:01:35.620 --> 00:01:38.340
You're going to have to fix your Git file.

00:01:38.520 --> 00:01:41.800
You're going to have to fix your right JSON, of course.

00:01:42.960 --> 00:01:49.060
Everything else, you should be working except the convert record.

00:01:49.740 --> 00:01:56.180
If you go to configure on that, you should be able to go to your CSV reader

00:01:56.180 --> 00:02:04.080
controller service, enable it, enable the other services as well as the JSON

00:02:04.080 --> 00:02:08.460
services, and you should be able to run this data flow one time.

00:02:09.380 --> 00:02:11.320
You know, it's only got one CSV file.

00:02:11.800 --> 00:02:18.160
So if you can, see if you can get that to work, and then we will move

00:02:18.160 --> 00:02:24.020
into the scenario where you would potentially use some of these same

00:02:24.020 --> 00:02:28.340
components that we just went over in your own data flow.

00:02:28.740 --> 00:02:30.560
So we'll give that a few minutes.

00:02:31.080 --> 00:02:33.340
I'm going to look at everybody's screen.

00:02:33.920 --> 00:02:36.920
If you have any issues importing it, let me know, but it sounds like,

00:02:36.920 --> 00:02:38.440
it looks like everybody got it.

00:02:39.980 --> 00:02:44.340
I'm curious to see if everyone is able to go to the convert record and

00:02:44.340 --> 00:02:47.020
follow the arrow, enable the services.

00:02:47.020 --> 00:02:49.860
You can enable in service and components if you want.

00:02:50.060 --> 00:02:54.000
It may error out because you have multiple services that need to be

00:02:54.000 --> 00:02:56.120
enabled, but we'll see.

00:02:56.280 --> 00:02:58.480
Well, Darius, you're already in the controller services.

00:02:58.680 --> 00:02:58.820
Great.

00:02:58.860 --> 00:02:59.860
Get those enabled.

00:03:00.200 --> 00:03:02.340
I've already configured them for you.

00:03:02.420 --> 00:03:05.160
So you don't really need to configure anything.

00:03:05.600 --> 00:03:09.020
You just need to enable it and enable the services.

00:03:10.620 --> 00:03:14.840
So see if you can get that, and if you can, see if you can run that

00:03:14.840 --> 00:03:20.060
document through one time, that CSV document and output a JSON document.

00:03:20.500 --> 00:03:24.140
Again, you're going to have to modify your get file and your put file.

00:03:25.480 --> 00:03:28.380
But, you know, it should be rather quickly.

00:03:29.280 --> 00:03:32.560
And you can, again, this is the Windows file system.

00:03:32.660 --> 00:03:35.800
You can make directories wherever you see fit.

00:03:37.220 --> 00:03:42.020
Also, if you are in the Avro schema controller service, you can expand

00:03:42.020 --> 00:03:45.340
that and look at the actual schema that I used.

00:03:47.040 --> 00:03:52.160
You may want to use that to work with the scenario.

00:03:52.400 --> 00:03:57.580
You may want to model your your schema off of that one, just as a hint.

00:03:59.720 --> 00:04:00.320
Right.

00:04:02.560 --> 00:04:04.560
Did anyone have an issue?

00:04:05.740 --> 00:04:11.240
I know some of you are still working through it, but anyone actually get a

00:04:11.240 --> 00:04:13.440
CSV to flow through and output a JSON?

00:04:13.600 --> 00:04:14.000
I did.

00:04:14.980 --> 00:04:15.680
Oh, awesome.

00:04:18.780 --> 00:04:23.160
Did, did it help to see a little bit more of what a controller service does?

00:04:26.120 --> 00:04:29.260
Yeah, definitely.

00:04:30.940 --> 00:04:32.840
I feel very novice about it.

00:04:32.920 --> 00:04:41.180
If I'm being honest, no, and again, I, the, the leap from creating a

00:04:41.180 --> 00:04:48.940
flow to using controller services is a very farly, I totally get it.

00:04:50.740 --> 00:04:57.180
Um, I, I, I have tried and tried to figure out an easier way to bridge that gap.

00:04:57.600 --> 00:05:02.200
And so, you know, what I like to do is just kind of run through my flow

00:05:02.200 --> 00:05:08.440
and then have you doing the exact same flow as well and, and enable the

00:05:08.440 --> 00:05:11.300
services, kind of get the look and feel of things.

00:05:11.900 --> 00:05:16.980
And then the scenario is very closely related to this flow.

00:05:18.580 --> 00:05:23.280
But once you get done with this, the rest is all easy.

00:05:24.800 --> 00:05:29.720
Unless you're wanting to write Python or write your own processor or something

00:05:29.720 --> 00:05:31.740
like that, and you've got to actually do some coding.

00:05:31.840 --> 00:05:32.560
Quick question.

00:05:32.920 --> 00:05:37.340
How do I, how do I tell if it's going through the flow or not?

00:05:38.980 --> 00:05:40.560
Um, yeah.

00:05:41.180 --> 00:05:47.240
So if you do a run once, instead of just turning it on, I like to just run one

00:05:47.240 --> 00:05:49.400
time, I'm looking at your screen.

00:05:50.100 --> 00:05:57.200
Um, you see, wow, you have 4,538 files in the, um, in your queue.

00:05:57.860 --> 00:05:58.440
You see that?

00:05:58.600 --> 00:05:59.920
I don't think I meant to do that.

00:06:00.400 --> 00:06:01.080
Oh, that's okay.

00:06:01.380 --> 00:06:05.460
I would stop the get file though, because you're about to blow it up.

00:06:05.600 --> 00:06:06.900
So right click and say, stop.

00:06:06.980 --> 00:06:07.540
There you go.

00:06:07.640 --> 00:06:08.080
Refresh.

00:06:09.140 --> 00:06:14.720
Just on your main canvas, just come out right here beside, um, there you go.

00:06:14.740 --> 00:06:17.440
Right there and hit right click and go refresh.

00:06:19.820 --> 00:06:20.380
All right.

00:06:20.380 --> 00:06:22.340
So you only loaded 8,000 files.

00:06:22.340 --> 00:06:23.360
So not bad.

00:06:23.560 --> 00:06:25.720
Uh, 10,000 and it would have turned red.

00:06:25.760 --> 00:06:27.120
If you notice it turned yellow.

00:06:27.320 --> 00:06:30.580
Uh, this is a great teaching opportunity.

00:06:30.980 --> 00:06:34.920
So I think yesterday we had someone load, uh, it was Richard.

00:06:34.980 --> 00:06:36.860
Richard was experimenting or something.

00:06:36.860 --> 00:06:40.080
And he had 10,000 files in the queue.

00:06:40.500 --> 00:06:45.240
So the way not five is configured out of the box is once you queue up 10,000

00:06:45.240 --> 00:06:50.520
files, it will start backing everything up until those 10,000 files are

00:06:50.520 --> 00:06:51.680
processed, but it's good.

00:06:51.760 --> 00:06:53.180
We we've got this.

00:06:53.500 --> 00:06:56.600
Um, so you see the next one is the set schema metadata.

00:06:57.280 --> 00:07:00.860
So that's where we, we, it's an update attribute processor.

00:07:01.220 --> 00:07:06.180
All we're doing is adding an attribute called schema dot name with

00:07:06.180 --> 00:07:08.700
with the value of inventory.

00:07:09.140 --> 00:07:13.180
We're adding that attribute because with a controller service needs

00:07:13.180 --> 00:07:17.620
to know, um, see schema dot name at the bottom inventory.

00:07:18.260 --> 00:07:25.560
So say apply and then right click on set schema metadata and say run once.

00:07:25.660 --> 00:07:29.480
And so refresh, uh, again, somewhere off of the thing.

00:07:30.200 --> 00:07:37.140
And you have that one file now in a success after the set schema metadata.

00:07:38.640 --> 00:07:39.400
See that.

00:07:39.900 --> 00:07:40.400
Okay.

00:07:41.360 --> 00:07:43.760
So let's go to convert record to see Jason.

00:07:44.040 --> 00:07:45.960
Let's go ahead and configure it first.

00:07:47.620 --> 00:07:51.840
And you see, you know, it's coming in as a CSV, right?

00:07:52.180 --> 00:07:54.080
It's going to go out as a Jason.

00:07:54.380 --> 00:07:56.720
So we're using the CSV reader.

00:07:56.720 --> 00:08:01.360
Go ahead and click the arrow and it's going to highlight that record service.

00:08:01.460 --> 00:08:05.340
So you, we are using the CSV record reader service.

00:08:06.100 --> 00:08:09.620
Um, it, you know, if you wanted to, you can go in and look at the

00:08:09.620 --> 00:08:13.420
gear, click the gear, you can look at the, uh, properties.

00:08:14.680 --> 00:08:20.140
Um, basically I'm going to, you know, basically all we're doing it from

00:08:20.140 --> 00:08:26.480
the default is using the schema name property because we can actually,

00:08:26.480 --> 00:08:30.240
there's different ways we can take advantage of the schema access strategy.

00:08:30.840 --> 00:08:33.000
This one is the most simplest.

00:08:33.540 --> 00:08:36.800
And so we're just, you know, updating an attribute, putting

00:08:36.800 --> 00:08:38.420
the inventory name attribute.

00:08:39.160 --> 00:08:42.280
Um, and that's what the schema name is.

00:08:42.480 --> 00:08:45.340
And so we're telling the schema access strategy to

00:08:45.340 --> 00:08:47.420
use the schema name property.

00:08:47.820 --> 00:08:50.680
The schema name property is schema dot name.

00:08:50.900 --> 00:08:55.760
And so this is how we reference that property in NIFA or your

00:08:56.540 --> 00:09:00.020
open curly braces, schema dot name, close curly.

00:09:01.740 --> 00:09:04.100
Um, so I'll say okay on that one.

00:09:04.280 --> 00:09:07.140
And while we're here, let's just look at the other components

00:09:07.140 --> 00:09:09.120
to this so we can just enable it.

00:09:09.240 --> 00:09:12.060
So look at your JSON set record set writer.

00:09:12.240 --> 00:09:17.560
And if you notice it, it's, you know, schema write strategy is

00:09:17.560 --> 00:09:20.140
the set schema dot name attribute.

00:09:20.520 --> 00:09:24.700
So it is the, the schema app, you know, for the CSV reader,

00:09:24.700 --> 00:09:26.340
it was using that schema.

00:09:26.580 --> 00:09:29.760
We're going to use the same schema to write it.

00:09:30.000 --> 00:09:35.380
And so it's schema dot name that just tells it which, um, uh,

00:09:35.380 --> 00:09:37.160
schema to reference.

00:09:37.580 --> 00:09:38.860
So say, okay, okay.

00:09:38.860 --> 00:09:41.000
And let's look at the Avro schema registry.

00:09:41.600 --> 00:09:44.580
The second one, click the gear.

00:09:45.560 --> 00:09:46.000
Okay.

00:09:46.320 --> 00:09:51.220
So the only thing this is, is just a registry of our schemas.

00:09:51.220 --> 00:09:54.620
So we set the schema dot name to inventory.

00:09:55.060 --> 00:10:00.400
So that way, when, when that CSV reader reads that CSV file,

00:10:00.580 --> 00:10:03.420
the, it wants to know what schema to use.

00:10:04.100 --> 00:10:08.160
And when we write it using JSON, it wants to know what

00:10:08.160 --> 00:10:08.960
schema to use.

00:10:09.360 --> 00:10:12.700
So here is the, where you would put that schema in.

00:10:13.060 --> 00:10:16.020
If you click the value, there you go.

00:10:16.340 --> 00:10:18.880
And you see on the right, you can get those, uh, you can

00:10:18.880 --> 00:10:21.840
drag it and expand that box right above.

00:10:22.440 --> 00:10:23.020
Right there.

00:10:23.160 --> 00:10:23.620
There you go.

00:10:23.640 --> 00:10:24.500
Drag it.

00:10:24.720 --> 00:10:26.760
It's a very, very simple schema.

00:10:27.780 --> 00:10:30.040
Um, so it's just, you know, type is record.

00:10:30.180 --> 00:10:33.900
The name is inventory and it has three fields, store,

00:10:33.980 --> 00:10:35.080
item, and quantity.

00:10:35.420 --> 00:10:41.400
And so, um, uh, what it's going to do is, is when it's

00:10:41.400 --> 00:10:44.380
writing that JSON document, it's going to take all of those

00:10:44.380 --> 00:10:48.320
records that are store, put it into that JSON document, all

00:10:48.320 --> 00:10:51.960
the items that are item and quantity, you know, properly

00:10:51.960 --> 00:10:54.780
put those into JSON and format properly.

00:10:55.200 --> 00:10:56.780
So just say, okay, say, okay.

00:10:56.960 --> 00:11:00.700
Again, and then let's look at the Avro reader.

00:11:00.860 --> 00:11:05.200
We have this, you know, we have this just because an

00:11:05.200 --> 00:11:09.600
Avro schema registry for NAFI is very, you know, it's a,

00:11:09.600 --> 00:11:14.340
it's a very easy way to do this, uh, you know, uh, using

00:11:14.340 --> 00:11:15.280
controller services.

00:11:15.780 --> 00:11:21.280
We could have, there is, um, if you click schema access strategy,

00:11:21.860 --> 00:11:23.580
click the use embedded Avro schema.

00:11:23.960 --> 00:11:25.580
Let's see what other options we got.

00:11:25.940 --> 00:11:30.940
See, we can, we can look at, um, the schema dot text name.

00:11:31.100 --> 00:11:33.540
We can use the schema dot name property.

00:11:34.080 --> 00:11:39.540
We can use HWX schema reference attributes, confluent schema.

00:11:39.540 --> 00:11:46.400
Um, um, we can use a confluent schema registry as well.

00:11:46.460 --> 00:11:51.340
If you're familiar with Kafka, uh, confluent has a schema registry.

00:11:51.740 --> 00:11:54.380
We are just using the Avro schema.

00:11:54.600 --> 00:11:56.980
So you can just, you know, click off of that and say,

00:11:57.180 --> 00:11:58.300
okay, just say, okay.

00:11:58.580 --> 00:12:05.400
So, um, you know, if you were doing this where, you know, in, in you

00:12:05.960 --> 00:12:11.940
had hundreds and thousands of flows and you had your own schema, you know,

00:12:12.060 --> 00:12:18.740
Avro schema department that maintained those schemas in a more, you know,

00:12:18.920 --> 00:12:23.060
corporate wide fashion, you, you know, in the use confluent schema registry,

00:12:23.240 --> 00:12:24.880
you can use that registry.

00:12:25.060 --> 00:12:27.340
We're just using the bare mental here.

00:12:27.420 --> 00:12:31.760
So you've got the, uh, everything set, everything is enabled.

00:12:31.760 --> 00:12:38.660
Hit X and just say run once on the convert CSV to JSON.

00:12:43.360 --> 00:12:43.720
Okay.

00:12:43.920 --> 00:12:47.280
And if you refresh, there should be one on the JSON file name.

00:12:48.820 --> 00:12:49.380
Perfect.

00:12:49.820 --> 00:12:55.340
Also, you noticed how when it came in, it was 225 bytes.

00:12:56.000 --> 00:12:59.440
When it came out, it was 745 bytes, right?

00:12:59.440 --> 00:13:05.240
You know, JSON documents are, are much bigger because they have a

00:13:05.240 --> 00:13:07.580
lot more logic involved, right?

00:13:07.660 --> 00:13:11.960
CSV is just common, you know, just values, right?

00:13:12.240 --> 00:13:17.680
You know, with a comma separator or tab separator or whatever, um, you

00:13:17.680 --> 00:13:23.260
know, JSON document has a lot more, uh, depth, a lot more logic.

00:13:23.680 --> 00:13:26.540
And so, you know, of course the file size is going to be bigger.

00:13:26.540 --> 00:13:31.760
So, um, you, so the next one is the set the JSON file name.

00:13:32.060 --> 00:13:36.500
So, you know, if you remember the attribute going in is the

00:13:36.500 --> 00:13:40.780
file name of that file, which is inventory CSV, we want to update

00:13:40.780 --> 00:13:44.740
that file name to inventory CSV dot JSON.

00:13:45.020 --> 00:13:46.440
So run that once.

00:13:47.880 --> 00:13:51.900
And that's where we set it in that update attribute when you went to configure.

00:13:53.060 --> 00:13:53.720
Okay.

00:13:54.320 --> 00:13:57.120
And then refresh again and you are successful.

00:13:57.360 --> 00:14:06.480
So now we have, excuse me, um, now you have a 745 byte file that should be

00:14:06.480 --> 00:14:11.320
named inventory CSV dot JSON ready to be written to the file system.

00:14:11.800 --> 00:14:15.920
So go ahead and run, write JSON file to directory and refresh.

00:14:16.080 --> 00:14:17.040
I don't see a failure.

00:14:17.540 --> 00:14:20.540
So, uh, let's look at the configuration for that right

00:14:20.540 --> 00:14:21.740
JSON file directory.

00:14:23.340 --> 00:14:30.080
Uh, it put it in sample output data, um, cancel.

00:14:31.240 --> 00:14:36.560
I don't know where that, I don't know, um, create a, create a

00:14:36.560 --> 00:14:41.760
folder where you would want to put this right quick, please, sir.

00:14:42.100 --> 00:14:49.260
Um, so go to your, like downloads on the left, uh, there you go.

00:14:49.260 --> 00:14:54.960
Then your downloads create a new folder called, um, you know, data output

00:14:57.000 --> 00:14:58.480
or whatever you want to name it.

00:14:58.480 --> 00:15:03.460
If you go to the far right, you can, uh, right clicking to say new

00:15:03.460 --> 00:15:07.400
folder right there to right click.

00:15:07.720 --> 00:15:08.580
Yeah, right there.

00:15:08.780 --> 00:15:10.000
You should go say new folder.

00:15:10.140 --> 00:15:10.480
Nope.

00:15:10.480 --> 00:15:12.580
Uh, you, you're actually go down below.

00:15:12.740 --> 00:15:16.900
You see that SD delete go right below that.

00:15:17.020 --> 00:15:18.900
Don't click on that, but go right below it.

00:15:18.900 --> 00:15:28.100
Right click and new folder and you can just put like output.

00:15:28.620 --> 00:15:29.960
Now go into that folder.

00:15:30.920 --> 00:15:31.560
Perfect.

00:15:31.680 --> 00:15:32.600
Go into that.

00:15:32.800 --> 00:15:37.420
Now just click your address bar and it will resolve that to a full path.

00:15:37.640 --> 00:15:44.460
Control a Chelsea and then copy a right JSON file to directory.

00:15:47.180 --> 00:15:52.820
Configure it and right click and say, you know, open that first up, there

00:15:52.820 --> 00:15:54.500
you go, paste it in, you can do it.

00:15:54.500 --> 00:15:55.440
Control H O B.

00:15:55.560 --> 00:15:55.980
There you go.

00:15:56.060 --> 00:16:00.420
Say, okay, um, conflict resolution is replaced.

00:16:00.800 --> 00:16:01.360
Perfect.

00:16:01.380 --> 00:16:02.320
You can apply.

00:16:04.640 --> 00:16:05.640
Um, okay.

00:16:06.160 --> 00:16:08.220
So let's clear your queue.

00:16:08.460 --> 00:16:13.000
So let's go ahead and right click on, on right JSON file directory.

00:16:13.120 --> 00:16:14.040
Let's say start.

00:16:14.040 --> 00:16:16.860
And let's start your set JSON file name.

00:16:17.200 --> 00:16:17.620
All right.

00:16:17.660 --> 00:16:19.160
And let's go to convert CSV.

00:16:20.720 --> 00:16:22.920
You noticed how I'm working backwards.

00:16:23.780 --> 00:16:28.600
There's a reason I'm working backwards on the flow is all the

00:16:28.600 --> 00:16:31.260
queues are clear except for at the beginning.

00:16:32.760 --> 00:16:35.540
Um, and so, yeah, now hit refresh.

00:16:35.900 --> 00:16:38.000
Let's see how quick you processed 8,000 files.

00:16:38.040 --> 00:16:38.380
Yeah.

00:16:38.480 --> 00:16:39.720
See how quick that worked.

00:16:40.700 --> 00:16:43.620
You, you, you picked up 8,000 CSV files.

00:16:43.620 --> 00:16:46.780
If you hit right click again, it'll probably be finished.

00:16:47.260 --> 00:16:47.340
Refresh.

00:16:50.520 --> 00:16:50.920
Yep.

00:16:51.420 --> 00:16:56.060
And you got 4,000 files queued for delivery to the file system.

00:16:56.640 --> 00:16:59.620
Right click and say refresh 1000 left for writing.

00:17:00.700 --> 00:17:03.780
So, oh, and you still got one queued up above.

00:17:04.300 --> 00:17:11.260
So you processed, you know, 8,000 files and less than two seconds.

00:17:11.260 --> 00:17:12.200
I think it was.

00:17:12.840 --> 00:17:19.360
And on a, on a old windows machine, right click again, refresh it.

00:17:19.440 --> 00:17:26.100
Also notice how I did not have him turn on the log error message.

00:17:26.600 --> 00:17:34.020
The reason being is I want anything that goes to failure to queue up.

00:17:34.100 --> 00:17:36.480
So I can see why it went to failure.

00:17:36.880 --> 00:17:40.980
I don't want necessarily want to log that error message just yet, because

00:17:40.980 --> 00:17:46.460
if I was, if I turn on log message, it's going to send that file to the log

00:17:46.460 --> 00:17:50.380
message, it's going to write the error and it's going to auto terminate.

00:17:50.440 --> 00:17:51.820
And that file is gone.

00:17:52.460 --> 00:17:58.180
Um, I want it to queue up so I can see what's going on in case of a failure.

00:17:59.020 --> 00:18:00.140
So right click again.

00:18:00.160 --> 00:18:03.300
And that one single file hopefully is done.

00:18:03.740 --> 00:18:06.200
Also notice if you, oh, there it is.

00:18:06.200 --> 00:18:10.680
If you can go to your top right by the search, you see the red little

00:18:10.680 --> 00:18:18.960
box now, um, the, um, the, it's cleaning up, uh, you know, some of the, yeah,

00:18:19.060 --> 00:18:20.420
it takes a minute to clean that up.

00:18:20.800 --> 00:18:24.900
So because, so the instance that we're running on, we're,

00:18:25.220 --> 00:18:26.960
we're using very little settings.

00:18:27.040 --> 00:18:28.900
So we're not using a lot of Ram.

00:18:29.000 --> 00:18:35.280
We're not using a lot of CPU, the content repository and those types of

00:18:35.280 --> 00:18:39.260
things, they are not configured, you know, you know, with the best

00:18:39.260 --> 00:18:40.300
performance right now.

00:18:40.300 --> 00:18:45.400
So it's going to just take a minute for NIFI to kind of clear things up and

00:18:45.400 --> 00:18:48.760
write it out so you can, you can see it's clearing itself.

00:18:48.860 --> 00:18:56.380
If you refresh again, it may, oh, can you stop your get file from directory?

00:18:56.440 --> 00:18:58.900
Cause you just processing it over and over and over again.

00:19:00.640 --> 00:19:06.400
Yeah, you, you, uh, you've outputted almost 11,000 files already in the

00:19:06.400 --> 00:19:10.080
last less than one minute, uh, already over 11,000.

00:19:10.080 --> 00:19:10.620
Okay.

00:19:10.940 --> 00:19:15.320
Let that clear, but that's your queue and, and you should be good to go.

00:19:16.100 --> 00:19:20.500
Uh, since we're here, go ahead and go out to your main NIFI canvas.

00:19:21.980 --> 00:19:23.320
Go back up a level.

00:19:24.060 --> 00:19:24.540
Perfect.

00:19:25.080 --> 00:19:30.460
And you can see now just at a quick glimpse that you have this process

00:19:30.460 --> 00:19:34.620
group, if you refresh, you can see there's 20 files in the queue.

00:19:34.920 --> 00:19:39.100
It read 11.27 Meg, 11.27 Meg.

00:19:39.100 --> 00:19:42.900
It's wrote, uh, 8.84 in the last five minutes.

00:19:43.420 --> 00:19:45.340
Uh, there's no more files in the queue.

00:19:45.580 --> 00:19:49.060
You have two processors stopped four that are running.

00:19:49.500 --> 00:19:52.420
So, you know, we know that the two files that are processors that

00:19:52.420 --> 00:19:54.000
are stopped is the log message.

00:19:54.180 --> 00:19:56.860
We know that you also stopped to get files.

00:19:57.420 --> 00:20:01.060
Um, and so it looks like your queue is clear.

00:20:01.560 --> 00:20:05.400
Uh, if you won't, you can actually right click on that processor group

00:20:05.400 --> 00:20:09.580
and you can stop all, all processors.

00:20:10.160 --> 00:20:14.980
So if you click stop, it's going to stop all your processors.

00:20:15.380 --> 00:20:19.900
If you click start, it's going to turn all of them on again, and you're going

00:20:19.900 --> 00:20:24.700
to be processing another 10,000 files every few minutes, every minute, uh,

00:20:24.700 --> 00:20:27.460
just because it's picking that same file up over and over.

00:20:27.720 --> 00:20:30.700
If you want to click on, right click on that process group again,

00:20:31.480 --> 00:20:33.540
you know, you let's look at this for a minute.

00:20:33.540 --> 00:20:35.760
So you can actually configure that processor group.

00:20:35.980 --> 00:20:36.240
Go ahead.

00:20:36.560 --> 00:20:39.020
And, you know, it's going to take you to the controller

00:20:39.020 --> 00:20:41.600
services that is being used.

00:20:42.560 --> 00:20:43.580
Um, go to general tab.

00:20:43.840 --> 00:20:47.100
They go, uh, you can rename this processor group.

00:20:47.260 --> 00:20:49.940
Uh, you can add parameters to it.

00:20:50.240 --> 00:20:55.680
Um, there's, there's all kinds of, you know, default back pressure

00:20:55.680 --> 00:20:58.180
object threshold is 10,000 files.

00:20:58.600 --> 00:21:02.740
We, you know, we've seen, we saw that yesterday with Richard where he

00:21:02.740 --> 00:21:04.460
had 10,000 files in his queue.

00:21:04.860 --> 00:21:09.280
If he wanted, you know, if he wanted to increase that to 20,000 right

00:21:09.280 --> 00:21:10.980
here is where you can do that.

00:21:11.300 --> 00:21:16.980
Or, you know, I think, uh, he had a 1.1 gig and it was like 400 files.

00:21:17.340 --> 00:21:20.940
So you can actually manipulate those values here.

00:21:21.500 --> 00:21:29.400
Um, you know, just as a side note, uh, if you are backing up with 10,000

00:21:29.400 --> 00:21:35.520
files, um, you know, try to distribute that process over a little bit, uh,

00:21:35.520 --> 00:21:39.580
just because you don't want all the processor that single processor doing

00:21:39.580 --> 00:21:44.260
the work, you know, doing so much work, utilizing resources, but go

00:21:44.260 --> 00:21:47.720
ahead and exit out of that, do an X on that, and then, uh, right

00:21:47.720 --> 00:21:49.500
click again on that processor group.

00:21:50.800 --> 00:21:54.560
And my apologies, I'm just using you as a training example.

00:21:55.160 --> 00:21:58.080
Um, you can, you know, enter the group.

00:21:58.080 --> 00:21:59.460
You can start stop processors.

00:21:59.660 --> 00:22:00.840
You can enable that group.

00:22:00.960 --> 00:22:02.320
You can disable that group.

00:22:02.520 --> 00:22:06.400
You can enable all the controller services, disable all the controller

00:22:06.400 --> 00:22:08.440
services associated with that group.

00:22:08.860 --> 00:22:15.920
You can also go down to download flow definition and say with external

00:22:15.920 --> 00:22:18.700
services, and it's going to say is a JSON document.

00:22:18.900 --> 00:22:22.560
You remember when you imported a JSON document into your

00:22:22.560 --> 00:22:24.320
processor group to create this.

00:22:24.320 --> 00:22:29.400
Now you can export that out and send it to your colleague, uh, you

00:22:29.400 --> 00:22:30.620
know, in those types of things.

00:22:30.900 --> 00:22:35.660
So that's what I was saying earlier is we have templates, but we also

00:22:35.660 --> 00:22:41.160
have a, you know, this way of doing things as well, um, you know, so

00:22:41.160 --> 00:22:45.880
go back to you, right click on your processor group again, and you can

00:22:45.880 --> 00:22:50.380
now center in the view, you can group it, you can copy that group.

00:22:50.600 --> 00:22:51.940
You can empty all the cubes.

00:22:51.940 --> 00:22:57.120
Um, you know, if you have everything stopped, this is a good way to,

00:22:57.120 --> 00:22:59.000
uh, quickly stop everything.

00:22:59.060 --> 00:23:02.860
If you've got your cubes are full, you, you know, some things, some

00:23:02.860 --> 00:23:06.920
things, you know, just running and, and filling the cubes up and you

00:23:06.920 --> 00:23:10.480
don't, you want to diagnose it, but you know, you just don't have

00:23:10.480 --> 00:23:11.720
time to look at it right yet.

00:23:11.720 --> 00:23:14.380
You can stop everything, clear the cubes.

00:23:14.740 --> 00:23:17.800
And when you have time to go back and look at that processor group,

00:23:18.040 --> 00:23:19.040
you're going to delete it.

00:23:19.040 --> 00:23:22.100
You can create a template from that processor group.

00:23:23.320 --> 00:23:28.340
Um, you can view any kind of input, uh, ports, output port connections,

00:23:28.720 --> 00:23:30.200
uh, the status history.

00:23:30.280 --> 00:23:33.520
So, you know, we went, looked at the status just a minute ago

00:23:33.520 --> 00:23:34.460
in the hamburger menu.

00:23:34.780 --> 00:23:37.660
Uh, you can look at that specific processor group.

00:23:38.020 --> 00:23:42.120
Um, so, you know, kind of keep that in mind that a processor

00:23:42.120 --> 00:23:46.680
group is more than just like a collection of flows.

00:23:46.680 --> 00:23:50.320
There's a lot of capabilities, you know, with a process group.

00:23:50.720 --> 00:23:50.780
Okay.

00:23:50.900 --> 00:23:52.660
So there is, I think yours is good to go.

00:23:52.680 --> 00:23:56.680
Can you open your folder to see if you actually outputted any data?

00:23:57.280 --> 00:23:57.300
No.

00:23:59.080 --> 00:24:03.680
So you, you ingested a CSV file and you wrote a JSON document.

00:24:04.720 --> 00:24:04.980
Perfect.

00:24:06.580 --> 00:24:13.240
Anyone else have any issues, uh, with this, um, or creating the

00:24:13.240 --> 00:24:16.400
flow or any questions on this flow?

00:24:17.240 --> 00:24:18.400
Oh, you're no problem.

00:24:18.620 --> 00:24:23.520
And again, my style of training is probably a little different than

00:24:23.520 --> 00:24:26.860
most where I like to just, you know, be very interactive.

00:24:26.980 --> 00:24:28.000
I like a lot of questions.

00:24:28.020 --> 00:24:29.120
I like conversation.

00:24:29.220 --> 00:24:30.880
I like just walking through things.

00:24:31.340 --> 00:24:34.380
So, you know, if you have a question, let me know.

00:24:34.920 --> 00:24:36.320
Um, so yours looks good.

00:24:37.080 --> 00:24:39.560
Uh, Travis, I think you did, uh, you got yours working.

00:24:39.740 --> 00:24:42.820
It looks like the last good, good.

00:24:42.820 --> 00:24:43.000
Yeah.

00:24:43.000 --> 00:24:50.620
Last class, we had a couple of folks who, you know, they try to set this up and

00:24:50.620 --> 00:24:57.280
they missed one crucial step and that was in the CSV reader when it was said

00:24:57.280 --> 00:25:00.920
that you want to treat the header, you know, true or false.

00:25:01.900 --> 00:25:05.440
Um, and everyone, like half the class, couple of folks in the class said

00:25:05.440 --> 00:25:07.900
false and so it was throwing errors.

00:25:08.200 --> 00:25:10.600
And so we had to go through and diagnose it.

00:25:10.980 --> 00:25:12.980
So, you know, just kind of keep that in mind.

00:25:13.520 --> 00:25:16.220
Um, but it looks like everyone got it running.

00:25:16.340 --> 00:25:19.400
I think, uh, everyone got a JSON document out.

00:25:19.880 --> 00:25:21.700
Um, so good deal.

00:25:22.240 --> 00:25:22.920
All right.

00:25:23.360 --> 00:25:27.420
Now we are going to move over to the actual hands-on scenario.

00:25:28.260 --> 00:25:35.300
Please use this flow as reference, copy, paste, do what you need to do

00:25:35.300 --> 00:25:37.380
to, you can steal from it.

00:25:37.600 --> 00:25:41.620
Uh, you know, the best developers in the world steal the, their code

00:25:41.620 --> 00:25:46.020
from, from the interwe, you know, the internet and that's what they work off of.

00:25:46.620 --> 00:25:50.660
Um, you know, so, so do what you must, but let me bring up the scenario.

00:25:51.260 --> 00:26:00.260
And again, the scenario is, is, um, you know, own your, um, it's already,

00:26:00.340 --> 00:26:03.920
it's already there, but if you want to follow along, but I'm

00:26:03.920 --> 00:26:05.080
going to present it as well.

00:26:05.200 --> 00:26:05.780
There we go.

00:26:06.660 --> 00:26:11.280
So you shouldn't have a folder that says not five scenario in your uploads.

00:26:11.620 --> 00:26:18.880
So the scenario is you are a data analyst and a local government agency

00:26:18.880 --> 00:26:22.720
responsible for monitoring environmental conditions across

00:26:22.720 --> 00:26:25.000
various locations in the region.

00:26:25.920 --> 00:26:30.940
Uh, your task is to aggregate, transform and analyze weather data

00:26:30.940 --> 00:26:36.660
collected from multiple local weather stations to provide daily summaries and alerts.

00:26:37.360 --> 00:26:40.080
Now I know I have alerts in here.

00:26:40.080 --> 00:26:47.420
Uh, I know that also, you know, you, you may send this to a system that provides

00:26:47.420 --> 00:26:52.040
an alert and a dashboard and those types of things you may send as an email.

00:26:52.420 --> 00:26:54.420
You may send it, you know, whatever.

00:26:54.800 --> 00:26:59.720
So when it comes to the actual alert, when you're building your flow, I know

00:26:59.720 --> 00:27:03.060
that you're not going to be able to send an alert to my cell phone, for

00:27:03.060 --> 00:27:08.400
instance, however, I will, I, what I'd like to see is, is how you are

00:27:08.400 --> 00:27:13.700
thinking you plan to send this alert, how you got the alert, how that worked

00:27:13.700 --> 00:27:16.460
into your data flow, those types of things.

00:27:17.260 --> 00:27:22.000
Um, so, you know, I'm using it not five to, to automate the collection,

00:27:22.020 --> 00:27:24.040
transformation and reporting of the weather data.

00:27:24.500 --> 00:27:29.360
Um, the source weather data files are generated daily by local weather

00:27:29.360 --> 00:27:32.160
stations and stored in a directory on a local server.

00:27:32.720 --> 00:27:37.260
Uh, each file contains hourly data, including temperature, humidity,

00:27:37.260 --> 00:27:42.060
wind, precipitation, and here I will open one of them.

00:27:43.880 --> 00:27:49.200
So you should have two CSV files in a JSON doc, a file.

00:27:49.800 --> 00:27:56.900
So here's the station ID, ST001, um, the date, uh, which is 56.

00:27:57.860 --> 00:28:00.760
Um, if you want, you can go in and update the date.

00:28:00.800 --> 00:28:04.520
That was the, the last training class, the date that they took this

00:28:04.520 --> 00:28:06.060
and, and so the date state.

00:28:06.060 --> 00:28:13.240
Um, hour zero to 23, temperature, uh, humidity, wind speed, precipitation.

00:28:14.320 --> 00:28:16.080
They're just random values.

00:28:17.100 --> 00:28:25.100
Um, so, so, you know, that is the, uh, the data.

00:28:25.180 --> 00:28:32.860
So your task is to set up an IFI flow to monitor the directory in just new

00:28:32.860 --> 00:28:36.040
files as they appear using the get file processor.

00:28:37.340 --> 00:28:44.460
If I provide suggestions, uh, of the processors to use, uh, you can use

00:28:44.460 --> 00:28:50.320
extract text here, you can use convert record, you know, where,

00:28:50.420 --> 00:28:53.300
wherever you feel most comfortable.

00:28:53.620 --> 00:28:58.980
Again, not if I can be used many ways to build a data flow.

00:28:58.980 --> 00:29:04.560
And, um, the beauty of it is, is, you know, there's a lot of flexibility

00:29:04.560 --> 00:29:05.700
and a lot of freedom.

00:29:05.940 --> 00:29:10.880
That's also the downfall is, is you can skin a cat many, many ways when not.

00:29:11.320 --> 00:29:14.380
So I'm providing just suggestions.

00:29:15.780 --> 00:29:20.520
However, uh, you know, we want to go look at all the processors.

00:29:21.020 --> 00:29:23.620
You know, I showed you how you can search processors.

00:29:24.040 --> 00:29:27.900
You can filter on the word cloud, you know, those types of things.

00:29:27.900 --> 00:29:33.280
So what we want to do is start setting up our data flow to ingest this and

00:29:33.280 --> 00:29:39.680
transform into JSON, which will allow for easier, uh, way to analyze.

00:29:40.200 --> 00:29:43.660
And then we can, you know, from there, we can extract the text

00:29:43.660 --> 00:29:45.580
or whatever, convert record.

00:29:46.080 --> 00:29:48.340
And then we want to do a data enrichment.

00:29:48.660 --> 00:29:52.320
So we want to enrich the data with, you know, you can add a time

00:29:52.320 --> 00:29:56.460
stamp or precipitation data, you know, those types of things.

00:29:56.460 --> 00:30:01.820
Um, the data enrichment step, you know, it's, it's, it's kind of optional.

00:30:02.420 --> 00:30:08.680
Um, but the data aggregation, so aggregate hourly data into a

00:30:08.680 --> 00:30:11.340
daily summary for each parameter.

00:30:12.260 --> 00:30:16.460
So, so, you know, station one, station two, station three, here's

00:30:16.460 --> 00:30:22.260
an aggregate of the hourly data, you know, for each weather parameter.

00:30:23.720 --> 00:30:29.360
Again, you can use merge content to combine all the records, their hints.

00:30:30.540 --> 00:30:36.900
And, and I think it was, and I don't know if, if this, I'm assuming

00:30:36.900 --> 00:30:42.980
you all know each other, uh, but I think it was Ben, Ben on the last

00:30:42.980 --> 00:30:49.880
class did a badass, sorry for my language, uh, a really amazing, um,

00:30:49.880 --> 00:30:55.640
I think it was where he was combining these records and those types of things.

00:30:56.220 --> 00:30:59.740
Uh, I don't think he got complete with all of it, but I really liked

00:30:59.740 --> 00:31:02.000
his thought process that he went into.

00:31:02.700 --> 00:31:05.800
Um, so there's a different ways alert generation.

00:31:06.740 --> 00:31:12.480
So, you know, uh, generated an alert if certain conditions are met, right?

00:31:12.500 --> 00:31:18.200
So if you see a high temperature for that, that station or that day or that

00:31:18.200 --> 00:31:20.680
hour, you know, you may generate alert.

00:31:20.800 --> 00:31:26.920
What I'm looking for here is, is, you know, here is the alert, you

00:31:26.920 --> 00:31:33.420
know, it's station zero zero two at 2300 hours had a extremely high

00:31:33.420 --> 00:31:37.440
temperature, uh, and some sort of anomaly, some sort of story.

00:31:38.000 --> 00:31:42.580
Um, and so, um, I know you're not going to be able to send me an

00:31:42.580 --> 00:31:47.680
email or a text or any of those things, but you'll, you should be able

00:31:47.680 --> 00:31:53.060
to get that alert out and we can at least just view it as an attribute

00:31:53.060 --> 00:32:00.280
or view it, uh, you know, in the queue or whatever, um, some additional

00:32:00.840 --> 00:32:06.060
considerations, you know, controller services, key processes to focus on.

00:32:06.660 --> 00:32:11.140
Uh, you know, I'm, I'm given the goal here is give you as many

00:32:11.140 --> 00:32:13.940
hints to way to do this as possible.

00:32:13.940 --> 00:32:19.640
Again, there's many ways you notice on the last processor, I was converting

00:32:19.640 --> 00:32:26.700
CSV to JSON, if you look at your weather data, you will have, uh, two

00:32:26.700 --> 00:32:30.000
CSV files in a JSON file to work with, right?

00:32:30.060 --> 00:32:31.580
Because not all sensors are the same.

00:32:32.400 --> 00:32:39.020
Um, so the goal here is to pick all these files up, get them into a

00:32:39.020 --> 00:32:43.800
format that is common that we can work with and then extract and

00:32:43.800 --> 00:32:44.220
compute.

00:32:45.560 --> 00:32:48.420
So that being said, any questions?

00:32:50.600 --> 00:32:51.220
Clear as mud.

00:32:52.340 --> 00:32:54.280
Um, so how, how are we going to do this?

00:32:54.480 --> 00:32:58.780
Um, you know, I would go to your main NaFi canvas, create a new

00:32:58.780 --> 00:33:03.740
processor group called scenario one and let's get started.

00:33:04.280 --> 00:33:06.440
Um, I am sitting here.

00:33:06.440 --> 00:33:09.340
Um, I'm going to try not to talk as much.

00:33:09.620 --> 00:33:12.380
Uh, I, I'm, I'm here for Q and a.

00:33:12.380 --> 00:33:16.020
I'm here for, Hey, here's what I'm thinking.

00:33:16.200 --> 00:33:17.620
You know, what do you think?

00:33:17.960 --> 00:33:22.940
Um, my goal, like I said, is after lunch, this is going to take us a few hours.

00:33:23.400 --> 00:33:27.360
After lunch, after we get through going through the, you know, building this

00:33:27.360 --> 00:33:33.460
out, I am going to go around the room on each person and I just, I'm

00:33:33.460 --> 00:33:37.300
looking for that story, you're a data analyst, you know, you know, I'm

00:33:37.300 --> 00:33:40.860
just looking for that story of here's how I did this.

00:33:40.860 --> 00:33:42.220
So there's no questions.

00:33:43.100 --> 00:33:44.200
Um, you know, let's get started.

00:33:44.320 --> 00:33:47.660
And then as you see, I have everybody's screen pulled up and I'll pop into

00:33:47.660 --> 00:33:52.740
your screen to check on you and, you know, provide commentary along the way.

00:33:52.740 --> 00:33:57.500
Again, also, um, I'm looking at, you know, beautification.

00:33:57.700 --> 00:34:01.900
I'm looking at all the items and all the little points that we've touched

00:34:01.900 --> 00:34:03.780
on for the last day and a half now.

00:34:04.380 --> 00:34:07.640
Um, so, you know, just kind of keep that in mind.

00:34:07.640 --> 00:34:13.660
Um, last class we had some amazing looking flow.

00:34:13.820 --> 00:34:19.320
It wasn't necessarily a fully operational, but, you know, uh, it's

00:34:19.320 --> 00:34:23.400
still quote unquote passing because, you know, it was a very good story

00:34:23.400 --> 00:34:24.580
of how it was done.

00:34:24.940 --> 00:34:26.920
It was laid out very beautiful.

00:34:27.720 --> 00:34:31.100
It had everything labeled in those colors.

00:34:31.760 --> 00:34:35.780
I think, uh, someone actually broke it up into multiple process groups.

00:34:35.780 --> 00:34:38.700
They were using an input port and an output port.

00:34:39.160 --> 00:34:43.320
I know we haven't went over that, but they're, you know, it's there.

00:34:43.660 --> 00:34:45.140
Uh, the documentation's there.

00:34:45.420 --> 00:34:50.880
Uh, we had a couple of people use a funnel, which I wasn't, I, I on

00:34:50.880 --> 00:34:52.840
purpose, you know, didn't explain.

00:34:52.840 --> 00:34:57.780
And I was really surprised at, you know, using some of the tips and

00:34:57.780 --> 00:35:04.900
technologies that, that I didn't necessarily go over use the, uh, flow

00:35:04.900 --> 00:35:06.980
that we just went over as an example.

00:35:07.540 --> 00:35:09.740
Um, you know, you should be good to go.

00:35:28.380 --> 00:35:30.640
Just checking in to see if anybody has any questions.

00:35:30.640 --> 00:35:31.880
If you do, let me know.

00:35:35.360 --> 00:35:38.320
And we'll work on this until we go to lunch.

00:35:38.480 --> 00:35:44.740
Um, and then, uh, uh, when we get back, we'll finish it up working on it.

00:36:16.820 --> 00:36:21.300
Leroy, you're still looking really nice, but Darius, you're looking nice as well.

00:36:21.480 --> 00:36:23.620
It's like, Peter's got about, I've got it figured out.

00:36:25.640 --> 00:36:28.960
Tom, I like how you've got all your processors coming out there and you

00:36:28.960 --> 00:36:31.920
know, now you're working probably to build those connections.

00:36:33.140 --> 00:36:36.400
Yeah, but I, I have no clue, honestly.

00:36:37.680 --> 00:36:37.820
Okay.

00:36:37.960 --> 00:36:43.360
Well, that's, that's, uh, you want to put the freaking processors out there

00:36:43.360 --> 00:36:46.700
based on your documentation and then it was going to try to mess with it from there.

00:36:47.080 --> 00:36:48.980
But, well, let's kind of walk through it.

00:36:48.980 --> 00:36:49.340
Right.

00:36:49.720 --> 00:36:57.340
So you've got to get your file, uh, from somewhere, um, they are, so, you

00:36:58.260 --> 00:37:01.800
there's two CSV files in a JSON file, I think.

00:37:02.720 --> 00:37:06.720
So we would probably want to make all of those JSON.

00:37:07.780 --> 00:37:15.540
So you could use that previous, uh, example that, that, that, that

00:37:15.540 --> 00:37:21.740
data flow that we use, so you could get the file update, uh, attribute.

00:37:22.180 --> 00:37:26.520
You may want to filter your file on only CSVs.

00:37:26.520 --> 00:37:30.580
So on your get file, you would put like, you know, go into the file

00:37:30.580 --> 00:37:36.640
filter and just add, you know, dot CSV on the end, I think it's dot star as

00:37:36.640 --> 00:37:39.420
the default, so you want to pick up only CSV.

00:37:39.540 --> 00:37:43.580
So do dot CSV and that makes sense.

00:37:43.620 --> 00:37:43.920
Yep.

00:37:44.120 --> 00:37:45.120
And there you go.

00:37:45.260 --> 00:37:50.640
And then, you know, walk through the previous example and, you

00:37:50.640 --> 00:37:55.140
know, where you use the controller service, set that controller service up.

00:37:55.140 --> 00:38:00.160
Um, and let's get these, I don't remember how to do the controller

00:38:00.160 --> 00:38:03.440
services that that was, okay.

00:38:03.760 --> 00:38:05.360
I think we quickly went over that.

00:38:05.880 --> 00:38:10.300
Like, I thought you could figure it within this process or service.

00:38:10.860 --> 00:38:11.120
Yeah.

00:38:11.260 --> 00:38:12.460
Well, let's go back.

00:38:12.480 --> 00:38:17.920
Uh, let's go back to your, uh, the flow that I sent over for when I

00:38:17.920 --> 00:38:19.280
went through the controller service.

00:38:20.640 --> 00:38:23.760
So, so here we, we got the CSV file.

00:38:23.760 --> 00:38:27.900
We set the schema name because we're going to need to build a schema.

00:38:28.640 --> 00:38:33.200
And then we use the convert record processor, uh, to

00:38:33.200 --> 00:38:35.200
convert it from CSV to Jason.

00:38:35.900 --> 00:38:40.280
So right there we're set dot schema dot name with a value of inventory.

00:38:41.420 --> 00:38:43.360
Um, so that way, yep.

00:38:43.780 --> 00:38:45.520
And so go ahead and cancel on that one.

00:38:45.800 --> 00:38:51.800
And then we use the convert record to ingest that CSV file and go

00:38:52.000 --> 00:38:52.500
configure.

00:38:53.320 --> 00:38:56.940
And you know, when you use that convert record, you're going to say you

00:38:56.940 --> 00:38:58.480
want to use a CSV reader.

00:38:59.120 --> 00:39:02.880
So hit that little arrow and it's going to take you to the controller service.

00:39:04.120 --> 00:39:04.600
Yeah.

00:39:06.260 --> 00:39:10.540
So follow along, you know, that's the reason we went through this one is

00:39:10.540 --> 00:39:14.340
because it's going to help you immediately kind of get things started.

00:39:14.800 --> 00:39:18.560
Uh, so it's a little cheat, but yeah, if you can, you know, in your

00:39:18.700 --> 00:39:22.740
flow, just kind of work, you know, you want to ignore that Jason document

00:39:22.740 --> 00:39:28.420
that, that you have already because, you know, because you already have a

00:39:28.420 --> 00:39:29.120
Jason document.

00:39:29.140 --> 00:39:33.200
So what we're going to try to do is, you know, you may want to open

00:39:33.200 --> 00:39:38.180
that Jason document to make a schema that resembles it.

00:39:38.400 --> 00:39:42.600
And if you look at your, um, you know, when you go into your

00:39:42.600 --> 00:39:46.540
Avro schema, you're going to see, you know, we put a sample schema

00:39:46.540 --> 00:39:50.980
there when we did our flow, you can actually copy paste, add a couple

00:39:50.980 --> 00:39:55.520
of values and you should be good to go to have all of that as Jason.

00:39:56.180 --> 00:40:01.040
Once you get it all as Jason, you can then extract those Jason

00:40:01.040 --> 00:40:06.380
elements and you know, then you're mostly done with the whole flow.

00:40:07.300 --> 00:40:12.220
And where was that at that file that had the, all the curly

00:40:12.220 --> 00:40:16.240
yeah, that configuration that is in your Avro schema registry.

00:40:16.540 --> 00:40:24.920
You clicked off of it, go back up, you know, configure and then just go to the

00:40:24.920 --> 00:40:25.600
controller service.

00:40:25.620 --> 00:40:26.140
There you go.

00:40:28.440 --> 00:40:29.440
Click it.

00:40:30.060 --> 00:40:33.940
And if you look at the second one is the Avro schema registry, click

00:40:33.940 --> 00:40:38.400
your gear and there's your schema in inventory property.

00:40:38.620 --> 00:40:39.260
There you go.

00:40:39.260 --> 00:40:40.880
Oh, that's all right.

00:40:40.880 --> 00:40:41.240
Yeah.

00:40:41.800 --> 00:40:47.480
If you kind of use this flow, you should be able to get to where all

00:40:47.480 --> 00:40:51.800
your values are Jason, and then we can do an evaluate Jason path

00:40:51.800 --> 00:40:56.080
processor and, and do some, some good math.

00:40:56.560 --> 00:40:58.760
I know we're coming up on lunch.

00:40:58.760 --> 00:41:03.380
Um, uh, here, here in a few minutes, uh, the goal and this is for

00:41:03.380 --> 00:41:07.200
everybody that, you know, the goal here is to get this started.

00:41:07.920 --> 00:41:10.480
Um, feel free to work on it through lunch.

00:41:10.480 --> 00:41:14.320
I I'm going to go grab a sandwich and come right back.

00:41:14.560 --> 00:41:18.300
Um, but, uh, but yeah, let's just keep working on it.

00:41:18.400 --> 00:41:22.980
Um, and, and, but take a lunch as you need, uh, and do that.

00:41:23.020 --> 00:41:27.080
You should be able to get through, you know, just think about it where,

00:41:27.380 --> 00:41:30.280
you know, you're trying to aggregate these values.

00:41:30.460 --> 00:41:32.820
So you want everything in like a common format.

00:41:33.180 --> 00:41:37.600
So if you can get those CSVs converted to Jason and just outputting,

00:41:37.600 --> 00:41:42.460
you know, all Jason, then we can look at it and evaluate Jason processor.

00:41:43.040 --> 00:41:47.100
If you go into the processor list, you should click on Jason and then you

00:41:47.100 --> 00:41:52.960
have, you know, processors there to, to, to work with Jason, but, but work

00:41:52.960 --> 00:41:57.020
on that Tom, and then, you know, if once we get to the Jason part, you

00:41:57.020 --> 00:41:59.740
know, let me know and we'll walk through some more.

00:42:00.740 --> 00:42:01.220
Okay.

00:42:01.580 --> 00:42:01.800
Yeah.

00:42:01.800 --> 00:42:06.960
And, and again, for everybody else, like, like the scenario just

00:42:06.960 --> 00:42:12.660
mentioned processors, you can use all 300 plus processors we have.

00:42:13.400 --> 00:42:18.420
Um, and, but if you get hung up or you're just stuck and you can't go any

00:42:18.420 --> 00:42:22.880
further, please let's just, just, just speak up and let's, uh, and get

00:42:22.880 --> 00:42:25.560
you past that, uh, hurdle that you may be at.

00:42:27.080 --> 00:42:32.200
And, and, uh, if you could get a second, I have, um, on my workflow.

00:42:32.820 --> 00:42:34.240
Let me look at it.

00:42:34.240 --> 00:42:36.400
I think I got a quick question here.

00:42:36.400 --> 00:42:36.860
All right.

00:42:36.860 --> 00:42:37.940
I'm bringing yours up right now.

00:42:41.560 --> 00:42:42.000
Okay.

00:42:44.180 --> 00:42:45.840
So, and I can walk through it too.

00:42:46.160 --> 00:42:50.180
So on this one, you know, getting at least one file so I can look at it.

00:42:50.780 --> 00:42:51.220
Right.

00:42:51.240 --> 00:42:58.060
Um, in here, I just, I hope to get the workflow, but, um, I came in here.

00:42:58.600 --> 00:43:01.860
I am, uh, setting my schema needs to weather, right.

00:43:02.060 --> 00:43:02.620
Weather data.

00:43:03.300 --> 00:43:07.440
And then I am, um, and I apologize for the latency here.

00:43:07.460 --> 00:43:12.100
It's kind of had to click around a little bit, um, in here, uh, this is

00:43:12.100 --> 00:43:17.780
where I am getting my error, but maybe you can, um, if I can figure this one.

00:43:18.380 --> 00:43:23.940
So what I did is I sent my schema name to, uh, whether, so as far as my

00:43:23.940 --> 00:43:29.860
reader, um, what I ended up doing is, uh, well, I'll start here with

00:43:29.860 --> 00:43:32.540
the schema registry portion, right.

00:43:32.540 --> 00:43:36.460
So, um, I did configure my schema.

00:43:37.380 --> 00:43:37.860
Okay.

00:43:38.260 --> 00:43:39.500
Let's look at your schema real quick.

00:43:40.460 --> 00:43:42.320
Let me just, uh, let's get this out.

00:43:43.060 --> 00:43:44.580
Another little tip here.

00:43:44.840 --> 00:43:46.120
Store everything as a stream.

00:43:46.220 --> 00:43:47.320
It makes it a lot easier.

00:43:49.560 --> 00:43:50.640
Um, okay.

00:43:52.840 --> 00:43:59.140
So station ID, I tried to play with, uh, they didn't like that.

00:44:00.100 --> 00:44:02.480
And then I just, I at least want to bring in the data, right?

00:44:02.540 --> 00:44:03.100
Yeah.

00:44:05.100 --> 00:44:08.480
And so I think this is, uh, okay.

00:44:08.700 --> 00:44:10.700
I think it gets to a point where it reads it.

00:44:11.220 --> 00:44:15.860
Um, and so then, uh, in here, this, this one's pretty

00:44:15.860 --> 00:44:17.620
straightforward unless I'm overlooking something.

00:44:18.120 --> 00:44:19.240
No, that's you.

00:44:19.280 --> 00:44:23.380
So the only thing that that controller service does is enable the Avro

00:44:23.380 --> 00:44:27.620
reader and it allows you to, to have that Avro schema.

00:44:29.420 --> 00:44:29.840
Yeah.

00:44:29.840 --> 00:44:33.440
And then, uh, so then, uh, let me look at my reader.

00:44:33.740 --> 00:44:36.220
I do have, and then, so you scheme a name property.

00:44:36.380 --> 00:44:36.700
Yep.

00:44:37.660 --> 00:44:43.140
Um, I am looking, I made sure the, I didn't notice the first header is.

00:44:43.900 --> 00:44:45.320
Treat first line as header.

00:44:45.460 --> 00:44:45.760
True.

00:44:46.060 --> 00:44:46.340
Perfect.

00:44:46.600 --> 00:44:48.260
Because if not, it's going to error.

00:44:49.140 --> 00:44:49.400
Yep.

00:44:49.760 --> 00:44:50.180
Okay.

00:44:50.660 --> 00:44:55.260
And then, um, come in here.

00:44:55.640 --> 00:44:56.020
Same.

00:44:57.240 --> 00:44:59.000
So using the same.

00:45:00.420 --> 00:45:03.800
Uh, registry, the same schema, I guess, and then the schema name,

00:45:04.040 --> 00:45:05.160
which is whatever, right.

00:45:07.400 --> 00:45:11.840
So I'm overlooking anything here, but, um, so what I do is I was just kind

00:45:11.840 --> 00:45:17.980
of stepping through it, um, step by step and I'll get to here.

00:45:18.220 --> 00:45:18.900
It'll, it'll crash.

00:45:19.020 --> 00:45:19.740
I think I'm already.

00:45:19.960 --> 00:45:21.180
Well, yeah, you've already got an error.

00:45:21.420 --> 00:45:24.100
Let's look at your error before you do that.

00:45:24.260 --> 00:45:25.880
Before you do that, let's just write your error.

00:45:27.240 --> 00:45:27.560
Yep.

00:45:28.500 --> 00:45:29.360
You're the top, right?

00:45:29.380 --> 00:45:29.640
Yeah.

00:45:30.720 --> 00:45:32.320
That's where I forgot how to get to.

00:45:32.540 --> 00:45:34.800
So I was navigating in here and I was looking at the.

00:45:36.820 --> 00:45:40.220
Well, you have the top right of your convert CSV to JSON.

00:45:40.220 --> 00:45:42.240
You see the little red box.

00:45:44.060 --> 00:45:44.540
This one.

00:45:44.660 --> 00:45:44.880
All right.

00:45:44.940 --> 00:45:45.180
Nope.

00:45:45.220 --> 00:45:45.540
This one.

00:45:45.640 --> 00:45:45.920
Nope.

00:45:46.240 --> 00:45:46.440
Nope.

00:45:46.580 --> 00:45:48.440
On this convert CSV to JSON.

00:45:48.500 --> 00:45:49.540
Look at that processor.

00:45:49.820 --> 00:45:50.500
Top right.

00:45:51.160 --> 00:45:51.600
Yep.

00:45:52.160 --> 00:45:53.160
There we go.

00:45:53.280 --> 00:45:54.500
Failed the process.

00:45:54.920 --> 00:45:55.460
There we go.

00:45:55.500 --> 00:45:57.380
That's the error I want to see.

00:45:57.380 --> 00:46:04.000
Uh, incoming data error or input string.

00:46:04.000 --> 00:46:09.340
11.17, which is probably the value in that, right?

00:46:09.360 --> 00:46:11.280
Um, look at yours.

00:46:11.320 --> 00:46:15.040
Let's go back to your schema itself.

00:46:16.080 --> 00:46:17.540
Yeah, actually I put it here.

00:46:17.960 --> 00:46:18.340
Oh, beautiful.

00:46:18.920 --> 00:46:19.080
I guess.

00:46:19.300 --> 00:46:19.820
Yeah.

00:46:19.880 --> 00:46:24.840
So I was looking at the data and then, so what I ended up doing is I just, maybe

00:46:24.840 --> 00:46:30.380
I think wind speed might be, uh, maybe I was thinking, cause I was trying data

00:46:30.380 --> 00:46:32.800
types, I tried to use a double, I think.

00:46:33.080 --> 00:46:35.180
And then they don't like that for some reason.

00:46:35.220 --> 00:46:36.260
They do not.

00:46:36.560 --> 00:46:41.920
So the last class run into this and my recommendation was keep it all strings

00:46:41.920 --> 00:46:42.500
for now.

00:46:43.280 --> 00:46:43.800
Okay.

00:46:44.020 --> 00:46:44.160
Yeah.

00:46:44.160 --> 00:46:44.960
And I think that's what it is.

00:46:45.140 --> 00:46:47.400
That actually I just noticed wind speed is not an integer.

00:46:47.740 --> 00:46:48.000
No.

00:46:48.080 --> 00:46:53.660
So just keep it all as strings and, and you should be good.

00:46:53.660 --> 00:46:59.780
And I saw this exact, um, one of the other, your, your fellow classmates

00:46:59.780 --> 00:47:02.320
on the last one did the exact same thing.

00:47:02.520 --> 00:47:05.620
Uh, but yeah, keep it a string, see if that'll work.

00:47:05.980 --> 00:47:10.200
Uh, you may have to mess around with it, but that should unblock you.

00:47:10.380 --> 00:47:13.440
And then when you're done with that, you're going to have

00:47:13.440 --> 00:47:16.100
three JSON documents, right?

00:47:16.980 --> 00:47:17.500
Okay.

00:47:17.600 --> 00:47:18.120
Perfect.

00:47:19.080 --> 00:47:25.080
So let's, let's make it a goal to have a three JSON documents shortly after lunch.

00:47:25.340 --> 00:47:29.980
Now it's, it's a 11 36 y'all's time.

00:47:30.940 --> 00:47:35.440
Um, uh, again, this is very working lunch for me.

00:47:35.620 --> 00:47:39.960
So, uh, what I'm going to do is, is, is, is pause it.

00:47:39.960 --> 00:47:42.480
You know, I'll continue answering questions right now, but when we're

00:47:42.480 --> 00:47:47.420
done with questions, I am going to go grab my sandwich, uh, that my wife

00:47:47.420 --> 00:47:53.340
made for me and I'm going to eat it at my desk and, um, that way I can answer

00:47:53.340 --> 00:47:55.720
any other questions and things like that.

00:47:55.800 --> 00:48:00.020
So, uh, I'm going to put up, uh, the slide that says, you know, we're

00:48:00.020 --> 00:48:04.860
going on lunch, be back in 45 minutes, but feel free to work through this.

00:48:05.300 --> 00:48:08.380
Um, but hopefully that will fix your problem, uh, Richard.

00:48:09.340 --> 00:48:12.440
And, but I like the path your own, right?

00:48:12.520 --> 00:48:15.860
You're, you know, you're using that previous processor.

00:48:15.860 --> 00:48:18.420
You want to get everything together.

00:48:18.680 --> 00:48:20.540
So if you can't just say, okay.

00:48:21.060 --> 00:48:24.320
And while I've got your screen pulled up, uh, you know, let me take a

00:48:24.320 --> 00:48:26.820
look at what you're doing past that.

00:48:26.880 --> 00:48:27.540
Go ahead and say, okay.

00:48:27.600 --> 00:48:28.860
And go back to your main canvas.

00:48:31.280 --> 00:48:32.040
Right quick.

00:48:32.040 --> 00:48:32.760
Sorry about that.

00:48:32.760 --> 00:48:33.700
I thought you were going to drive.

00:48:33.940 --> 00:48:35.340
Oh, no, no, no, no, no.

00:48:35.340 --> 00:48:37.220
I try not to take them.

00:48:37.460 --> 00:48:40.320
Um, so you're going to set the, so right JSON directory.

00:48:40.700 --> 00:48:45.080
So basically it's my, the last flow and you're just updating it.

00:48:45.080 --> 00:48:45.300
Okay.

00:48:45.340 --> 00:48:45.660
Perfect.

00:48:45.860 --> 00:48:46.780
And so

00:48:47.520 --> 00:48:50.380
so that I understood each of those processes, right?

00:48:50.500 --> 00:48:52.360
No, that's we're, yeah.

00:48:52.380 --> 00:48:54.400
We're reiterating what we already learned.

00:48:54.400 --> 00:48:55.820
So no, that's perfect.

00:48:56.240 --> 00:48:58.240
Um, and then I'll, I'll get creative again.

00:48:58.280 --> 00:48:59.900
Well, good, good.

00:48:59.900 --> 00:49:00.360
Okay.

00:49:00.520 --> 00:49:02.320
Well, hopefully that will square you away.

00:49:02.320 --> 00:49:04.100
If not, just let me know.

00:49:04.400 --> 00:49:09.380
I don't see hand raising sometimes on the teams because of the, I'm,

00:49:09.380 --> 00:49:10.860
I'm actually watching you all.

00:49:11.320 --> 00:49:15.020
So again, for anybody else, just feel free to just blurt out.

00:49:15.220 --> 00:49:15.540
Hey, Josh.

00:49:15.540 --> 00:49:16.200
I have a question.

00:49:17.380 --> 00:49:18.780
Um, but yeah, you should be good to go, Richard.

00:49:19.400 --> 00:49:20.540
How's everybody else looking?

00:49:20.700 --> 00:49:22.860
Tommy, a little less frustrated now, hopefully.

00:49:24.420 --> 00:49:27.940
Yeah, I am going to step away for a little bit, but I'll come back

00:49:27.940 --> 00:49:29.240
to it here in about 20 minutes.

00:49:29.660 --> 00:49:30.060
Okay.

00:49:30.880 --> 00:49:31.680
All right.

00:49:32.540 --> 00:49:34.060
Um, Peter, it looks like yours is good.

00:49:34.700 --> 00:49:35.400
How are you doing?

00:49:45.780 --> 00:49:50.440
Is there a way to copy that entire process group to this new process group?

00:49:51.280 --> 00:49:53.380
Uh, you, you got to copy each process at a time.

00:49:54.080 --> 00:49:58.360
No, you could actually, you know, hold shift and act, uh, you're

00:49:58.360 --> 00:50:02.440
coming in really slow, um, but I heard that you're good.

00:50:02.700 --> 00:50:05.900
I think, um, you're just working through it.

00:50:06.140 --> 00:50:06.380
Perfect.

00:50:06.400 --> 00:50:08.520
Yeah, I just want to copy the process group.

00:50:08.680 --> 00:50:09.200
Yeah.

00:50:09.200 --> 00:50:14.840
So you can, you can hold shift and copy the whole flow that we worked on

00:50:14.840 --> 00:50:19.640
previously and put it in a new processor group and, and then

00:50:19.640 --> 00:50:20.660
start adding to it.

00:50:20.700 --> 00:50:21.200
Right.

00:50:21.700 --> 00:50:25.560
Um, also you remember when I had you create a new process

00:50:25.560 --> 00:50:28.860
or group and you uploaded the JSON document I sent over?

00:50:29.780 --> 00:50:36.100
Um, and, and so you could, you know, you could start with a new process

00:50:36.100 --> 00:50:40.720
group, start with the previous flow and start mocking it up.

00:50:41.840 --> 00:50:43.140
That's what I needed to do.

00:50:43.140 --> 00:50:43.600
Okay.

00:50:43.600 --> 00:50:44.000
All right.

00:50:44.000 --> 00:50:44.520
There we go.

00:50:44.520 --> 00:50:46.880
So take a break for a minute, clear your mind.

00:50:47.200 --> 00:50:49.760
I always feel that like, you know, I'm going to get something to drink

00:50:49.760 --> 00:50:53.520
or something to come back and like, it helps me like think about this

00:50:53.520 --> 00:50:54.900
while I'm not looking at a screen.

00:50:57.100 --> 00:50:57.740
All right.

00:50:57.900 --> 00:51:02.340
So I think, uh, anybody else have any quick questions before we, you

00:51:02.340 --> 00:51:04.460
know, break for lunch again?

00:51:05.160 --> 00:51:09.380
Um, you know, I'm, I'm, I'm running around for during lunch, just

00:51:09.380 --> 00:51:11.880
grabbing food and, and, and snacks and drinks.

00:51:11.880 --> 00:51:16.840
So I will be around my desk and if anybody has any questions, feel

00:51:16.840 --> 00:51:17.620
free to let me know.

00:51:17.800 --> 00:51:22.520
Um, it is 1140 y'all's time.

00:51:23.780 --> 00:51:25.440
So say 20.

00:51:26.780 --> 00:51:28.860
I also forget how you import.

00:51:29.820 --> 00:51:30.140
No worries.

00:51:30.240 --> 00:51:30.520
No worries.

00:51:30.620 --> 00:51:31.020
I got you.

00:51:31.160 --> 00:51:31.640
I got you.

00:51:31.880 --> 00:51:37.740
So I think it'd be 1225, 45 minutes.

00:51:37.740 --> 00:51:42.620
I'll show you this, which is two 25.

00:51:44.600 --> 00:51:45.480
All right.

00:51:45.800 --> 00:51:48.180
So, um, okay, Thomas.

00:51:48.620 --> 00:51:50.340
So here's, here's how you do it.

00:51:50.340 --> 00:51:52.720
Uh, you brought down a new, did you bring down a new

00:51:52.720 --> 00:51:53.940
process or group already?

00:51:55.260 --> 00:51:57.180
Yeah, scenario one.

00:51:57.880 --> 00:52:00.140
Uh, right click, you know, okay.

00:52:00.320 --> 00:52:03.600
Right click, say delete, do it again, but this time don't hit.

00:52:04.000 --> 00:52:04.440
Okay.

00:52:05.280 --> 00:52:06.720
Bring down a new processor group.

00:52:06.900 --> 00:52:07.340
There you go.

00:52:07.340 --> 00:52:08.180
Bring it down.

00:52:08.700 --> 00:52:11.140
And then to the right, you see the little upload.

00:52:12.600 --> 00:52:15.780
And then CSV to Jason demo data flow.

00:52:17.220 --> 00:52:21.000
They open and, and there you go.

00:52:21.480 --> 00:52:22.340
There you go.

00:52:22.880 --> 00:52:25.040
You got a head start already.

00:52:26.360 --> 00:52:26.900
I remember now.

00:52:26.980 --> 00:52:27.160
Okay.

00:52:27.240 --> 00:52:27.620
Thank you.

00:52:27.620 --> 00:52:28.340
You're very welcome.

00:52:29.480 --> 00:52:31.780
Well, I'm going to go grab my food.

00:52:32.220 --> 00:52:37.120
If anybody has any questions, uh, or anything, I, um,

00:52:37.860 --> 00:52:39.440
I had this issue the last class.

00:52:39.460 --> 00:52:42.220
I can't type in chat sometimes.

00:52:42.540 --> 00:52:45.220
Um, but I can see chat.

00:52:45.620 --> 00:52:50.960
Um, so, you know, raise your hand, just blurt out my name or

00:52:50.960 --> 00:52:53.260
something and we'll get you squared away.

00:52:55.420 --> 00:52:56.040
Right.

00:53:01.080 --> 00:53:02.080
Let's make it.

00:53:08.940 --> 00:53:12.000
I set the time, but like I said, I'll be back at my desk.

00:53:12.500 --> 00:53:15.240
So, uh, here in a few minutes, if anybody needs anything.

01:03:26.400 --> 01:03:31.960
Do any type of innovation because you would

01:03:38.580 --> 01:03:39.700
I'm sure.

01:03:41.540 --> 01:03:44.420
It's different than the version two.

01:04:09.560 --> 01:04:10.960
Yeah.

01:04:37.340 --> 01:04:38.240
I want to eat it.

01:04:39.100 --> 01:04:41.760
I can't believe I'm eating it.

01:04:42.460 --> 01:04:43.760
It's so good.

01:04:44.780 --> 01:04:45.520
Wow.

01:04:46.400 --> 01:04:47.180
That's so good.

01:04:47.740 --> 01:04:48.160
Good!

01:04:48.440 --> 01:04:49.020
You want to eat it too?

01:04:49.020 --> 01:04:50.080
I'm going to eat it.

01:04:50.280 --> 01:04:50.780
I'm so hungry.

01:04:50.780 --> 01:04:51.300
I'm going to eat it.

01:04:55.320 --> 01:04:56.160
I'm so hungry.

01:04:56.160 --> 01:04:56.700
I'm so hungry.

01:04:56.700 --> 01:04:57.240
I'm so hungry.

01:04:57.460 --> 01:04:58.300
I'm so hungry.

01:06:28.300 --> 01:06:33.040
So now, there is not one, but only one.

01:06:33.080 --> 01:06:36.320
One of the rules is that it can be bad, and it can be bad.

01:06:38.400 --> 01:06:42.200
So, you stand up to the wind, and then you go over to the wind.

01:06:42.640 --> 01:06:45.320
You have to stop on the one, and you go over to the wind.

01:06:46.260 --> 01:06:49.260
Then you have to get out of the light of the wind.

01:06:49.880 --> 01:06:52.800
You have to go over to the side, and then you go over to the road.

01:06:53.440 --> 01:06:54.480
This is stopping.

01:06:55.660 --> 01:06:56.880
Firstly, you stop.

01:06:57.860 --> 01:06:58.780
Then you go back to the wind.

01:06:58.880 --> 01:06:59.180
Stop.

01:07:28.120 --> 01:07:32.760
All right, so hopefully everyone is making their way back from lunch.

01:07:34.100 --> 01:07:35.200
I'm in here.

01:07:35.380 --> 01:07:42.560
If you have any questions, I might miss a little bit of the afternoon session.

01:07:43.280 --> 01:07:44.680
Okay, Richard had to drop.

01:07:45.460 --> 01:07:49.640
But if we can, let's just continue working on your flow.

01:07:52.680 --> 01:07:56.400
I'll give us a little bit more time to check in.

01:07:56.660 --> 01:08:03.380
We should, you know, at least have our CSVs as all JSON.

01:08:04.980 --> 01:08:10.540
You may have to, if you use that convert record, you may have to modify that schema,

01:08:11.900 --> 01:08:18.360
like Tom and I were going through, as well as Richard, before the lunch break.

01:08:19.080 --> 01:08:23.560
You're more than welcome to share notes or things within chat.

01:08:23.840 --> 01:08:25.320
I don't mind at all.

01:08:25.640 --> 01:08:30.680
So if someone has a good schema, they want to copy and paste into chat, you know, have at it,

01:08:30.880 --> 01:08:34.620
so we can all share if that is your approach.

01:08:35.400 --> 01:08:40.040
But if you have any questions, just speak up, and I'll answer.

01:08:40.460 --> 01:08:44.260
I'm going to start going through and looking and seeing how we're doing.

01:08:44.260 --> 01:08:46.220
But, yeah.

01:08:47.540 --> 01:08:49.320
I do have a question on mine.

01:08:50.620 --> 01:08:51.140
Okay.

01:08:51.640 --> 01:08:57.080
They have it all set up here, but I have an error on the convert CSV to JSON.

01:08:58.600 --> 01:08:59.720
All right, let's look at it.

01:09:00.040 --> 01:09:07.420
It says that the record reader and record writer are validated against invalid

01:09:07.420 --> 01:09:09.920
because controller service is enabling.

01:09:09.920 --> 01:09:13.660
And I did right-click over here and click enable all controller services,

01:09:13.660 --> 01:09:15.060
and that didn't seem to do anything.

01:09:15.520 --> 01:09:15.700
Okay.

01:09:15.720 --> 01:09:21.400
Let's go to your convert CSV to JSON and let's look at the properties.

01:09:22.940 --> 01:09:23.980
Go ahead and say configure.

01:09:27.360 --> 01:09:30.660
And let's go look at your CSV reader, so click the arrow.

01:09:30.860 --> 01:09:32.080
Go ahead and, there you go.

01:09:32.960 --> 01:09:34.940
So they are invalid.

01:09:34.940 --> 01:09:41.760
When you hover over the exclamation, so you have a problem with your schema.

01:09:42.600 --> 01:09:43.720
How about the other one?

01:09:44.120 --> 01:09:48.060
They're probably invalid because of the schema.

01:09:48.240 --> 01:09:49.400
Is it popping up?

01:09:50.280 --> 01:09:50.960
There we go.

01:09:52.520 --> 01:09:52.920
Okay.

01:09:53.200 --> 01:09:57.920
So let's look at that first one, the schema registry demo CSV.

01:09:58.440 --> 01:10:00.820
Let's go to the configuration of that.

01:10:03.480 --> 01:10:05.820
And let's look at, well, you're using inventory.

01:10:06.640 --> 01:10:08.280
You're still using the inventory name.

01:10:08.700 --> 01:10:09.080
Oh, okay.

01:10:09.220 --> 01:10:13.860
Yeah, I changed the schema over here, so I have to change the name on the left side as well.

01:10:14.020 --> 01:10:18.340
No, are you using the schema name inventory for this example?

01:10:19.580 --> 01:10:20.720
No, I changed it to weather.

01:10:20.920 --> 01:10:21.340
Okay.

01:10:21.460 --> 01:10:27.380
Yeah, so there's no reference to that.

01:10:27.380 --> 01:10:32.500
So actually, if you want, say, you know, copy your schema.

01:10:33.080 --> 01:10:36.940
Just go into the box and hit control A and control C.

01:10:38.400 --> 01:10:39.320
And then say okay.

01:10:40.820 --> 01:10:44.360
And say disable and configure at the top right.

01:10:44.720 --> 01:10:45.200
Perfect.

01:10:46.760 --> 01:10:51.420
And go ahead and do plus so we can add a new property.

01:10:51.720 --> 01:10:51.880
All right.

01:10:51.920 --> 01:10:55.380
And then what did you name the schema inventory?

01:10:56.120 --> 01:10:56.460
Weather.

01:10:56.460 --> 01:10:56.940
Weather.

01:10:57.800 --> 01:10:58.380
Say weather.

01:10:59.380 --> 01:11:00.180
And then say okay.

01:11:00.340 --> 01:11:02.880
And then paste your value, control V.

01:11:05.200 --> 01:11:06.660
Or right click and say paste.

01:11:08.340 --> 01:11:09.540
It's not working for me.

01:11:09.960 --> 01:11:11.120
Control V, is it working?

01:11:13.120 --> 01:11:14.080
Hit cancel.

01:11:14.520 --> 01:11:16.580
Okay, let me try to copy it again.

01:11:17.720 --> 01:11:18.640
Yeah, there you go.

01:11:20.280 --> 01:11:21.820
And then go back to your value.

01:11:23.500 --> 01:11:24.120
Click it.

01:11:24.120 --> 01:11:26.100
It doesn't seem to let you.

01:11:26.580 --> 01:11:28.760
I keep having to double click on a lot of stuff.

01:11:28.840 --> 01:11:33.120
So it might be the copy and pasting might not work the first time either.

01:11:33.880 --> 01:11:34.320
Okay.

01:11:34.480 --> 01:11:41.060
So yeah, I mean, you know, we are dealt the cards we are with latency and stuff like this.

01:11:41.300 --> 01:11:41.780
Okay.

01:11:42.020 --> 01:11:47.660
So you have, I would delete inventory because you're not using it for this flow.

01:11:47.940 --> 01:11:49.880
So, you know, there's a trash can right there.

01:11:50.000 --> 01:11:50.480
Perfect.

01:11:50.980 --> 01:11:51.780
Say apply.

01:11:53.460 --> 01:11:56.060
And let's see.

01:11:57.420 --> 01:11:58.020
Invalid.

01:11:59.680 --> 01:12:04.440
It's still invalid because the schema is not a valid Avro schema.

01:12:04.720 --> 01:12:10.020
Can you paste what you, your schema in the Teams chat?

01:12:11.860 --> 01:12:14.240
And I can take a look at it.

01:12:14.240 --> 01:12:15.360
I was having the same kind of problem.

01:12:15.460 --> 01:12:20.140
Is there anything wrong with leaving it as inventory with the processor above that before that?

01:12:21.020 --> 01:12:28.200
You can think that you can leave it as inventory, but the schema will change because the data has changed.

01:12:28.580 --> 01:12:28.620
Right.

01:12:28.780 --> 01:12:29.140
Okay.

01:12:29.720 --> 01:12:36.860
But if you want to name it inventory and, you know, have added, I would change the name though and create a new schema.

01:12:37.020 --> 01:12:39.080
If that's the process you want to take.

01:12:40.760 --> 01:12:44.360
So, let me, let me look at this schema.

01:12:54.300 --> 01:12:55.520
Give me just a second, Peter.

01:12:55.600 --> 01:12:57.560
Let me see if I can.

01:13:00.700 --> 01:13:01.060
Okay.

01:13:06.180 --> 01:13:06.940
Okay.

01:13:08.140 --> 01:13:10.820
So, type name is weather.

01:13:12.760 --> 01:13:13.760
String, string, string.

01:13:17.700 --> 01:13:20.440
We're missing, we're missing something here.

01:13:26.460 --> 01:13:28.260
Give me just a second.

01:14:03.580 --> 01:14:07.240
You have a comma after precipitation.

01:14:08.360 --> 01:14:11.940
So, go back to your, go back to your model or your schema.

01:14:18.980 --> 01:14:19.860
Configure it.

01:14:21.340 --> 01:14:22.100
And look at that.

01:14:22.200 --> 01:14:24.580
Do you have a comma after precipitation?

01:14:24.920 --> 01:14:27.100
Precipitation should be your last one.

01:14:27.200 --> 01:14:27.500
Yes.

01:14:27.520 --> 01:14:27.980
Yes, I do.

01:14:28.160 --> 01:14:28.440
Yeah.

01:14:28.620 --> 01:14:33.100
So, commas don't belong on the last, there you go.

01:14:33.200 --> 01:14:33.820
Say okay.

01:14:34.040 --> 01:14:34.460
Okay.

01:14:34.600 --> 01:14:35.180
Say apply.

01:14:35.280 --> 01:14:35.980
There you go.

01:14:36.400 --> 01:14:37.700
And enable it.

01:14:38.220 --> 01:14:39.020
You can just say enable.

01:14:39.200 --> 01:14:39.340
All right.

01:14:39.360 --> 01:14:40.120
Close that.

01:14:40.640 --> 01:14:43.720
Enable your CSV reader and your JSON record set writer.

01:14:43.800 --> 01:14:45.060
We've cleared that error.

01:14:45.840 --> 01:14:47.400
So, you should be good to go.

01:14:47.660 --> 01:14:49.880
But yeah, you're in an Avro schema.

01:14:50.000 --> 01:14:53.740
You don't put a comma on the last line there.

01:14:54.680 --> 01:14:54.860
Okay.

01:14:54.940 --> 01:14:55.600
That makes sense.

01:14:55.780 --> 01:14:56.080
Thank you.

01:14:56.220 --> 01:14:57.060
Yep, yep, yep.

01:14:58.680 --> 01:14:59.000
All right.

01:14:59.320 --> 01:15:01.120
Any other questions?

01:15:03.120 --> 01:15:03.840
Tom, you doing good?

01:15:04.700 --> 01:15:06.680
Yeah, I'm taking, that's what I was trying to do.

01:15:10.140 --> 01:15:14.000
Yeah, I think, yeah, that helped me.

01:15:14.120 --> 01:15:15.240
I did the same thing.

01:15:15.440 --> 01:15:16.120
I still needed it.

01:15:16.460 --> 01:15:20.320
I mean, inventory was working, but I'd rather do it right.

01:15:20.500 --> 01:15:20.940
Yeah.

01:15:21.240 --> 01:15:21.500
Yeah.

01:15:21.980 --> 01:15:27.080
I mean, try to do it, like, again, it's there to copy off of, but try also to,

01:15:27.080 --> 01:15:29.420
you know, make it as unique as possible.

01:15:30.020 --> 01:15:33.420
But that's, you know, the beauty is it's only going to get you to JSON.

01:15:33.580 --> 01:15:36.660
We still need to, you know, extract the JSON and stuff like that.

01:15:36.660 --> 01:15:37.200
Gotcha.

01:15:37.700 --> 01:15:38.660
Thank you.

01:15:38.880 --> 01:15:39.440
Mm-hmm.

01:15:39.540 --> 01:15:40.100
No worries.

01:15:41.480 --> 01:15:45.520
So, you know, as we work through this scenario, you may, you know,

01:15:45.600 --> 01:15:50.600
instead of writing that file to, you know, pushing that to the disk,

01:15:50.860 --> 01:15:57.960
you may want to then send it to extract JSON.

01:15:58.500 --> 01:16:03.940
So, you know, the way I would handle this is I would,

01:16:04.820 --> 01:16:07.300
I would read that JSON back in.

01:16:07.620 --> 01:16:12.820
I would extract all the attributes, or I would extract all the fields

01:16:12.820 --> 01:16:16.580
and then save it as attributes.

01:16:16.720 --> 01:16:19.980
And then I can, you know, write that back however I want.

01:16:21.720 --> 01:16:27.160
So, there is a NiFi extract.

01:16:27.320 --> 01:16:29.680
Let me get the exact name.

01:16:33.580 --> 01:16:34.240
Processor.

01:16:36.440 --> 01:16:39.240
It's evaluate JSON path is the processor.

01:16:39.960 --> 01:16:45.840
So, what that will allow you to do is bring that JSON in

01:16:49.880 --> 01:16:53.340
and extract the values you would need.

01:16:57.140 --> 01:17:02.800
If you use the evaluate JSON path processor,

01:17:02.800 --> 01:17:08.340
make sure the destination is set to flow file attribute.

01:17:09.460 --> 01:17:14.080
And if you do that, you should be able to extract every value

01:17:14.080 --> 01:17:18.280
from that JSON document and have it as an attribute.

01:17:20.080 --> 01:17:25.380
So, just, you know, and again, you know, you have the documentation there,

01:17:25.480 --> 01:17:27.180
the help documentation as well.

01:17:27.280 --> 01:17:32.640
Feel free to ask me, you know, as we go through and build this.

01:17:33.240 --> 01:17:34.560
Hey, Josh, can you repeat that again?

01:17:34.840 --> 01:17:37.680
I think you said use something to extract all.

01:17:38.180 --> 01:17:38.460
Yeah.

01:17:38.460 --> 01:17:43.000
So, if it was me, I would send all the JSON documents

01:17:43.000 --> 01:17:45.080
after everything's converted to JSON.

01:17:45.080 --> 01:17:52.160
I would send it to the evaluate JSON path,

01:17:53.920 --> 01:17:56.960
and in the property configuration for that,

01:17:57.060 --> 01:18:01.640
you want to make sure your destination is set from, you know,

01:18:01.760 --> 01:18:06.600
content to attribute because that way you can extract all the values

01:18:06.600 --> 01:18:08.980
because if you do content, it's only going to extract one.

01:18:09.300 --> 01:18:11.820
But if you do, you know, save as attribute,

01:18:11.820 --> 01:18:18.340
you can then quickly plug in like, you know,

01:18:18.400 --> 01:18:22.560
to extract all the values, you know, in the JSON tree.

01:18:25.480 --> 01:18:29.980
You may have two different versions of evaluate JSON

01:18:29.980 --> 01:18:32.580
because you've got, you know,

01:18:32.860 --> 01:18:35.500
you're bringing in a CSV converting it to JSON

01:18:35.500 --> 01:18:37.340
and then you've got your original JSON.

01:18:37.340 --> 01:18:41.340
So you may have to evaluate JSON processors.

01:18:42.660 --> 01:18:46.800
And, you know, and if you, you know, if you don't know how,

01:18:46.900 --> 01:18:47.660
just let me know.

01:18:48.060 --> 01:18:53.080
But in the evaluate JSON, you know, here is,

01:18:53.080 --> 01:18:55.840
let me see if I can open this image.

01:18:57.280 --> 01:19:01.100
For instance, you didn't evaluate JSON.

01:19:02.160 --> 01:19:05.980
Yeah, you know, it wouldn't be dollar dot ID,

01:19:06.200 --> 01:19:10.760
but it's going to be dollar dot for the data.

01:19:10.760 --> 01:19:11.100
Let me look.

01:19:20.600 --> 01:19:21.300
Inventory.

01:19:21.300 --> 01:19:23.420
So if I was doing this.

01:19:54.340 --> 01:19:57.320
So for this one.

01:19:59.320 --> 01:20:03.420
I would do evaluate JSON,

01:20:03.680 --> 01:20:07.100
and then I would start adding properties.

01:20:07.320 --> 01:20:13.420
And so the first property I would add is station ID.

01:20:13.920 --> 01:20:17.320
And I would say dollar dot station ID.

01:20:18.900 --> 01:20:24.600
And that should extract the ST003.

01:20:25.260 --> 01:20:28.180
And then this one I would have date.

01:20:28.400 --> 01:20:31.740
And then I would have on this one dollar dot date

01:20:32.340 --> 01:20:35.280
because it's looking at the JSON tree.

01:20:35.540 --> 01:20:37.880
So you can actually do like, you know,

01:20:37.900 --> 01:20:41.540
if this JSON document had embedded, you know,

01:20:41.980 --> 01:20:44.140
in the tree, in the hierarchy of the tree,

01:20:44.580 --> 01:20:47.380
if there were, you know, child nodes,

01:20:47.620 --> 01:20:49.480
you could drill down even more.

01:20:49.800 --> 01:20:51.720
But because everything's a top level,

01:20:51.720 --> 01:20:54.900
you can create a new property.

01:20:55.000 --> 01:20:57.100
There'll be a plus right here.

01:20:57.840 --> 01:21:03.120
Here, let me just, let me just cheat and show you.

01:21:15.300 --> 01:21:17.960
I want to send all of my JSON to this processor.

01:21:17.960 --> 01:21:22.500
Well, I would send the CSV I converted to this one.

01:21:22.500 --> 01:21:24.320
If the JSON is different,

01:21:24.320 --> 01:21:25.960
I would send it to another one.

01:21:26.500 --> 01:21:29.600
Instead of flow file content, I'd do flow file attribute.

01:21:30.960 --> 01:21:36.960
And I would do, let's see, station ID.

01:21:45.150 --> 01:21:53.950
ID, and then I would do dollar dot ID.

01:21:54.590 --> 01:21:56.170
That's the name of the field.

01:21:56.990 --> 01:21:58.450
Because it's going to look in your JSON

01:21:58.450 --> 01:22:00.010
and look at the field.

01:22:05.470 --> 01:22:08.910
Station ID, date, hour, okay.

01:22:09.570 --> 01:22:11.590
So then I would do the station ID.

01:22:11.650 --> 01:22:14.210
So it would extract the station ID.

01:22:15.210 --> 01:22:24.830
I would do the dollar dot date.

01:22:31.610 --> 01:22:32.310
Hour.

01:22:38.210 --> 01:22:39.930
So forth and so on.

01:22:39.930 --> 01:22:43.910
So what that would do is the JSON coming in

01:22:43.910 --> 01:22:46.930
would be read by this processor,

01:22:47.690 --> 01:22:50.490
and then it's going to extract those fields

01:22:50.490 --> 01:22:54.090
out of the JSON and save those as attributes.

01:22:54.590 --> 01:22:57.330
So now I no longer need to worry about the file.

01:22:57.670 --> 01:22:59.330
I just need to worry about the attributes.

01:23:00.590 --> 01:23:05.490
And from there, I could, you know,

01:23:05.550 --> 01:23:06.930
I can do a lot with attributes.

01:23:07.170 --> 01:23:09.690
I can.

01:23:13.850 --> 01:23:15.130
Let's see.

01:23:17.190 --> 01:23:18.750
What do I do next?

01:23:19.950 --> 01:23:21.450
Filter attribute.

01:23:23.170 --> 01:23:24.430
Maybe a filter.

01:23:31.450 --> 01:23:34.250
Let's see.

01:23:41.290 --> 01:23:45.990
Let's see how I would do this.

01:23:56.930 --> 01:24:00.870
I might be able to do this with an update attribute.

01:24:08.950 --> 01:24:10.690
I might be able to even use a scan.

01:24:12.890 --> 01:24:15.630
Let's see if I did update attribute.

01:24:17.090 --> 01:24:20.090
So everything coming out of the evaluate JSON path

01:24:20.090 --> 01:24:21.310
would be an attribute.

01:24:22.010 --> 01:24:24.570
Then if I did update attribute,

01:24:24.570 --> 01:24:26.630
I could.

01:24:27.410 --> 01:24:31.610
Let me think.

01:24:33.690 --> 01:24:41.090
Let me see here.

01:24:58.190 --> 01:25:00.990
Let's see.

01:25:11.950 --> 01:25:13.450
I'm thinking through this.

01:25:13.990 --> 01:25:20.370
After I have taken all the values,

01:25:20.570 --> 01:25:23.190
I've pushed them up as attributes.

01:25:24.150 --> 01:25:28.450
And so now I have a list of attributes per JSON document.

01:25:28.450 --> 01:25:40.110
And now I just need to manipulate those attributes.

01:25:51.450 --> 01:25:53.030
Let me think.

01:25:53.130 --> 01:25:53.610
Let me think.

01:25:53.610 --> 01:25:56.570
Let me think on the, I'll keep giving hints,

01:25:57.030 --> 01:25:59.390
but let me think how I would do this on this,

01:25:59.390 --> 01:26:01.330
this way we're doing it.

01:26:03.470 --> 01:26:07.490
Let me think on this.

01:26:07.490 --> 01:26:08.250
Let me think.

01:26:08.250 --> 01:26:15.130
Let me think on this.

01:26:15.130 --> 01:26:21.810
Let me think on this.

01:26:21.810 --> 01:26:51.790
Let me think on this.

01:26:51.790 --> 01:27:15.810
Let me think on this.

01:27:44.810 --> 01:27:47.810
Look up the attributes here.

01:27:48.350 --> 01:27:49.710
Let me see here.

01:27:57.170 --> 01:28:19.690
Let me think on this.

01:28:22.690 --> 01:28:25.370
Where were you at when you were putting in those properties?

01:28:29.910 --> 01:28:32.330
For the JSON evaluate?

01:28:34.690 --> 01:28:35.230
Yeah.

01:28:35.230 --> 01:28:35.610
Those?

01:28:37.190 --> 01:28:37.470
Yeah.

01:28:37.650 --> 01:28:38.150
Yeah.

01:28:38.150 --> 01:28:38.450
Okay.

01:28:38.530 --> 01:28:38.850
Yeah.

01:28:39.170 --> 01:28:41.210
So by following,

01:28:41.650 --> 01:28:45.170
if you're sticking to the previous example

01:28:45.170 --> 01:28:48.790
and not coming up with your own way,

01:28:49.770 --> 01:28:52.410
by following that example,

01:28:55.270 --> 01:28:58.170
I would skip setting the JSON file name

01:28:58.170 --> 01:29:00.930
and I would not do writing file directory.

01:29:01.430 --> 01:29:03.350
I would actually take it out of here.

01:29:03.650 --> 01:29:08.550
I would go to evaluate JSON.

01:29:09.010 --> 01:29:09.990
I would add that.

01:29:10.350 --> 01:29:12.150
Then in the evaluate JSON,

01:29:12.150 --> 01:29:15.190
I would extract the values.

01:29:16.790 --> 01:29:20.950
And then from there,

01:29:23.310 --> 01:29:25.710
and that's what I'm working on now, the next step.

01:29:26.490 --> 01:29:31.770
I would write a regular expression to calculate those,

01:29:32.290 --> 01:29:37.190
but I'm trying to think of another way besides a regular expression.

01:29:38.630 --> 01:29:39.290
Okay.

01:29:39.630 --> 01:29:42.190
Because I just think it would be a little easier if,

01:29:42.830 --> 01:29:45.930
like writing a regular expression would be the best way,

01:29:46.150 --> 01:29:48.150
but you know,

01:29:48.230 --> 01:29:51.490
and that's why I keep looking at the math regular expression.

01:29:54.550 --> 01:29:55.230
Oh, gotcha.

01:29:57.910 --> 01:30:00.450
We usually use Red Decks 101

01:30:00.450 --> 01:30:05.890
when we have to do regular expression type coding work.

01:30:05.890 --> 01:30:09.990
But I'm still, regular expressions still blow my mind,

01:30:10.330 --> 01:30:12.470
so it's still hard.

01:30:13.010 --> 01:30:13.710
Oh, yeah.

01:30:13.770 --> 01:30:15.010
Especially when you get complicated.

01:30:15.010 --> 01:30:15.550
It is.

01:30:15.630 --> 01:30:18.030
So you have to add the properties manually,

01:30:18.110 --> 01:30:22.430
because I don't see, like, example properties.

01:30:22.530 --> 01:30:25.730
Yeah, you're going to have zero properties, right?

01:30:26.570 --> 01:30:27.330
Okay, yeah.

01:30:27.410 --> 01:30:27.850
Right?

01:30:27.850 --> 01:30:29.090
So you're going to need to add,

01:30:29.170 --> 01:30:31.210
I mean, this is an exercise zone.

01:30:31.750 --> 01:30:34.690
Here's the name of the property and here's the value.

01:30:34.690 --> 01:30:37.550
And the dollar dot station ID,

01:30:37.590 --> 01:30:40.550
because all these values are top level,

01:30:40.890 --> 01:30:45.290
it's going to go look at station ID and extract that.

01:30:45.370 --> 01:30:46.350
That's what it should do.

01:30:46.370 --> 01:30:48.310
Let me double check to make sure.

01:30:48.970 --> 01:30:49.310
Okay.

01:30:49.630 --> 01:30:50.530
Thank you.

01:30:50.730 --> 01:30:52.210
No, let me match.

01:30:53.390 --> 01:30:53.730
Add.

01:30:56.950 --> 01:31:00.110
Let me test out my theory as well.

01:31:00.110 --> 01:31:16.330
So you're.

01:31:28.730 --> 01:31:32.550
All right, let me run this once.

01:31:41.150 --> 01:31:42.430
That's the only thing I was going to ask you.

01:31:42.430 --> 01:31:45.210
Is it normal for the active set schema to run

01:31:45.210 --> 01:31:46.710
with only one in the queue?

01:31:46.850 --> 01:31:49.370
That's when you get to CSV, you get two in the queue,

01:31:49.410 --> 01:31:51.430
and then you set the schema and then there's only one.

01:31:53.670 --> 01:31:55.210
At least for me there is.

01:31:57.310 --> 01:31:59.350
Well, you're picking up two CSVs.

01:31:59.370 --> 01:32:00.750
I think it was, right?

01:32:02.450 --> 01:32:02.670
Yeah.

01:32:02.870 --> 01:32:03.110
Yeah.

01:32:03.230 --> 01:32:04.290
Let me go back.

01:32:04.950 --> 01:32:05.390
Yeah.

01:32:05.630 --> 01:32:09.030
So you should get two JSON documents.

01:32:10.650 --> 01:32:11.090
Okay.

01:32:11.790 --> 01:32:12.190
Interesting.

01:32:13.910 --> 01:32:16.150
I'll take a look at that too in just a second.

01:32:16.450 --> 01:32:16.710
All right.

01:32:16.710 --> 01:32:17.410
So I got my.

01:32:17.790 --> 01:32:21.050
I want to see if my theory here works.

01:32:22.690 --> 01:32:23.010
Okay.

01:32:23.030 --> 01:32:24.030
I've matched.

01:32:24.830 --> 01:32:26.310
Well, this is my queue.

01:32:27.130 --> 01:32:29.110
And now my attributes.

01:32:32.410 --> 01:32:34.190
I should have.

01:32:37.750 --> 01:32:39.830
Take our empty string.

01:32:39.830 --> 01:32:42.830
Let me find out what I'm doing wrong.

01:32:57.070 --> 01:32:58.130
Well, why is this?

01:33:00.070 --> 01:33:02.310
Oh, well, of course it's not going to extract

01:33:02.310 --> 01:33:06.290
because I am not picking those files up.

01:33:07.230 --> 01:33:10.130
Let me go through and.

01:33:10.130 --> 01:33:13.650
I want to find my flow to get it to work.

01:34:07.470 --> 01:34:08.610
Oh, perfect.

01:34:22.490 --> 01:34:30.250
So I'm going to quickly walk through.

01:34:30.630 --> 01:34:33.950
It sounds like most of you are building your flow.

01:34:44.970 --> 01:34:47.530
Yeah, I'm a, I'm a keep it simple guy.

01:34:48.150 --> 01:34:50.050
So the simpler the better.

01:34:50.650 --> 01:34:53.950
I would always approach anything like this, but.

01:34:54.610 --> 01:34:55.310
I get it.

01:34:55.630 --> 01:34:56.230
I will.

01:34:56.350 --> 01:35:00.770
I a hundred percent would not try to get fancy out of the right off the bat.

01:35:00.770 --> 01:35:02.850
I would be like minimum required.

01:35:02.890 --> 01:35:03.590
Were your requirements?

01:35:03.710 --> 01:35:04.710
Okay, here you go.

01:35:04.730 --> 01:35:05.370
Meet the minimum.

01:35:05.750 --> 01:35:07.070
And then go from there.

01:35:07.210 --> 01:35:10.270
Well, and I was actually expecting some of that,

01:35:10.490 --> 01:35:13.730
but it seems like everybody just took the previous example

01:35:13.730 --> 01:35:16.310
and worked all of that because, you know,

01:35:16.450 --> 01:35:20.210
you could actually have done this without any controller service.

01:35:21.190 --> 01:35:22.970
And it'd been a little bit easier.

01:35:27.110 --> 01:35:35.270
Oh, yeah, but it would have been a lot more processes though.

01:35:35.390 --> 01:35:36.990
I released more processes.

01:35:37.050 --> 01:35:40.550
It would have been more processors, but less logic.

01:35:42.130 --> 01:35:42.490
Okay.

01:35:42.790 --> 01:35:44.350
Oh, that's how I started building it out.

01:35:44.450 --> 01:35:47.270
And you saw all the processes I had on my canvas

01:35:47.270 --> 01:35:49.250
at the start when you first were looking at mine.

01:35:49.250 --> 01:35:52.570
I had so many because I was taking your documents literally.

01:35:52.750 --> 01:35:55.250
I was like, okay, then do this, now extract this.

01:35:55.970 --> 01:35:56.050
Yeah.

01:35:56.050 --> 01:35:56.450
Do you know what I mean?

01:35:56.550 --> 01:35:59.730
Like each little piece I was creating a processor for.

01:36:00.150 --> 01:36:13.590
No, it was purely an example of getting us started on the scenario,

01:36:13.590 --> 01:36:16.850
but you could have went any direction.

01:36:19.350 --> 01:36:19.870
Okay.

01:36:20.050 --> 01:36:21.130
So I need to go.

01:36:21.450 --> 01:36:25.250
Then I would have had a canvas full processor.

01:36:26.210 --> 01:36:27.950
It looks ugly probably too.

01:36:30.050 --> 01:36:32.970
Yes, but then you wouldn't have had to deal with Avro schemas.

01:36:33.130 --> 01:36:35.470
You wouldn't have had to deal with controller services,

01:36:36.890 --> 01:36:38.030
you know, all those.

01:36:38.030 --> 01:36:41.730
So, but either way, we'll get it going.

01:36:44.170 --> 01:36:47.050
And like I said, this is the hardest lift.

01:36:47.410 --> 01:36:52.070
Tomorrow will be a lot easier for the most part.

01:36:52.070 --> 01:37:05.130
All right, disabled.

01:37:09.390 --> 01:37:10.390
That's right.

01:37:26.570 --> 01:37:33.390
I am going to copy yours.

01:37:33.390 --> 01:37:34.170
Yours.

01:37:44.970 --> 01:37:46.370
Okay.

01:38:06.370 --> 01:38:07.690
That's better.

01:38:33.490 --> 01:38:36.290
All right.

01:38:36.290 --> 01:38:38.010
Looks good.

01:38:38.010 --> 01:38:39.330
Okay.

01:38:39.330 --> 01:38:41.050
Let's see.

01:39:12.770 --> 01:39:14.990
Getting it.

01:39:14.990 --> 01:39:21.590
Let's take a look at the new one there.

01:39:23.070 --> 01:39:24.470
Okay.

01:39:24.470 --> 01:39:25.190
Okay.

01:39:25.190 --> 01:39:25.590
Let's see.

01:40:06.310 --> 01:40:07.270
Hey, Josh.

01:40:09.350 --> 01:40:10.850
I'm trying to do this.

01:40:10.850 --> 01:40:15.130
It's probably maybe not the right approach, but could you take a look at mine?

01:40:16.870 --> 01:40:28.910
I got to get Jason from directory one for reading the, getting the CSVs and one for getting the Jason, but the one for being Jason files, it's not working.

01:40:29.870 --> 01:40:31.770
Okay, let's look at this.

01:40:33.310 --> 01:40:34.030
So, yeah, let's go.

01:40:34.030 --> 01:40:35.890
When I run, it doesn't really work.

01:40:35.890 --> 01:40:38.630
I don't know where it says go figure.

01:40:43.850 --> 01:40:48.110
Put instead of Jason put dot star.

01:40:48.430 --> 01:40:50.130
Just put change Jason to star.

01:40:52.530 --> 01:41:01.910
Yeah, see if that like grabs files first, because we want to test our rejects pattern first, because that's what I was having just having an issue.

01:41:01.910 --> 01:41:03.390
Go ahead real once.

01:41:06.050 --> 01:41:06.930
And then refresh.

01:41:10.910 --> 01:41:12.690
Four. So, yes.

01:41:14.990 --> 01:41:18.490
So that's what I was just actually setting up.

01:41:20.730 --> 01:41:29.850
And, you know, what I am going to do is how I'm going to, like, I was just literally doing the same thing.

01:41:30.210 --> 01:41:40.890
So what I'm planning to do to solve this, this problem is I am going to, so I get, I'm going to get everything.

01:41:41.370 --> 01:41:44.310
I'm going to apply a model to it no matter what.

01:41:45.030 --> 01:41:48.790
And then I am going to.

01:41:50.650 --> 01:41:54.590
Well, I wasn't planning to build this flow with you all.

01:41:54.590 --> 01:41:56.970
That's going to help you, but we will knock it out.

01:41:58.230 --> 01:42:00.950
So I am going to get the file.

01:42:02.570 --> 01:42:04.570
No, I'm actually not even going to do that.

01:42:05.810 --> 01:42:11.490
I am going to get the file, and I am going to route on an attribute.

01:42:16.150 --> 01:42:19.190
Let me check to make sure that this route.

01:42:26.310 --> 01:42:27.290
Route on an attribute.

01:42:31.070 --> 01:42:33.630
I was trying to do that too.

01:42:34.130 --> 01:42:38.370
Like send CSV to one branch and send JSON to the other.

01:42:38.570 --> 01:42:40.530
You got it. You got it.

01:42:40.810 --> 01:42:42.790
But it wasn't picking up JSON.

01:42:43.550 --> 01:42:46.230
Oh, no worries. Well, we are going to pick everything up on this.

01:42:46.310 --> 01:42:54.290
So I am going to change this to, this name should be get all.

01:42:54.290 --> 01:42:57.670
All files.

01:42:59.750 --> 01:43:00.370
From a directory.

01:43:01.350 --> 01:43:01.970
Okay.

01:43:02.250 --> 01:43:04.170
And I want to do route on attribute.

01:43:06.290 --> 01:43:10.670
And I am going to go to route.

01:43:12.150 --> 01:43:17.090
Route to property name.

01:43:17.090 --> 01:43:18.470
Say okay.

01:43:18.830 --> 01:43:22.790
And then I am going to say CSV.

01:43:24.390 --> 01:43:25.710
I am going to say okay.

01:43:26.010 --> 01:43:31.310
And then I am going to go with dollar curly brace.

01:43:31.750 --> 01:43:40.230
File name ends with CSV.

01:43:42.730 --> 01:43:44.430
And then close that.

01:43:45.110 --> 01:43:45.710
Okay.

01:43:45.970 --> 01:43:48.990
File name ends with CSV is going to go one way.

01:43:53.010 --> 01:43:57.430
And then I am going to add another one that says JSON.

01:44:01.490 --> 01:44:07.030
And I am going to say if the file name ends in JSON.

01:44:09.470 --> 01:44:10.070
Okay.

01:44:10.650 --> 01:44:11.830
I am going to apply.

01:44:12.570 --> 01:44:19.930
And then I am going to take this and I should have a CSV relationship.

01:44:21.970 --> 01:44:22.310
All right.

01:44:22.510 --> 01:44:24.950
And then JSON relationship.

01:44:25.490 --> 01:44:26.790
I will get the JSON document.

01:44:27.030 --> 01:44:29.290
I will send it here.

01:44:31.210 --> 01:44:32.610
I will send JSON there.

01:44:33.630 --> 01:44:35.530
I don't need this success.

01:44:37.330 --> 01:44:38.770
You guys are putting me on the spot.

01:44:38.770 --> 01:44:40.490
I've got to build on demand.

01:44:42.770 --> 01:44:45.670
And then I am going to.

01:44:52.630 --> 01:44:54.070
It's not matched.

01:44:54.250 --> 01:44:57.690
I am going to just log the message on unmatched.

01:44:58.690 --> 01:45:01.590
And okay.

01:45:02.530 --> 01:45:04.610
What am I missing here?

01:45:09.830 --> 01:45:13.170
My regular expression is not right somewhere.

01:45:41.990 --> 01:45:44.870
Oh, it's contains.

01:46:08.070 --> 01:46:09.870
Contains is valid.

01:46:13.530 --> 01:46:14.930
Apply.

01:46:20.330 --> 01:46:21.030
I mean.

01:46:32.690 --> 01:46:36.410
Oh, no, no, no.

01:46:51.690 --> 01:46:53.090
Okay.

01:46:58.410 --> 01:46:59.210
Perfect.

01:46:59.210 --> 01:47:00.650
Okay.

01:47:00.650 --> 01:47:03.690
So let me empty my queue.

01:47:09.130 --> 01:47:09.710
All right.

01:47:11.950 --> 01:47:13.210
That's getting weather data.

01:47:14.090 --> 01:47:15.970
It's getting everything from weather data.

01:47:18.770 --> 01:47:20.050
Run this once.

01:47:21.170 --> 01:47:23.050
I should have.

01:47:23.710 --> 01:47:25.770
You files in my queue.

01:47:29.030 --> 01:47:31.470
We have two CSVs in the JSON.

01:47:31.630 --> 01:47:33.050
There we go.

01:47:33.930 --> 01:47:36.050
So I picked everything up.

01:47:42.710 --> 01:47:49.150
It's in CSV where it needed to go.

01:47:52.190 --> 01:47:54.830
It's in JSON where it needed to go.

01:47:56.890 --> 01:48:00.970
And the last CSV it sent where it needed to go.

01:48:01.350 --> 01:48:01.650
Okay.

01:48:01.990 --> 01:48:03.350
So how I.

01:48:03.610 --> 01:48:05.510
Did you see how I accomplished it?

01:48:08.230 --> 01:48:09.330
Yeah, I did.

01:48:09.810 --> 01:48:10.490
I saw that.

01:48:10.830 --> 01:48:13.290
But it's still not picking up my files.

01:48:13.430 --> 01:48:14.530
I have no idea why.

01:48:18.010 --> 01:48:19.050
Let's look.

01:48:21.070 --> 01:48:21.850
Oh, wait.

01:48:22.250 --> 01:48:23.570
Let's change it.

01:48:23.990 --> 01:48:24.710
Oh, yeah.

01:48:25.550 --> 01:48:25.770
Yeah.

01:48:26.330 --> 01:48:28.270
Instead of doing a file filter there.

01:48:28.670 --> 01:48:31.270
Let's just round it based upon.

01:48:32.270 --> 01:48:36.230
You can actually do a round with the file name ends as well.

01:48:38.990 --> 01:48:40.010
But yeah.

01:48:40.110 --> 01:48:41.910
I mean, this is one way to do it.

01:48:41.910 --> 01:48:42.450
Right.

01:48:43.010 --> 01:48:44.010
So yeah.

01:48:44.210 --> 01:48:46.430
So you can route an attribute.

01:48:46.450 --> 01:48:46.870
Okay.

01:48:46.990 --> 01:48:47.130
Good.

01:48:47.430 --> 01:48:51.370
And then on your route on attribute, go ahead and configure it.

01:48:52.490 --> 01:48:55.170
Can I send unmatched to lock errors?

01:48:55.470 --> 01:48:56.330
Yes, ma'am.

01:48:56.330 --> 01:48:56.930
That's perfect.

01:48:58.250 --> 01:48:58.650
Okay.

01:48:58.970 --> 01:48:59.930
Oh, and I think you're.

01:49:01.310 --> 01:49:01.450
Yeah.

01:49:01.590 --> 01:49:03.910
Go ahead and run once and then run once again.

01:49:04.010 --> 01:49:05.410
Because you got three or four files.

01:49:05.430 --> 01:49:07.210
So you want to make sure that they separated.

01:49:08.350 --> 01:49:08.750
Okay.

01:49:09.350 --> 01:49:11.230
Run it again because they're CSV.

01:49:11.630 --> 01:49:15.590
Oh, you have to run it twice to get to both the CSVs to show up.

01:49:15.710 --> 01:49:16.170
You do.

01:49:16.330 --> 01:49:16.730
Because.

01:49:17.250 --> 01:49:18.550
Oh, just say Q once.

01:49:18.670 --> 01:49:18.930
Okay.

01:49:19.050 --> 01:49:19.530
I see what you're saying.

01:49:19.650 --> 01:49:19.950
Yeah.

01:49:20.270 --> 01:49:24.210
Because, you know, you run the get files and they picked everything up.

01:49:24.990 --> 01:49:27.310
But then you've got four files.

01:49:27.410 --> 01:49:27.970
Okay.

01:49:28.130 --> 01:49:29.650
Looks like it worked for you.

01:49:29.670 --> 01:49:31.830
You got JSON one way, CSV another.

01:49:31.950 --> 01:49:32.430
Perfect.

01:49:34.130 --> 01:49:34.610
Thank you.

01:49:34.870 --> 01:49:35.470
You're welcome.

01:49:37.750 --> 01:49:38.190
Okay.

01:49:38.470 --> 01:49:40.790
I might as well finish building up my flow.

01:49:49.830 --> 01:49:52.390
Oh, my God.

01:50:14.110 --> 01:50:15.510
CSVs.

01:50:15.510 --> 01:50:16.730
Weather.

01:50:16.730 --> 01:50:18.670
Okay.

01:50:18.670 --> 01:50:19.870
Okay.

01:50:29.730 --> 01:50:31.130
Okay.

01:50:44.670 --> 01:50:46.070
Okay.

01:50:56.810 --> 01:50:58.210
Okay.

01:51:08.110 --> 01:51:09.510
Okay.

01:51:33.390 --> 01:51:34.790
Okay.

01:51:34.790 --> 01:51:36.270
CSVs.

01:51:53.230 --> 01:51:54.630
Okay.

01:52:04.810 --> 01:52:06.210
Okay.

01:52:16.330 --> 01:52:17.730
Okay.

01:52:31.450 --> 01:52:32.850
Okay.

01:52:45.890 --> 01:52:47.290
Okay.

01:52:57.030 --> 01:52:58.430
Okay.

01:53:15.750 --> 01:53:17.150
Okay.

01:53:32.090 --> 01:53:32.150
Okay.

01:53:33.490 --> 01:53:34.570
This is okay.

01:53:37.730 --> 01:53:47.830
So if you're watching what I'm doing, I've got my flow set up where it's picking everything up.

01:53:47.950 --> 01:53:52.490
It's routing JSON one way, CSV another way.

01:53:53.530 --> 01:54:03.370
The CSV is getting routed to my convert record from the previous flow and then going back to my evaluate JSON path.

01:54:03.370 --> 01:54:15.970
The problem now that I'm running into is it extracted the values as an attribute, but it's only extracting one value from the JSON document.

01:54:16.010 --> 01:54:18.890
So I actually now need to split the JSON records.

01:54:19.790 --> 01:54:29.410
And that way I get all the attributes for each hour of the day.

01:54:29.410 --> 01:54:33.670
So if you're following along, that's where I'm at.

01:54:34.850 --> 01:54:38.710
And I'm about to, you know, I'm about to split these records.

01:54:39.550 --> 01:54:45.050
So what I like to do is

01:54:51.570 --> 01:54:53.530
I'm going to split the JSON.

01:54:58.170 --> 01:55:00.710
This is going to be a spider web.

01:55:15.710 --> 01:55:17.430
Go away.

01:55:20.270 --> 01:55:21.670
Okay.

01:55:35.410 --> 01:55:36.810
Okay.

01:55:46.510 --> 01:55:47.910
Okay.

01:55:58.210 --> 01:55:59.610
Okay.

01:56:13.090 --> 01:56:14.490
Okay.

01:56:24.270 --> 01:56:25.670
Okay.

01:56:38.810 --> 01:56:40.210
Okay.

01:56:53.550 --> 01:56:54.950
Okay.

01:57:05.010 --> 01:57:06.410
Okay.

01:57:19.990 --> 01:57:21.390
Okay.

01:57:31.290 --> 01:57:32.690
Okay.

01:57:42.690 --> 01:57:44.090
Okay.

01:58:00.630 --> 01:58:02.030
Okay.

01:58:15.410 --> 01:58:16.810
Okay.

01:58:30.190 --> 01:58:31.590
Okay.

01:58:44.650 --> 01:58:46.050
Okay.

01:58:59.590 --> 01:59:00.990
Okay.

01:59:29.230 --> 01:59:30.630
Okay.

01:59:41.490 --> 01:59:42.890
Okay.

01:59:56.330 --> 01:59:57.730
Okay.

01:59:59.330 --> 02:00:00.730
Okay.

02:00:08.990 --> 02:00:10.390
Okay.

02:00:21.770 --> 02:00:23.170
Okay.

02:00:23.170 --> 02:00:24.750
Okay.

02:00:27.870 --> 02:00:29.270
Okay.

02:00:29.270 --> 02:00:36.210
So from one JSON document, I should, you know, I got 24 records, which 24 hours of the day.

02:00:36.710 --> 02:00:41.310
And if I look, it should just be one record.

02:00:42.310 --> 02:00:49.470
So from there, I will, I'm going to evaluate the JSON path.

02:00:49.570 --> 02:00:51.430
Let me run this.

02:01:00.810 --> 02:01:04.510
And now everything should be an attribute.

02:01:08.670 --> 02:01:09.270
Yep.

02:01:10.850 --> 02:01:15.870
So I was able to pick all the, pick all the files up.

02:01:15.950 --> 02:01:27.210
If they were not a JSON, I made them JSON, took all the JSON, extracted each individual record, and then pushed the single record to the evaluate JSON path.

02:01:27.210 --> 02:01:29.250
I extracted all the values.

02:01:30.670 --> 02:01:33.070
And now I have all the values as an attribute.

02:01:34.870 --> 02:01:44.190
From there, then I need to put in some logic to, to, you know, what, what is an alert and then send the alert.

02:01:44.290 --> 02:01:46.090
So I'm almost done.

02:01:47.050 --> 02:01:52.450
Hopefully you all, you were able to follow along and or do it your own way.

02:01:55.450 --> 02:01:57.090
And, and go from there.

02:01:57.430 --> 02:02:00.430
But we'll, we'll give it a few more minutes.

02:02:01.010 --> 02:02:03.050
Then we'll take a quick break.

02:02:04.010 --> 02:02:05.710
Our last final break of the day.

02:02:06.010 --> 02:02:09.650
We'll come back and try to finish up what we can.

02:02:10.730 --> 02:02:18.650
What we may do tomorrow is just kind of walk through, everybody walk through their flow and what they were thinking in the morning.

02:02:18.890 --> 02:02:24.170
And then give you extra time after class to touch up anything you want to touch up.

02:02:25.290 --> 02:02:28.250
But if you have any questions, you know, just speak up.

02:02:28.430 --> 02:02:29.250
I'm here.

02:02:29.250 --> 02:02:34.430
Now I'm going to figure out how I'm going to design the rest of this flow.

02:02:44.070 --> 02:02:47.250
And I'm already 11 processors into this.

02:03:12.630 --> 02:03:14.030
Okay.

02:03:42.770 --> 02:03:44.170
Okay.

02:04:15.810 --> 02:04:17.210
Okay.

02:04:42.730 --> 02:04:44.130
Okay.

02:05:14.990 --> 02:05:16.390
Okay.

02:05:42.730 --> 02:05:44.130
Okay.

02:06:04.470 --> 02:06:04.710
Okay.

02:06:44.990 --> 02:06:46.390
Okay.

02:07:15.130 --> 02:07:16.530
Okay.

02:07:44.990 --> 02:07:46.390
Okay.

02:08:18.270 --> 02:08:22.870
Anyone stuck, have any questions?

02:08:23.890 --> 02:08:34.870
I'm where I'm at on my flow is I am working on calculating the values, utilizing processors that we have here.

02:08:37.350 --> 02:08:42.770
But, but, you know, if anyone else is stuck or having questions, please let me know.

02:08:43.070 --> 02:08:46.470
If not, we'll take our final break of the day.

02:08:46.470 --> 02:08:55.990
We'll just take a few minutes and just take a quick bio break and grab something to drink and then try to finish up as much as we can today.

02:08:56.490 --> 02:09:05.570
So we can start off tomorrow going through these flows and finish up with some registry and other topics.

02:09:06.890 --> 02:09:09.210
So does anybody have any questions right now?

02:09:10.390 --> 02:09:11.070
I did.

02:09:11.150 --> 02:09:16.410
I was pretty lost and I was just learning where should I start it.

02:09:16.510 --> 02:09:20.630
I don't think I can get the final reading right.

02:09:21.850 --> 02:09:22.290
Okay.

02:09:22.590 --> 02:09:24.110
Let's take a look at it.

02:09:24.450 --> 02:09:34.010
Again, if anybody gets stopped, a hurdle blocked, anything, you know, please speak up immediately because I want to get you over that hurdle so we can get these complete.

02:09:35.010 --> 02:09:35.970
But let's look at yours.

02:09:39.810 --> 02:09:40.250
Okay.

02:09:41.710 --> 02:09:50.510
So, you know, on this one, you can, you can do a file filter.

02:09:50.690 --> 02:09:52.470
Did you look at the red text expression?

02:09:54.170 --> 02:09:54.630
Or the unknown?

02:09:57.930 --> 02:10:02.870
The, for, for, you know, the, the file extension, right?

02:10:03.490 --> 02:10:09.470
So if you want to do, go ahead and get, go back to your other one because I figured this out earlier.

02:10:10.430 --> 02:10:12.710
No, go back to where you just were.

02:10:13.850 --> 02:10:14.230
All right.

02:10:14.230 --> 02:10:15.630
And so you want to do CSV.

02:10:16.130 --> 02:10:17.930
So modify that.

02:10:18.450 --> 02:10:21.950
Take out CSV, but leave the rest, but take out CSV.

02:10:22.870 --> 02:10:29.950
And do dot asterisk backslash dot CSV and say, okay.

02:10:31.030 --> 02:10:32.870
Say apply.

02:10:33.550 --> 02:10:33.950
See if that works.

02:10:35.330 --> 02:10:36.130
Run once.

02:10:40.070 --> 02:10:40.950
I got put in the right folder.

02:10:44.350 --> 02:10:50.410
I don't think you need that backslash before dot CSV do you?

02:10:51.150 --> 02:10:51.970
Oh, I see.

02:10:52.170 --> 02:10:52.410
Take that.

02:10:52.410 --> 02:10:52.610
Yeah.

02:10:52.630 --> 02:10:53.630
Take that backslash out.

02:10:53.910 --> 02:10:54.830
You may not need that.

02:10:54.850 --> 02:10:55.570
Take it out.

02:10:56.090 --> 02:10:57.330
I'm just matching the other.

02:10:57.450 --> 02:10:58.510
Go ahead and say, okay.

02:10:58.590 --> 02:11:00.030
And see if that works.

02:11:01.370 --> 02:11:02.310
Run that once.

02:11:04.450 --> 02:11:08.130
I think you may take one you thought of.

02:11:10.010 --> 02:11:16.490
Well, I think it might be star dot CSV after the bracket, I think.

02:11:16.850 --> 02:11:17.130
Yeah.

02:11:17.130 --> 02:11:17.930
Go back one.

02:11:18.070 --> 02:11:18.310
There you go.

02:11:18.350 --> 02:11:18.950
Refresh.

02:11:21.690 --> 02:11:22.030
Yeah.

02:11:22.570 --> 02:11:23.390
Hang on.

02:11:25.390 --> 02:11:27.770
Let me look at mine.

02:11:28.250 --> 02:11:33.070
Well, let me work on my local version here and fix it.

02:11:39.930 --> 02:11:40.990
What would happen?

02:11:40.990 --> 02:11:46.870
Can you go back to your rejects there?

02:11:47.790 --> 02:11:51.950
And let's do take open that and do a asterisk.

02:11:52.410 --> 02:11:53.250
Yeah.

02:11:53.290 --> 02:11:54.070
Start fresh.

02:11:54.410 --> 02:11:54.970
Start fresh.

02:11:55.530 --> 02:12:00.990
So do an asterisk frontslash the other one.

02:12:01.910 --> 02:12:02.370
Backslash.

02:12:02.490 --> 02:12:06.150
I mean dot CSV.

02:12:06.450 --> 02:12:06.650
All right.

02:12:06.750 --> 02:12:08.150
See if that will.

02:12:08.150 --> 02:12:11.870
Trying to remember the apply the file filter.

02:12:11.870 --> 02:12:13.910
Go ahead and try running that once.

02:12:14.210 --> 02:12:15.530
No, it's already telling you.

02:12:15.530 --> 02:12:17.990
It's already telling you it's wrong.

02:12:18.450 --> 02:12:21.970
What I did and what worked for me.

02:12:22.370 --> 02:12:23.590
Oh, you rock.

02:12:25.070 --> 02:12:26.510
Oh, there you go.

02:12:28.250 --> 02:12:32.130
Well, that's what I had a minute ago was the slash dot.

02:12:32.670 --> 02:12:34.530
He had asterisk instead of the up carry.

02:12:35.290 --> 02:12:36.370
Oh, I see.

02:12:36.610 --> 02:12:36.710
I see.

02:12:37.390 --> 02:12:38.970
I didn't see that part.

02:12:39.010 --> 02:12:39.450
Okay.

02:12:39.590 --> 02:12:40.170
That worked.

02:12:40.330 --> 02:12:40.790
Awesome.

02:12:41.470 --> 02:12:47.890
And then when I was going over it, here's how I approached it.

02:12:52.290 --> 02:12:54.250
So come on.

02:12:55.950 --> 02:13:02.950
So when they asked the question, what I did is I was getting all files and sending everything.

02:13:02.950 --> 02:13:05.070
And then I did a route on attribute.

02:13:06.110 --> 02:13:12.090
And I said, you know, the file name contains CSV or the file name contains JSON.

02:13:13.310 --> 02:13:16.010
And then if it's JSON, it goes here.

02:13:16.230 --> 02:13:17.730
If it's CSV, it goes here.

02:13:18.090 --> 02:13:19.790
But you should be good to go.

02:13:21.670 --> 02:13:23.650
Yeah, I like the way you're doing it now.

02:13:23.890 --> 02:13:24.370
I prefer to do that way.

02:13:24.790 --> 02:13:28.410
But I got lost in the sauce too when I tried to do it on my own sauce.

02:13:28.410 --> 02:13:33.170
I've kind of just, I don't want to say given up.

02:13:35.110 --> 02:13:36.490
Well, let's not give up.

02:13:36.810 --> 02:13:38.430
Let's see where you're at.

02:13:39.390 --> 02:13:46.510
I mean, I just think, you know, like some of these flows require extensive knowledge and or experience.

02:13:47.450 --> 02:13:51.270
But the platform, if you're not there, you're just going to struggle, honestly.

02:13:51.510 --> 02:13:51.810
Yeah.

02:13:51.850 --> 02:13:54.050
Well, this scenario, you're going to struggle.

02:13:55.050 --> 02:14:04.130
And that's why I keep asking, like, please, if you get stuck, ask me a question because I want to help you through.

02:14:04.270 --> 02:14:08.870
Because once you get through this, creating other flows would be a lot easier.

02:14:09.390 --> 02:14:13.270
So you are routing on attribute, right?

02:14:15.490 --> 02:14:18.310
Yeah, I like that approach after you were talking with that.

02:14:19.270 --> 02:14:26.690
Yeah, it's a better approach because if you use a file, that way you pick everything up to begin with, right?

02:14:26.990 --> 02:14:33.950
And you don't have to have another file just to pick up CSV, another file for JSON.

02:14:34.390 --> 02:14:37.670
You just pick everything up at once and start sorting and filtering.

02:14:38.930 --> 02:14:40.630
OK, so you've got the route.

02:14:41.490 --> 02:14:42.930
I actually started out.

02:14:43.150 --> 02:14:44.110
That's how I started.

02:14:44.110 --> 02:14:50.070
And then I backtracked and was trying to keep it simple using what we had already done.

02:14:50.350 --> 02:14:55.050
And then then you maybe changed my mind again when you actually was working with that.

02:14:55.310 --> 02:14:57.990
So I was like, no worries, no worries.

02:14:58.170 --> 02:14:59.750
OK, so you got route on attribute.

02:14:59.850 --> 02:15:03.670
So are your CSVs and JSONs going where they need to go?

02:15:06.530 --> 02:15:08.130
And then you clear the queue if you want.

02:15:08.130 --> 02:15:17.570
And then your CSVs are basically going to follow the same example as you uploaded in the previous, right?

02:15:18.350 --> 02:15:20.510
So we're going to go here and then down to here.

02:15:20.530 --> 02:15:20.750
Yep.

02:15:21.110 --> 02:15:23.070
We're still converting everything to JSON, right?

02:15:23.130 --> 02:15:26.770
We're still converting CVS files to JSON files, right?

02:15:26.830 --> 02:15:27.370
Correct.

02:15:27.990 --> 02:15:28.950
So format, whatever.

02:15:29.070 --> 02:15:31.610
Yeah, so you can get to a common format, right?

02:15:33.750 --> 02:15:38.870
So and that's, you know, and so you are routing on attribute, the JSON.

02:15:39.050 --> 02:15:40.190
You're sending it to the JSON.

02:15:40.390 --> 02:15:41.310
You're sending CSV.

02:15:41.630 --> 02:15:43.130
You're going to update the attribute.

02:15:43.350 --> 02:15:45.210
You're going to assign it a schema.

02:15:47.130 --> 02:15:48.710
Did you use Peter's schema?

02:15:51.810 --> 02:15:54.270
Yeah, well, yeah, for the most part, yeah.

02:15:54.390 --> 02:15:55.390
I'll look at it real quick.

02:15:55.550 --> 02:15:55.990
Yeah.

02:15:56.310 --> 02:15:58.210
Well, you'll have to go into the convert record.

02:15:58.970 --> 02:15:59.830
Oh, yeah, this one.

02:16:00.050 --> 02:16:00.410
Yeah, sorry.

02:16:00.410 --> 02:16:01.490
No worries.

02:16:02.550 --> 02:16:05.170
And so let's look at your CSV reader and writer.

02:16:06.450 --> 02:16:07.350
It's enabled.

02:16:07.590 --> 02:16:09.850
But go ahead and go to that one there.

02:16:11.050 --> 02:16:12.070
And you have the weather.

02:16:12.350 --> 02:16:14.910
Is that the same as Peter's?

02:16:15.310 --> 02:16:15.690
Basically.

02:16:16.570 --> 02:16:16.990
Okay.

02:16:18.490 --> 02:16:19.050
Okay.

02:16:19.910 --> 02:16:20.250
Okay.

02:16:20.330 --> 02:16:20.770
Say okay.

02:16:20.790 --> 02:16:23.890
It's a little bit off center, but I actually still work.

02:16:25.010 --> 02:16:25.470
All right.

02:16:25.470 --> 02:16:28.610
And you did not put the final.

02:16:29.550 --> 02:16:30.330
You're fine.

02:16:30.390 --> 02:16:32.570
I can see it.

02:16:33.130 --> 02:16:33.330
Okay.

02:16:33.570 --> 02:16:34.310
Say okay.

02:16:35.690 --> 02:16:35.990
Okay.

02:16:36.650 --> 02:16:37.410
And then exit out of that.

02:16:37.530 --> 02:16:39.150
Looks like all that's enabled and running.

02:16:41.490 --> 02:16:45.690
So where are you putting your success once you.

02:16:45.930 --> 02:16:49.750
Because I had something here and I got rid of this.

02:16:49.830 --> 02:16:51.690
I need to still link this to something.

02:16:51.890 --> 02:16:52.230
Yeah.

02:16:52.570 --> 02:16:53.670
So you want to probably.

02:16:55.370 --> 02:16:57.370
You can split the.

02:16:57.530 --> 02:17:01.230
You can do a split before you evaluate your JSON path.

02:17:02.210 --> 02:17:03.510
If you won't.

02:17:03.670 --> 02:17:05.670
So that's what I did is.

02:17:07.830 --> 02:17:09.510
I went to the split JSON.

02:17:10.970 --> 02:17:13.530
And I just split on every record.

02:17:13.750 --> 02:17:15.570
So it's dollar dot star.

02:17:15.890 --> 02:17:17.570
So that splits on every record.

02:17:19.530 --> 02:17:20.590
And so, yep.

02:17:20.750 --> 02:17:22.670
And then split JSON, configure it.

02:17:22.670 --> 02:17:25.930
And then the JSON expression was dollar dot star.

02:17:27.130 --> 02:17:27.470
Okay.

02:17:27.970 --> 02:17:28.930
That's that's okay.

02:17:30.130 --> 02:17:30.650
Astric.

02:17:31.650 --> 02:17:32.250
There you go.

02:17:33.130 --> 02:17:33.650
Okay.

02:17:33.910 --> 02:17:34.550
Say apply.

02:17:36.050 --> 02:17:36.370
All right.

02:17:36.370 --> 02:17:38.350
And then you've got your splits.

02:17:40.290 --> 02:17:42.330
You hover over your split JSON.

02:17:42.430 --> 02:17:43.130
What are we missing?

02:17:43.390 --> 02:17:44.490
We have success.

02:17:44.510 --> 02:17:45.370
We have split.

02:17:45.770 --> 02:17:46.290
Failure.

02:17:46.590 --> 02:17:48.230
I got to send it to the log.

02:17:48.530 --> 02:17:49.910
There's logs right there in the middle.

02:17:49.910 --> 02:17:51.810
Send it to it right quick.

02:17:54.210 --> 02:17:55.210
There you go.

02:17:56.390 --> 02:17:59.530
And then you can actually just right click on log error message.

02:17:59.810 --> 02:18:02.070
Copy and then paste right beside it.

02:18:02.070 --> 02:18:03.830
And that's where you want to send your original.

02:18:05.010 --> 02:18:05.850
For now.

02:18:07.070 --> 02:18:10.450
So this right click, say paste right there.

02:18:15.390 --> 02:18:15.850
There you go.

02:18:16.010 --> 02:18:17.110
And then drag and drop.

02:18:17.150 --> 02:18:18.110
So you get your original.

02:18:18.110 --> 02:18:19.930
There you go.

02:18:20.290 --> 02:18:22.630
Walking me through it makes it seem like it's a lot easier.

02:18:25.630 --> 02:18:27.730
Well, I get it though.

02:18:28.150 --> 02:18:29.150
And again, right.

02:18:29.250 --> 02:18:30.270
That's why I keep warning.

02:18:30.630 --> 02:18:32.230
This one's a hard one.

02:18:32.510 --> 02:18:36.190
But we've got to learn, you know, controller services.

02:18:36.370 --> 02:18:38.970
We've got to learn some of the concepts.

02:18:39.430 --> 02:18:42.550
And this brings in multiple concepts.

02:18:42.690 --> 02:18:44.490
It brings in controller services.

02:18:44.650 --> 02:18:46.390
It brings in regex expressions.

02:18:46.390 --> 02:18:50.310
It brings route on attribute and attribute manipulation.

02:18:50.830 --> 02:18:54.910
This scenario is set up to test all the parts.

02:18:55.270 --> 02:18:59.490
But again, you know, some of these parts you're just being exposed to.

02:19:00.130 --> 02:19:01.710
And so that's where you.

02:19:01.950 --> 02:19:03.270
Hey, Josh, just a second.

02:19:03.450 --> 02:19:04.510
Where do I do this?

02:19:04.830 --> 02:19:05.890
And that's what we're doing now.

02:19:06.710 --> 02:19:07.650
So say apply.

02:19:07.890 --> 02:19:08.890
But I think also.

02:19:09.210 --> 02:19:11.970
But I also think knowing what you put in for some of these values.

02:19:11.970 --> 02:19:16.050
It's also, you know, I mean, it's like it might be in the document.

02:19:16.230 --> 02:19:16.870
I didn't really.

02:19:17.390 --> 02:19:20.150
The documentation is kind of.

02:19:20.370 --> 02:19:21.470
Not overly.

02:19:23.050 --> 02:19:25.170
You know, doesn't really go deep dive.

02:19:25.310 --> 02:19:26.410
It's kind of just like an overview.

02:19:26.630 --> 02:19:27.170
OK, here.

02:19:27.390 --> 02:19:28.230
Here are the properties.

02:19:28.450 --> 02:19:28.710
Yeah.

02:19:28.970 --> 02:19:29.650
You know what I mean?

02:19:29.690 --> 02:19:32.430
So you got to know what to put in a lot of these values.

02:19:32.590 --> 02:19:33.670
And if you don't know, you don't know.

02:19:33.810 --> 02:19:37.550
It's like then you have to Google or chatbot or whatever.

02:19:37.550 --> 02:19:38.250
Yeah.

02:19:38.870 --> 02:19:40.950
And that's what I.

02:19:41.790 --> 02:19:44.430
That's why I usually just have like the red.

02:19:44.730 --> 02:19:48.970
I think I closed the window, but I had the red expression,

02:19:49.350 --> 02:19:50.530
expression language guide.

02:19:50.690 --> 02:19:53.370
I always keep that up as well.

02:19:53.650 --> 02:19:56.550
And then that way you can look at like.

02:19:57.210 --> 02:19:59.070
File name or something else like that.

02:19:59.130 --> 02:19:59.590
It'll let me know.

02:19:59.610 --> 02:20:01.230
So anyways, you are good there.

02:20:01.250 --> 02:20:02.410
Let's look at your others.

02:20:03.950 --> 02:20:07.090
OK, so now you're evaluating Jason on path.

02:20:07.090 --> 02:20:09.070
So let's configure it.

02:20:09.950 --> 02:20:11.130
That looks correct.

02:20:11.890 --> 02:20:13.590
I know the destination.

02:20:14.030 --> 02:20:17.490
You won't flow file attribute because if you do flow file content,

02:20:17.490 --> 02:20:19.690
it will only extract date.

02:20:20.850 --> 02:20:22.130
Oh, OK.

02:20:22.330 --> 02:20:22.570
Yep.

02:20:22.890 --> 02:20:24.270
And that's what I mentioned earlier.

02:20:24.490 --> 02:20:25.390
That's a common.

02:20:25.710 --> 02:20:27.010
That's what I missed.

02:20:27.270 --> 02:20:28.250
We added these.

02:20:29.610 --> 02:20:30.450
So apply.

02:20:31.810 --> 02:20:33.290
Now you need to finish.

02:20:33.290 --> 02:20:37.610
You know, if it's unmatched, I'd send it over there to that original.

02:20:37.790 --> 02:20:42.630
If it's an error, I'd send over to your left and and, you know,

02:20:42.630 --> 02:20:47.570
go from there and get rid of that right Jason file to directory

02:20:47.570 --> 02:20:49.550
and get rid of that failure point.

02:20:50.450 --> 02:20:51.950
You know, those types of things.

02:21:03.510 --> 02:21:10.870
And that's where I'm at right now is I am thinking of how I want to easel.

02:21:10.870 --> 02:21:14.430
Now I can use rejects and pull all these attributes in.

02:21:14.450 --> 02:21:17.450
And I can actually do a divide a math function.

02:21:17.850 --> 02:21:22.430
But a math the math function is actually for the more advanced.

02:21:22.430 --> 02:21:23.470
Not five users.

02:21:23.770 --> 02:21:25.410
So I don't want to do that.

02:21:25.410 --> 02:21:30.810
So I'm trying to think of a easy way to do it.

02:21:30.810 --> 02:21:34.290
Where are you sending original to for the evaluate?

02:21:36.150 --> 02:21:38.130
You want to go to the log.

02:21:38.790 --> 02:21:44.090
OK, so after the split Jason, I'm sending the splits to evaluate.

02:21:44.710 --> 02:21:47.930
And I'm sending the original to a log we are on message.

02:21:52.370 --> 02:21:52.810
OK, gotcha.

02:21:53.390 --> 02:22:00.790
And then the evaluate Jason path is going to log and then OK,

02:22:01.870 --> 02:22:03.610
Yeah, so I'm working.

02:22:03.910 --> 02:22:05.630
So that's a placeholder.

02:22:05.890 --> 02:22:10.570
So I can test to make sure that what I'm expecting comes out.

02:22:10.570 --> 02:22:15.310
And now, as you know, the beauty of this is like if I want to do,

02:22:15.990 --> 02:22:19.370
you know, some other thing, right?

02:22:21.210 --> 02:22:22.930
I do something else for match.

02:22:23.170 --> 02:22:27.350
Like what would make more sense for match instead of the rolling window?

02:22:27.350 --> 02:22:32.810
That's what I'm trying to think right now is, is, is how do I want to do this?

02:22:33.530 --> 02:22:40.850
Utilizing the processors I have that doesn't require regex me to write Python.

02:22:43.490 --> 02:22:53.110
Because, you know, I, you know, I realized that we have a mix of technical talent on the call.

02:22:53.290 --> 02:22:54.950
And there's no being against anybody.

02:22:55.250 --> 02:22:55.550
Right.

02:22:55.550 --> 02:22:57.390
There's technical folks and there's managers.

02:22:57.730 --> 02:22:58.910
There's there's different types.

02:22:59.090 --> 02:23:04.970
And so what I'm trying to do is what is the simplistic version I can make?

02:23:05.030 --> 02:23:06.950
And so that's where I'm at right now.

02:23:06.950 --> 02:23:17.790
So after I get through helping you all, I'm going to think through how can I generate an alert based upon this data and what alert would I generate and how would that look?

02:23:18.910 --> 02:23:25.090
OK, I mean, a lot of the work I do is to keep the lights on type of work, you know what I mean?

02:23:25.170 --> 02:23:28.890
So but we're trying to get more agile and DevOps.

02:23:29.430 --> 02:23:30.850
You know, I know I get it.

02:23:31.210 --> 02:23:32.870
But here's the beauty, right?

02:23:33.770 --> 02:23:41.750
This is designed to, you know, you know, start you off nice and easy and then make it really difficult.

02:23:42.050 --> 02:23:44.130
And I think I've accomplished that.

02:23:44.130 --> 02:23:51.110
But, you know, we're but again, I'm very, very open.

02:23:51.790 --> 02:23:55.510
So, you know, stop me say, hey, I am stuck here.

02:23:55.670 --> 02:24:03.110
If you are working on a processor and it's taking you longer than, you know, a few minutes, you may just want to say, hey, Josh, right.

02:24:03.170 --> 02:24:04.090
I'm trying to do this.

02:24:04.130 --> 02:24:05.330
This is what I'm thinking.

02:24:05.630 --> 02:24:09.370
Because, again, what I'm looking for is not a complete flow.

02:24:09.750 --> 02:24:12.930
What I am looking for is that story.

02:24:12.930 --> 02:24:15.770
Here's what I'm thinking about this data flow.

02:24:15.770 --> 02:24:17.630
Here's what I'm going to do.

02:24:17.650 --> 02:24:18.170
Right.

02:24:18.170 --> 02:24:22.410
And you're building a full fledged data flow in less than a day.

02:24:22.910 --> 02:24:27.870
So, you know, I'm not expecting a complete flow.

02:24:28.170 --> 02:24:31.030
But what I do want to hear is like, here's my story.

02:24:31.150 --> 02:24:32.670
Here's what I plan to do.

02:24:33.030 --> 02:24:39.550
And here's how far I got, because that lets me know that you're going down the right path or not.

02:24:40.050 --> 02:24:41.710
And, you know, going from there.

02:24:41.710 --> 02:24:47.710
And I like seeing how some folks are filtering right when they pick the file up.

02:24:49.070 --> 02:24:52.050
Some are filtering as soon as they got the file.

02:24:52.570 --> 02:24:56.810
You know, there's many ways to, again, there's two different ways to pick files up.

02:24:57.510 --> 02:25:02.590
And so, you know, I like to just see how some people, you know, think about the problem.

02:25:03.470 --> 02:25:09.590
And that's the biggest thing with workflow-based programming, right, is just how you're going to think through that.

02:25:09.590 --> 02:25:13.070
But I think, okay, so you should be good to go.

02:25:13.690 --> 02:25:16.510
You should have attributes now.

02:25:16.770 --> 02:25:23.850
So if you look right here.

02:25:25.970 --> 02:25:28.610
So I have, for instance, all of my attributes.

02:25:29.630 --> 02:25:31.430
So everything is stored in memory.

02:25:32.570 --> 02:25:38.950
And I don't need, like, so I no longer need the CSV files or the JSON files.

02:25:40.190 --> 02:25:43.190
Here's our one, humidity 88.

02:25:45.050 --> 02:25:46.030
We pick another random.

02:25:46.130 --> 02:25:50.090
Here's our four, humidity 71, right.

02:25:50.710 --> 02:25:53.850
I no longer need all of these files.

02:25:54.130 --> 02:26:00.110
I could write every one of these back as a CSV real easily.

02:26:01.370 --> 02:26:08.270
And then, you know, do some quick Excel math and call it a day, right.

02:26:13.570 --> 02:26:15.910
So, yeah, okay.

02:26:16.250 --> 02:26:19.170
So I think, are you in a better state now?

02:26:20.350 --> 02:26:21.090
Yeah, I think so.

02:26:21.130 --> 02:26:23.350
I mean, I'm still going to struggle the rest of the way, I imagine.

02:26:23.630 --> 02:26:24.510
But that's, yeah, no.

02:26:24.710 --> 02:26:24.970
No.

02:26:25.530 --> 02:26:27.070
And please stop me.

02:26:27.370 --> 02:26:27.750
I mean.

02:26:28.190 --> 02:26:28.730
No, it's okay.

02:26:28.790 --> 02:26:33.970
I think it helps just talking it through and listening to you explain it better for more, whatever.

02:26:33.970 --> 02:26:34.790
Yeah.

02:26:35.310 --> 02:26:40.390
And again, if I need to explain more, I do not mind at all.

02:26:40.450 --> 02:26:42.050
I have six kids, right.

02:26:42.050 --> 02:26:43.050
I'm used to explaining.

02:26:46.070 --> 02:26:46.570
All right.

02:26:46.650 --> 02:26:46.850
Cool.

02:26:47.010 --> 02:26:47.350
Thanks, Josh.

02:26:47.510 --> 02:26:47.750
Yep.

02:26:48.350 --> 02:26:49.550
Any other questions?

02:26:51.150 --> 02:26:51.930
Hey, Josh.

02:26:51.930 --> 02:26:55.490
I'm having trouble with this split JSON as well.

02:26:56.050 --> 02:27:02.530
I was trying to use the merge content and I tried to merge records, but those weren't working out for me.

02:27:03.490 --> 02:27:12.410
I saw that you were showing someone else to use the split JSON, so I tried to copy that, but then I wasn't sure what this error is facing path expression.

02:27:12.430 --> 02:27:13.410
Is it valid memes?

02:27:13.830 --> 02:27:15.330
Let's look at the property.

02:27:21.950 --> 02:27:23.510
So you don't have anything.

02:27:23.710 --> 02:27:27.690
So you see that JSON path expression is bolded?

02:27:27.850 --> 02:27:28.290
Yes.

02:27:28.530 --> 02:27:30.630
So it's a required field.

02:27:30.630 --> 02:27:40.590
But all you need to put in is dollar dot star because it's going to split on every record.

02:27:41.550 --> 02:27:44.630
So dollar dot star, just like I have mine.

02:27:44.630 --> 02:27:45.970
Dollar dot star.

02:27:47.470 --> 02:27:50.610
And so that's going to split every record.

02:27:52.070 --> 02:28:01.470
So each record is going to have temperature, humidity, wind speed, precipitation, hour, date, and station ID, right?

02:28:01.830 --> 02:28:05.650
So it's going to split those records.

02:28:05.830 --> 02:28:07.670
So what's it complaining about right now?

02:28:08.830 --> 02:28:08.890
Okay.

02:28:09.210 --> 02:28:11.450
Now it's just complaining that it's not connected to anything.

02:28:11.510 --> 02:28:12.330
Oh, there you go.

02:28:12.530 --> 02:28:13.250
Well, start.

02:28:13.650 --> 02:28:14.430
Wire it up.

02:28:14.430 --> 02:28:21.090
So that's taking the – it's reading the JSON file over here, and that's feeding it over.

02:28:21.470 --> 02:28:27.510
The CSV files are up here going down, converting, and making their way down over here.

02:28:29.410 --> 02:28:30.810
So those are all working.

02:28:31.370 --> 02:28:38.870
So this split JSON can take that from both of those directions, the JSON files directly, and the converted CSV files?

02:28:38.930 --> 02:28:39.510
Correct.

02:28:40.650 --> 02:28:41.170
Okay.

02:28:41.450 --> 02:28:44.450
And then this next – put this off over to the side for now.

02:28:44.590 --> 02:28:46.750
This evaluate JSON path is the next one.

02:28:47.250 --> 02:28:47.770
Correct.

02:28:48.230 --> 02:28:50.550
And all these are top-level records.

02:28:50.690 --> 02:28:55.110
So it's dollar dot the ID, right?

02:28:55.230 --> 02:28:59.170
So dollar dot station ID, dollar dot date, dollar dot hour.

02:28:59.450 --> 02:29:01.230
And that's going to return hour.

02:29:01.350 --> 02:29:03.950
That's going to return temperature, you know, those types of things.

02:29:05.270 --> 02:29:05.750
Okay.

02:29:05.750 --> 02:29:07.750
Yeah, let me show you mine.

02:29:12.810 --> 02:29:13.150
See.

02:29:15.030 --> 02:29:18.190
So all I did is I went in – yeah, dollar dot date.

02:29:18.330 --> 02:29:28.070
Because that's going to tell – all that's doing is telling this processor to look for dollar dot date, which is a top-level record.

02:29:29.070 --> 02:29:35.930
If the date was embedded under station ID, you would have dollar dot station ID dot date.

02:29:37.470 --> 02:29:41.630
And then it would pull that, you know, depending on the JSON tree.

02:29:42.450 --> 02:29:43.910
But everything is top-level.

02:29:44.010 --> 02:29:45.590
This is a simple JSON.

02:29:46.030 --> 02:29:52.070
So you don't have to worry about arrays and embedded anything, you know, those types of things.

02:29:53.970 --> 02:29:54.370
Okay.

02:29:54.370 --> 02:30:01.010
And so once you have that, then you're going to have everything as an attribute.

02:30:01.510 --> 02:30:03.110
So everything will be in memory.

02:30:03.270 --> 02:30:04.990
It's no longer a flow file.

02:30:05.550 --> 02:30:14.490
So you can actually dump all your flow files and, you know, everything is going to be in memory as an attribute.

02:30:16.870 --> 02:30:19.210
After the evaluate JSON path.

02:30:19.870 --> 02:30:25.530
Where is your original relationship going, Josh, from that evaluate JSON path?

02:30:26.050 --> 02:30:26.890
Is that going to the log?

02:30:27.730 --> 02:30:32.750
Yes, it is going right here to the log error message, I think.

02:30:32.790 --> 02:30:33.110
Okay.

02:30:33.330 --> 02:30:34.910
Hang on, let me check my lines.

02:30:34.970 --> 02:30:36.490
I got a spider web going here.

02:30:41.050 --> 02:30:44.430
I don't think unmatched is going to the log.

02:30:47.210 --> 02:30:47.670
Oh.

02:30:48.930 --> 02:30:49.850
Failure goes there.

02:30:50.290 --> 02:30:52.530
Matched goes to where I need to be.

02:30:52.590 --> 02:30:54.010
Unmatched goes to log.

02:30:54.310 --> 02:30:56.730
And so the original is actually split.

02:30:57.290 --> 02:31:02.790
So I'm sending my split JSON to the log error message and then auto terminating.

02:31:06.310 --> 02:31:08.690
Because I don't care about the original anymore, right?

02:31:08.810 --> 02:31:11.930
Like I've already, you know, I've already got the original.

02:31:11.970 --> 02:31:15.590
I've already either converted it or extracted all the values.

02:31:16.070 --> 02:31:21.310
I no longer, you know, in this scenario, I no longer care about the original document.

02:31:21.690 --> 02:31:26.770
I now have those attributes that I can like do whatever I want with now.

02:31:27.490 --> 02:31:28.050
Okay.

02:31:28.050 --> 02:31:34.410
So, you know, it's still a flow file going through, but it's attributes.

02:31:34.810 --> 02:31:41.590
And once you have like attributes in memory, then manipulating those attributes is relatively easy.

02:31:42.390 --> 02:31:48.430
Because now, you know, and that's what I'm looking at like for mine.

02:31:50.970 --> 02:31:52.910
Like we'll just use another random one here.

02:31:54.050 --> 02:32:02.690
I have a date attribute, an hour attribute, humidity attribute, precipitation, the value, station ID.

02:32:03.170 --> 02:32:11.610
So I could, you know, I could turn around and take all of this data, send it through, write it as a CSV file even.

02:32:12.730 --> 02:32:17.770
And then, you know, export it as Excel and then have some Excel templates.

02:32:17.810 --> 02:32:20.910
So when I open it up, it automatically computes even.

02:32:20.910 --> 02:32:31.370
So, you know, that's why, but I'm trying to think of a way to do this, you know, very simply through a processor instead of having to write code or anything else.

02:32:31.430 --> 02:32:36.390
Because normally I would just write some Python or something like that to handle it.

02:32:38.750 --> 02:32:50.110
But we should all be at least to hear very soon to where you have data that's all in a common format that you can access.

02:32:50.110 --> 02:32:54.590
We should be at that point, hopefully by now.

02:32:55.290 --> 02:32:57.590
All right, this is Peter. You're right. You get to go, Peter.

02:32:59.870 --> 02:33:04.590
I just said my session expired, so I had to re-log in. I just got back in right now.

02:33:04.590 --> 02:33:17.530
Oh, okay. Yeah, so after that split, you want to evaluate JSON path and, you know, you can send both failure and original, you know, make a shortcut, right?

02:33:17.530 --> 02:33:22.630
The failure and original, send it to the error message, send your splits to the JSON, right?

02:33:22.990 --> 02:33:25.170
You know, make it easy for yourself. All right.

02:33:26.250 --> 02:33:31.710
I'll be right back. I mean, we're already over the break. We went through break.

02:33:32.270 --> 02:33:35.330
So give me just a minute. I need to go grab something to drink.

02:33:36.010 --> 02:33:41.390
All this talking, my throat starts getting rough. I'll be right back in five minutes.

02:33:42.750 --> 02:33:48.210
Did you split JSON, split each entry, has a different file for you guys?

02:33:48.990 --> 02:33:52.190
I think that's what it's supposed to do.

02:33:52.510 --> 02:33:56.970
Because after going through split JSON, I had 55 queued, and that does not sound right.

02:33:57.530 --> 02:34:00.670
That might be...

02:34:00.670 --> 02:34:01.510
Multiple CSV files.

02:34:02.150 --> 02:34:08.370
Or it might be each file is a single attribute. He had a ton, too, and he had like 24 of them.

02:34:09.370 --> 02:34:16.670
It's each record. It's split into like multiple lines. So that's what you're seeing.

02:34:17.190 --> 02:34:19.370
Okay. Thank you.

02:34:29.270 --> 02:34:30.470
It's stuck.

02:34:34.090 --> 02:34:36.070
I think I configured my services wrong.

02:34:36.070 --> 02:34:36.930
Okay.

02:34:36.930 --> 02:34:43.230
Do I still need the service if I use the route on attribute?

02:34:44.330 --> 02:34:46.410
Let's take a look. See what you got.

02:34:48.790 --> 02:34:53.330
So you are getting the weather data. You're doing a round on attributes.

02:34:53.450 --> 02:34:56.370
You're sending JSON one way, CSV another.

02:34:57.870 --> 02:35:03.030
You're sending the CSV to the schema name because you're going to convert it to JSON.

02:35:04.190 --> 02:35:07.870
Success. And so you're going to convert that record to see it.

02:35:07.870 --> 02:35:11.130
What is the error you're getting with the convert record?

02:35:12.430 --> 02:35:13.730
I think it's one of my services.

02:35:14.370 --> 02:35:21.050
Yeah. Your services are not set. So if you want to take all this in and set it as making it JSON.

02:35:21.170 --> 02:35:23.150
Yeah. Let's look at your services again.

02:35:23.910 --> 02:35:24.830
Do I just click on either one?

02:35:24.930 --> 02:35:27.050
Yeah. It don't matter. Either one.

02:35:27.050 --> 02:35:33.450
And you have a fifth.

02:35:38.150 --> 02:35:44.270
Okay. So go to the left and hover over the little yield sign.

02:35:48.110 --> 02:35:52.790
Did you copy the chat record that Peter put out?

02:35:52.850 --> 02:35:54.170
I believe so.

02:35:54.170 --> 02:35:59.270
Did you remove the comma that Peter had an issue with?

02:36:00.490 --> 02:36:02.950
And I think Tom as well.

02:36:04.710 --> 02:36:07.470
Yeah. Let's go to the Avro schema registry.

02:36:07.750 --> 02:36:09.490
Let's look at your weather schema.

02:36:12.590 --> 02:36:17.230
Yep. Right there at the end. That one right there.

02:36:19.250 --> 02:36:21.990
And you might want to take out those extra spaces.

02:36:21.990 --> 02:36:28.070
So do a delete or backspace. Get rid of that comma.

02:36:28.390 --> 02:36:30.090
Nope. Get rid of that. There you go.

02:36:31.030 --> 02:36:33.410
You can expand that window so we can see more.

02:36:35.590 --> 02:36:36.770
There you go.

02:36:37.970 --> 02:36:42.710
And then scroll up and get rid of the extra lines on every line.

02:36:44.710 --> 02:36:45.670
Right here?

02:36:45.930 --> 02:36:50.190
Yep. Perfect. Delete. There you go. Keep going down. There you go.

02:36:50.190 --> 02:36:50.830
Is that okay?

02:36:51.130 --> 02:36:52.990
Do that for you.

02:36:53.610 --> 02:36:56.270
And apply? No, it needs a comma after the others.

02:36:57.210 --> 02:37:00.770
Enable that. All the way to the right is the lightning bolt to enable.

02:37:00.950 --> 02:37:02.570
Say that's fine. Service only.

02:37:05.290 --> 02:37:07.010
Close it. It looks good.

02:37:07.950 --> 02:37:10.330
All right. So let's hover over our CSV reader.

02:37:10.950 --> 02:37:12.530
Let's go to the gear on it.

02:37:12.530 --> 02:37:15.910
Use schema name property.

02:37:16.850 --> 02:37:18.510
Schema.name.

02:37:20.070 --> 02:37:24.790
Oh, on the schema registry, click that and say Avro schema registry.

02:37:25.950 --> 02:37:27.790
Say okay. Say apply.

02:37:29.570 --> 02:37:31.250
All right. Enable it.

02:37:32.930 --> 02:37:33.370
Okay.

02:37:34.890 --> 02:37:38.010
Jason record set writer. Let's do the same.

02:37:38.190 --> 02:37:43.710
You probably, you know.

02:37:44.790 --> 02:37:46.370
Yep. There you go.

02:37:47.470 --> 02:37:49.070
Say okay. And apply.

02:37:51.490 --> 02:37:52.090
Enable.

02:37:54.570 --> 02:37:56.850
Say enable. There you go.

02:37:58.930 --> 02:38:00.950
Close. Go back to your processor.

02:38:00.950 --> 02:38:03.870
And what's the issue now?

02:38:03.890 --> 02:38:06.990
No, no, no. We already looked at that one. Say cancel.

02:38:08.070 --> 02:38:08.870
Go to the yield.

02:38:09.890 --> 02:38:12.690
The relationship failure is not connected to anything.

02:38:14.050 --> 02:38:15.450
So you need a file.

02:38:17.010 --> 02:38:20.430
Where do you plan to send all failures, right?

02:38:20.530 --> 02:38:23.290
I'd probably just send it to that log error message on your left.

02:38:23.930 --> 02:38:25.370
And send your failure there.

02:38:27.190 --> 02:38:28.570
There you go.

02:38:29.450 --> 02:38:30.330
Refresh.

02:38:31.070 --> 02:38:31.990
And success.

02:38:35.650 --> 02:38:38.950
You're going with the extract text.

02:38:42.990 --> 02:38:46.750
I wasn't really sure. I gotta read the top again.

02:38:47.190 --> 02:38:50.630
Most everyone is going with the,

02:38:51.190 --> 02:38:53.150
going into a split JSON

02:38:54.470 --> 02:38:58.250
to bust that JSON file up into individual records.

02:39:00.170 --> 02:39:03.770
And so you can, you know, even though it's in the queue,

02:39:03.950 --> 02:39:06.210
you should be able to drag and drop it over there.

02:39:07.530 --> 02:39:08.890
Use the front of the arrow.

02:39:10.730 --> 02:39:13.250
There you go. Take the blue little box.

02:39:14.190 --> 02:39:16.210
Drag it over to split. There you go.

02:39:16.950 --> 02:39:19.150
You'll have to do the rest of the terminations.

02:39:20.130 --> 02:39:21.790
Like, you know, here's where you send the splits.

02:39:21.790 --> 02:39:24.350
Here's where you know from the split JSON.

02:39:25.170 --> 02:39:26.290
There you go.

02:39:27.130 --> 02:39:29.610
So send that where you,

02:39:30.430 --> 02:39:31.510
what are you going to do with the,

02:39:32.030 --> 02:39:33.350
what are you going to do with it when you,

02:39:33.610 --> 02:39:34.650
what's the thought here?

02:39:35.870 --> 02:39:37.710
What does the split JSON do again?

02:39:38.050 --> 02:39:42.930
So you're splitting the JSON records into a single record.

02:39:43.250 --> 02:39:45.150
So if you look at the queue,

02:39:45.230 --> 02:39:47.050
look at your queue, look at that one file.

02:39:47.050 --> 02:39:51.550
Right-click and say cancel.

02:39:55.450 --> 02:39:58.090
Right-click, list queue,

02:39:58.730 --> 02:40:01.090
and go to the little eye over there.

02:40:01.190 --> 02:40:03.070
Actually, you can go over to the right eye.

02:40:03.230 --> 02:40:03.710
Yeah, that one.

02:40:04.150 --> 02:40:06.190
Click that to view the content.

02:40:09.770 --> 02:40:10.850
And Pretty Prince not on,

02:40:10.890 --> 02:40:15.070
but you can already tell that you've got, you know,

02:40:16.070 --> 02:40:19.550
also the header is not set properly.

02:40:21.530 --> 02:40:23.390
Click instead of original, say formatted.

02:40:23.530 --> 02:40:25.410
Click the view as original.

02:40:25.610 --> 02:40:26.710
See if it says formatted.

02:40:27.050 --> 02:40:27.530
There you go.

02:40:28.290 --> 02:40:30.430
So it looks like, you know,

02:40:30.450 --> 02:40:33.590
the first record is just the station ID,

02:40:34.110 --> 02:40:38.450
which means, which that tells me that in your schema,

02:40:38.670 --> 02:40:42.250
you did not set the treat first line as the header file.

02:40:42.850 --> 02:40:44.390
So we need to fix that.

02:40:44.390 --> 02:40:48.430
But you now have what?

02:40:48.790 --> 02:40:51.990
Showing one, two, three, four, five, six, seven,

02:40:51.990 --> 02:40:53.790
eight records showing right now.

02:40:54.390 --> 02:40:57.030
If you scroll down, you're going to have probably 24 records.

02:40:57.610 --> 02:41:01.430
So what the split JSON does is it's going to split

02:41:01.430 --> 02:41:04.190
all of these records into its individual file.

02:41:06.270 --> 02:41:09.470
So you'll have just the station ID, the date, the hour,

02:41:09.590 --> 02:41:12.030
the temperature, humidity, wind speed, and precipitation

02:41:12.030 --> 02:41:16.830
as one file, not 24 records as one file.

02:41:17.830 --> 02:41:19.730
Okay, so each one of these will be one file?

02:41:23.190 --> 02:41:23.710
Okay.

02:41:24.270 --> 02:41:24.590
Great.

02:41:25.230 --> 02:41:27.530
And then, like I said, you want to go back,

02:41:28.330 --> 02:41:29.270
exit out of that.

02:41:29.390 --> 02:41:30.390
That works now.

02:41:30.830 --> 02:41:33.610
You want to go back to your controller service

02:41:33.610 --> 02:41:37.850
and make sure that you're treating the header as true,

02:41:38.050 --> 02:41:39.570
telling it it does have a header

02:41:39.570 --> 02:41:41.770
because it looks like you're ingesting

02:41:41.770 --> 02:41:44.750
the header as a record as well.

02:41:45.450 --> 02:41:46.710
So if you go to CSV reader,

02:41:46.730 --> 02:41:49.570
you can go to the proper gear icon on that.

02:41:51.610 --> 02:41:52.150
Scroll down.

02:41:52.290 --> 02:41:53.890
Treat first line as header.

02:41:54.770 --> 02:41:54.970
True.

02:41:55.150 --> 02:41:56.930
You can disable and configure.

02:41:59.110 --> 02:41:59.590
There you go.

02:41:59.730 --> 02:42:00.090
Perfect.

02:42:00.310 --> 02:42:00.850
Good job.

02:42:04.290 --> 02:42:04.570
Okay.

02:42:04.710 --> 02:42:08.330
So that should take care of the header information

02:42:08.330 --> 02:42:09.050
being a record.

02:42:09.050 --> 02:42:11.050
And then now you're going to,

02:42:13.410 --> 02:42:15.450
you can split the JSON.

02:42:16.830 --> 02:42:18.570
So if you were to clear your queue

02:42:18.570 --> 02:42:22.170
and run that again, it should show up properly.

02:42:24.250 --> 02:42:26.570
The split JSON, you're going to need,

02:42:26.670 --> 02:42:28.010
go back into your split JSON.

02:42:29.730 --> 02:42:30.810
Since we already have it open,

02:42:30.850 --> 02:42:33.710
you have no value set for JSON path expression.

02:42:34.650 --> 02:42:36.450
So it is required.

02:42:36.450 --> 02:42:39.450
So you would just want to do dollar dot asterisk.

02:42:40.230 --> 02:42:40.590
There you go.

02:42:40.730 --> 02:42:41.350
Say okay.

02:42:42.450 --> 02:42:42.990
Apply.

02:42:44.870 --> 02:42:45.410
There you go.

02:42:45.670 --> 02:42:49.770
And now you'll need to finish with its connections.

02:42:50.730 --> 02:42:52.230
You don't have a relationship.

02:42:52.250 --> 02:42:52.710
Sorry.

02:42:52.850 --> 02:42:54.130
You don't have a relationship

02:42:54.130 --> 02:42:57.990
or some of these others that you'll need to put in.

02:42:58.410 --> 02:43:03.410
From there, if you're following exactly what I'm doing,

02:43:03.410 --> 02:43:10.010
you will send it to a evaluate JSON path processor.

02:43:10.810 --> 02:43:14.350
And then from there, you can fill in.

02:43:15.030 --> 02:43:16.410
So here, I'll pull mine up again.

02:43:17.190 --> 02:43:19.690
If you can, look at mine.

02:43:23.830 --> 02:43:26.450
I send it to an evaluate JSON processor.

02:43:26.910 --> 02:43:28.830
Make sure you have full file attribute.

02:43:29.250 --> 02:43:33.110
And then I just extract every value out of that single record.

02:43:33.410 --> 02:43:37.930
And so what happens is, and it's just dollar dot date,

02:43:38.030 --> 02:43:39.070
dollar dot hour.

02:43:39.990 --> 02:43:42.470
There's no nested or embedded records.

02:43:43.350 --> 02:43:48.590
And so if I look at my records,

02:43:54.690 --> 02:43:59.230
here is the actual record.

02:44:00.170 --> 02:44:03.050
But because I did the evaluate JSON,

02:44:04.550 --> 02:44:07.490
I now have all of these as attribute values.

02:44:07.990 --> 02:44:12.930
So the wind speed, temperature, station ID, humidity, the date.

02:44:13.310 --> 02:44:17.710
So this is the 13th hour of 2024, 506.

02:44:19.210 --> 02:44:22.130
And then now that I have that,

02:44:23.890 --> 02:44:28.130
you can take attributes and

02:44:31.990 --> 02:44:36.110
save them all if you want and combine them all into one document.

02:44:38.070 --> 02:44:42.130
I'm working on how I would do this

02:44:43.110 --> 02:44:45.790
with using the processors that are available.

02:44:46.830 --> 02:44:49.110
But go ahead, and if you can,

02:44:49.590 --> 02:44:51.610
I mean, you're probably going to get stuck on that point.

02:44:51.610 --> 02:44:57.890
But if you can, just go and start getting your flow cleaned up,

02:44:58.210 --> 02:45:02.490
named properly, labeled properly, those types of things.

02:45:02.530 --> 02:45:06.490
Make sure your relationships are there to do the evaluate JSON.

02:45:10.430 --> 02:45:15.130
And let's at least get to where we have all the same data

02:45:15.130 --> 02:45:16.670
in all the same format,

02:45:16.770 --> 02:45:19.850
because we're going to need to have the data in the same format.

02:45:19.850 --> 02:45:21.950
We're going to need to have it all together

02:45:22.570 --> 02:45:25.190
before we can make any kind of calculation

02:45:25.190 --> 02:45:28.850
or look for any alert or anything else.

02:45:33.490 --> 02:45:37.030
Perfect. Anybody else? Well, who else?

02:45:45.090 --> 02:45:47.550
If you wouldn't mind taking a look at my queue.

02:45:47.550 --> 02:45:49.890
I don't see the attributes like you do.

02:45:50.150 --> 02:45:53.350
I think maybe I'm missing a processor along the way.

02:45:53.610 --> 02:45:54.630
Okay, no worries.

02:45:56.790 --> 02:45:58.290
I know we're running short on time, though.

02:45:58.370 --> 02:45:59.730
No, no, you're fine.

02:46:00.670 --> 02:46:05.830
The second day, we usually go over on the second day.

02:46:07.690 --> 02:46:11.290
I need to go grocery shopping and that's it, so I'm good.

02:46:14.810 --> 02:46:16.590
I mean, after my split,

02:46:16.770 --> 02:46:20.330
I have both JSONs and CSV, so I think...

02:46:20.330 --> 02:46:21.250
Well, that's fine.

02:46:22.970 --> 02:46:25.330
Because it's just a file size.

02:46:25.890 --> 02:46:28.590
Let's look at your attributes, so scroll down.

02:46:29.130 --> 02:46:31.550
Okay, I don't see, hit okay.

02:46:32.910 --> 02:46:34.150
That's what I was looking for.

02:46:35.070 --> 02:46:36.310
I don't see what you see.

02:46:36.730 --> 02:46:38.470
Yeah, no worries. Hit X on that.

02:46:38.470 --> 02:46:39.910
Let me look at your flow.

02:46:41.290 --> 02:46:44.210
Okay, we are splitting the JSON.

02:46:44.810 --> 02:46:46.430
It's split. Did you do the...

02:46:46.430 --> 02:46:50.490
Oh, the split is only going to give you a record.

02:46:50.910 --> 02:46:53.350
So it's going to still give you a JSON document,

02:46:53.370 --> 02:46:55.710
but it's just one record per document.

02:46:56.850 --> 02:46:58.790
So 54 sounds about right.

02:46:59.090 --> 02:47:01.390
Then you're going to do the evaluate JSON path.

02:47:02.950 --> 02:47:05.010
All right, let's look at your configuration on that.

02:47:06.230 --> 02:47:08.010
I think the last time we looked at it,

02:47:08.010 --> 02:47:10.170
yeah, you have $.date, okay.

02:47:10.210 --> 02:47:12.030
So say cancel or apply,

02:47:13.630 --> 02:47:15.750
and run it once.

02:47:16.890 --> 02:47:20.170
When I ran it, it went to failure, I believe.

02:47:22.350 --> 02:47:24.790
Let's look at that failure real quick.

02:47:26.650 --> 02:47:28.210
Go to that failure.

02:47:29.350 --> 02:47:30.450
Right click on that failure,

02:47:31.290 --> 02:47:32.510
and list the cube,

02:47:33.170 --> 02:47:34.630
just like you would any other cube.

02:47:35.710 --> 02:47:36.350
Oh, gotcha.

02:47:36.350 --> 02:47:38.450
Oh, each one of these has its own cube.

02:47:38.910 --> 02:47:41.390
Yeah, they're all separated by their own cube.

02:47:41.550 --> 02:47:42.930
Yeah, go ahead and click that.

02:47:43.330 --> 02:47:46.850
You are just pulling ST003.

02:47:48.050 --> 02:47:48.290
Huh.

02:47:48.930 --> 02:47:50.730
Why in the hell would you be doing that?

02:47:51.270 --> 02:47:53.110
Let's go ahead and hit X,

02:47:54.090 --> 02:47:56.530
and let's actually clear that,

02:47:56.630 --> 02:47:59.090
because it might be a header issue.

02:47:59.990 --> 02:48:00.770
We'll see in a minute.

02:48:00.790 --> 02:48:02.030
Just go ahead and empty the cube.

02:48:02.530 --> 02:48:03.910
Do another one once.

02:48:06.350 --> 02:48:08.530
All right, what's the error on the box?

02:48:11.070 --> 02:48:12.450
On the processor?

02:48:13.110 --> 02:48:14.390
On the right of the processor,

02:48:14.510 --> 02:48:15.930
you've got now a red box?

02:48:17.570 --> 02:48:18.090
Oh, yeah.

02:48:19.050 --> 02:48:21.790
Flow file did not have a valid JSON content.

02:48:23.170 --> 02:48:27.290
Okay, so we're converting it to JSON.

02:48:29.290 --> 02:48:30.890
Empty the split cube.

02:48:32.770 --> 02:48:33.730
Right above it.

02:48:33.730 --> 02:48:35.250
Yep, empty that cube.

02:48:37.710 --> 02:48:39.970
Maybe I didn't run once in enough times.

02:48:43.050 --> 02:48:44.450
Let's look at your split JSON.

02:48:45.530 --> 02:48:46.450
What do you have?

02:48:49.530 --> 02:48:49.870
Figure.

02:48:52.250 --> 02:48:53.190
Dollar, dollar, star.

02:48:53.450 --> 02:48:54.370
Okay, apply.

02:48:57.510 --> 02:49:02.070
And then your convert record is going to success.

02:49:02.070 --> 02:49:04.710
Can you run once to get us to split JSON?

02:49:07.610 --> 02:49:08.190
On this?

02:49:10.030 --> 02:49:12.410
Well, you'll need a file to provide that one,

02:49:13.550 --> 02:49:16.050
so you'll have to get CSV from directory.

02:49:16.490 --> 02:49:17.970
Now, refresh that.

02:49:18.270 --> 02:49:20.510
And it should run,

02:49:20.550 --> 02:49:22.230
so just say route on attribute,

02:49:22.510 --> 02:49:24.110
say yes, go ahead.

02:49:25.050 --> 02:49:25.850
Run once.

02:49:28.350 --> 02:49:30.210
Actually, you're going to need to run it three times,

02:49:30.210 --> 02:49:34.370
because you have three files, two CSVs, and a JSON.

02:49:34.570 --> 02:49:35.910
So we know that that's working.

02:49:36.470 --> 02:49:37.750
So run it one more time,

02:49:38.110 --> 02:49:40.210
and it should be a second CSV.

02:49:42.130 --> 02:49:42.470
Perfect.

02:49:44.210 --> 02:49:47.510
All right, so look at your split JSON,

02:49:48.270 --> 02:49:50.130
because you already have a JSON document.

02:49:50.330 --> 02:49:51.830
You're ready to go over there.

02:49:52.890 --> 02:49:53.330
Okay.

02:49:54.530 --> 02:49:56.050
Let's run that once.

02:49:57.710 --> 02:49:59.350
Did I clear this?

02:49:59.830 --> 02:50:01.650
Yeah, go ahead and clear it.

02:50:01.870 --> 02:50:04.410
You don't need to, but let's do it.

02:50:05.610 --> 02:50:07.870
As a matter of fact, let's not run that split JSON once.

02:50:07.870 --> 02:50:10.050
Just turn it on and start it.

02:50:11.330 --> 02:50:11.790
Refresh.

02:50:11.950 --> 02:50:14.350
All right, and now stop it.

02:50:15.190 --> 02:50:16.290
Let's look at your split,

02:50:16.290 --> 02:50:17.370
the split queue,

02:50:18.770 --> 02:50:19.550
the blow it.

02:50:19.650 --> 02:50:20.150
There you go.

02:50:20.290 --> 02:50:22.310
You have seven files now.

02:50:22.310 --> 02:50:24.310
All right, let's view that.

02:50:31.050 --> 02:50:32.490
Say okay.

02:50:33.130 --> 02:50:33.910
Click the eyeball.

02:50:35.470 --> 02:50:36.790
I want to view the content.

02:50:38.110 --> 02:50:38.870
Is it still?

02:50:39.090 --> 02:50:39.470
Okay.

02:50:41.070 --> 02:50:43.970
All right, exit out of that.

02:50:51.050 --> 02:50:52.050
$.star.

02:50:52.510 --> 02:50:53.470
Empty stream.

02:50:55.370 --> 02:50:56.510
And it's just getting the JSON.

02:50:59.350 --> 02:51:02.310
Run that get CSV from directory again

02:51:02.310 --> 02:51:06.090
until you just run it.

02:51:06.090 --> 02:51:08.110
You'll have to run it once to get CSV.

02:51:09.530 --> 02:51:10.150
Run once.

02:51:10.270 --> 02:51:11.590
And then the route on attribute,

02:51:11.590 --> 02:51:13.850
you have to run it twice to get the JSON.

02:51:18.530 --> 02:51:20.230
We know the first one's a CSV.

02:51:20.450 --> 02:51:21.590
The second one is...

02:51:22.990 --> 02:51:25.590
Oh, you can't do...

02:51:25.590 --> 02:51:26.570
Click on the processor.

02:51:26.990 --> 02:51:27.570
Refresh first?

02:51:28.610 --> 02:51:30.070
No, don't click on the red app.

02:51:30.390 --> 02:51:31.630
There you go.

02:51:31.950 --> 02:51:32.430
Okay.

02:51:33.130 --> 02:51:33.910
And then refresh.

02:51:35.550 --> 02:51:36.930
We should have a JSON document now.

02:51:37.430 --> 02:51:39.890
Let's look at that JSON document before it goes in.

02:51:40.630 --> 02:51:41.830
All right.

02:51:41.970 --> 02:51:43.350
I want to double check to make sure.

02:51:44.430 --> 02:51:46.150
Hit your eyeball.

02:51:46.970 --> 02:51:47.890
All right.

02:51:48.510 --> 02:51:48.890
Okay.

02:51:48.910 --> 02:51:51.470
So that is a...

02:51:51.470 --> 02:51:54.810
I see 24 JSON records.

02:51:59.070 --> 02:52:01.290
Let's exit out of that.

02:52:02.030 --> 02:52:03.290
Exit out of this.

02:52:04.930 --> 02:52:05.170
All right.

02:52:05.190 --> 02:52:06.470
The split JSON.

02:52:06.470 --> 02:52:08.470
Open up and configure it.

02:52:12.410 --> 02:52:13.370
Okay.

02:52:14.210 --> 02:52:15.770
JSON path.

02:52:21.530 --> 02:52:22.470
Dollar dot star.

02:52:23.730 --> 02:52:24.470
Empty 20.

02:52:24.650 --> 02:52:25.230
Okay.

02:52:27.150 --> 02:52:27.890
Hit cancel.

02:52:30.650 --> 02:52:31.210
Why is that name?

02:52:31.750 --> 02:52:34.470
You see the...

02:52:34.470 --> 02:52:36.370
Take your split JSON

02:52:36.370 --> 02:52:37.790
and that processor.

02:52:38.010 --> 02:52:40.230
Can you kind of drag it up a little bit

02:52:40.230 --> 02:52:42.370
and align it to the right of route attribute?

02:52:43.790 --> 02:52:44.470
There you go.

02:52:45.750 --> 02:52:46.190
All right.

02:52:46.810 --> 02:52:48.470
So there is where your...

02:52:49.510 --> 02:52:51.090
Let's empty the queue

02:52:51.090 --> 02:52:52.650
of the...

02:52:52.650 --> 02:52:54.530
Between route attribute and split JSON,

02:52:54.690 --> 02:52:56.830
let's empty the queue of that JSON,

02:52:56.890 --> 02:52:58.250
that one document you have.

02:52:59.690 --> 02:53:00.730
Yeah, go ahead

02:53:00.730 --> 02:53:02.010
and empty it. Perfect.

02:53:03.730 --> 02:53:05.650
And let's say...

02:53:05.650 --> 02:53:05.970
I'll say okay.

02:53:06.150 --> 02:53:07.830
And then right click and say delete

02:53:07.830 --> 02:53:10.030
on that connection.

02:53:10.510 --> 02:53:12.050
That split JSON. That one, yes.

02:53:12.050 --> 02:53:13.250
Delete it. All right.

02:53:13.410 --> 02:53:14.770
On your route attribute,

02:53:18.310 --> 02:53:20.010
drag it over to split JSON.

02:53:23.490 --> 02:53:24.010
And

02:53:24.010 --> 02:53:26.090
make sure you have just JSON selected

02:53:26.090 --> 02:53:27.330
and say add.

02:53:29.870 --> 02:53:30.410
Okay.

02:53:30.410 --> 02:53:32.230
So you're getting the files.

02:53:32.470 --> 02:53:34.050
You're routing on attribute.

02:53:34.490 --> 02:53:36.470
What's that route? Can we go look at your route on

02:53:36.470 --> 02:53:38.410
attribute? Hopefully it matches the one

02:53:38.410 --> 02:53:38.950
I have.

02:53:39.730 --> 02:53:44.410
Okay. Say cancel.

02:53:47.690 --> 02:53:48.250
Empty

02:53:48.250 --> 02:53:50.730
the queue from split JSON

02:53:50.730 --> 02:53:52.370
to evaluate JSON path.

02:53:52.450 --> 02:53:54.210
You have a split and original

02:53:54.210 --> 02:53:56.130
queue. Empty both of those.

02:53:57.450 --> 02:53:58.730
Yep.

02:53:59.070 --> 02:54:00.410
Empty your original.

02:54:03.410 --> 02:54:04.070
Okay.

02:54:06.990 --> 02:54:08.370
You get CSV

02:54:08.370 --> 02:54:10.410
from get CSV to route.

02:54:10.630 --> 02:54:11.990
Empty that queue as well.

02:54:12.350 --> 02:54:14.950
This is really weird because it does match mine

02:54:14.950 --> 02:54:16.570
and yours is...

02:54:17.910 --> 02:54:18.930
There's something

02:54:19.450 --> 02:54:20.410
missing. So

02:54:20.410 --> 02:54:23.010
let's run get CSVs from directory.

02:54:23.130 --> 02:54:25.070
You're just picking everything up, right?

02:54:26.630 --> 02:54:27.150
Okay.

02:54:27.350 --> 02:54:28.470
Run that one.

02:54:29.250 --> 02:54:29.770
Refresh.

02:54:31.730 --> 02:54:32.610
Three files.

02:54:33.110 --> 02:54:35.130
Perfect. That's what you're supposed to have.

02:54:35.810 --> 02:54:37.170
All right. Run that

02:54:37.170 --> 02:54:39.070
three times and we're going to get

02:54:39.070 --> 02:54:40.610
two CSVs in JSON.

02:54:42.230 --> 02:54:43.290
First one CSV.

02:54:44.730 --> 02:54:44.750
Yep.

02:54:45.030 --> 02:54:46.690
Run it again. The second one is JSON.

02:54:50.590 --> 02:54:51.410
There you go.

02:54:52.330 --> 02:54:53.150
And run it one more time

02:54:53.150 --> 02:54:54.870
just to clear that queue.

02:54:55.450 --> 02:54:57.470
There we go. And that should go to CSV.

02:54:57.650 --> 02:54:58.070
Perfect.

02:54:58.670 --> 02:55:01.250
So we have a JSON document.

02:55:01.410 --> 02:55:03.430
Let's look at that JSON document in the queue

02:55:03.430 --> 02:55:05.470
to double verify that it's actually

02:55:05.470 --> 02:55:07.390
in this queue. All right. Go to your eyeball.

02:55:09.670 --> 02:55:10.270
Your eyeball.

02:55:12.770 --> 02:55:15.350
I don't see any issue

02:55:15.350 --> 02:55:16.350
with this data.

02:55:18.230 --> 02:55:20.450
All right. Exit out of that.

02:55:23.710 --> 02:55:25.270
Let's hit configure

02:55:25.270 --> 02:55:27.290
before we run it once.

02:55:27.730 --> 02:55:29.590
And that's a dollar dot star.

02:55:29.730 --> 02:55:30.670
Dollar period.

02:55:35.910 --> 02:55:37.190
All right.

02:55:37.190 --> 02:55:38.010
Let me look at mine.

02:55:38.370 --> 02:55:39.510
Double, triple, sure.

02:55:39.890 --> 02:55:41.450
Okay. Okay. It matches

02:55:41.450 --> 02:55:43.530
mine to a T. Say okay.

02:55:44.630 --> 02:55:45.470
Say apply.

02:55:47.990 --> 02:55:49.270
And then

02:55:49.270 --> 02:55:50.930
run split JSON.

02:55:52.890 --> 02:55:52.930
Refresh.

02:55:54.590 --> 02:55:54.890
No.

02:55:55.210 --> 02:55:56.930
I can already tell you it's not right.

02:55:58.370 --> 02:55:59.090
I just wanted to go

02:55:59.090 --> 02:56:00.770
into the log and then seven or

02:56:00.770 --> 02:56:02.850
Yeah. The splits

02:56:05.850 --> 02:56:07.070
should be going to

02:56:07.070 --> 02:56:08.870
the evaluate JSON path they are.

02:56:09.410 --> 02:56:10.930
But the splits are much bigger

02:56:10.930 --> 02:56:12.430
than 29 bytes.

02:56:13.690 --> 02:56:14.890
Okay. Our problem

02:56:14.890 --> 02:56:16.550
is coming out of that split JSON.

02:56:16.930 --> 02:56:18.510
So let's empty

02:56:18.510 --> 02:56:20.450
the split queue.

02:56:22.330 --> 02:56:23.390
It's empty.

02:56:26.370 --> 02:56:28.130
All right. Hang on one second here.

02:56:28.430 --> 02:56:30.430
Let me see.

02:56:35.730 --> 02:56:36.890
Values going there.

02:56:37.210 --> 02:56:38.950
Success from ConvertCSV

02:56:38.950 --> 02:56:39.870
is going in.

02:56:44.270 --> 02:56:44.990
Let's

02:56:44.990 --> 02:56:46.430
bring down another split

02:56:46.430 --> 02:56:48.470
JSON processor and put it right

02:56:48.470 --> 02:56:50.510
beside the split. There you go. Right there.

02:56:56.090 --> 02:56:58.530
All right. And then let's take our

02:56:58.530 --> 02:57:00.430
connections and

02:57:02.810 --> 02:57:04.350
you know the route

02:57:04.350 --> 02:57:06.530
and attribute where you have JSON. Go ahead

02:57:06.530 --> 02:57:08.630
and move that over to your new processor.

02:57:08.650 --> 02:57:09.990
All right. Perfect.

02:57:11.770 --> 02:57:12.290
And

02:57:13.490 --> 02:57:14.410
let's take

02:57:14.410 --> 02:57:16.270
the ConvertCSV to JSON

02:57:16.270 --> 02:57:19.230
line and move it over as well.

02:57:20.330 --> 02:57:24.050
That one. There we go.

02:57:24.250 --> 02:57:26.210
Bring it over there.

02:57:27.510 --> 02:57:28.190
Perfect.

02:57:31.270 --> 02:57:32.350
empty your

02:57:32.350 --> 02:57:33.290
original queue.

02:57:36.890 --> 02:57:38.510
Right beside that split JSON is that

02:57:38.510 --> 02:57:39.710
original connection.

02:57:40.410 --> 02:57:42.070
There you go. Empty it.

02:57:42.070 --> 02:57:44.070
And then delete it.

02:57:48.070 --> 02:57:50.530
And just delete. And let's

02:57:50.530 --> 02:57:51.030
delete.

02:57:53.650 --> 02:57:55.890
Let's delete that split.

02:57:57.830 --> 02:57:59.630
No, not that one. The connection.

02:57:59.790 --> 02:58:01.990
The connection you have right there. Right beside your mouse.

02:58:02.190 --> 02:58:04.070
Right where you had it.

02:58:04.930 --> 02:58:05.650
Correct. Yep.

02:58:06.430 --> 02:58:07.790
Delete it.

02:58:08.790 --> 02:58:09.270
Okay.

02:58:10.630 --> 02:58:11.130
And

02:58:11.870 --> 02:58:13.510
okay. Let's delete

02:58:13.510 --> 02:58:15.490
the split JSON to your

02:58:15.490 --> 02:58:17.270
log error message. You got it.

02:58:18.010 --> 02:58:18.750
Delete it. Okay.

02:58:19.070 --> 02:58:21.750
Go ahead and delete that split JSON that you have up top.

02:58:21.930 --> 02:58:22.710
Get rid of that.

02:58:23.110 --> 02:58:25.590
Let's look at your configuration of this one.

02:58:25.710 --> 02:58:26.990
All right. Let's set our value.

02:58:27.050 --> 02:58:28.630
What was it? Dollar.

02:58:30.210 --> 02:58:30.950
Dot. Star.

02:58:31.310 --> 02:58:32.430
After. Yeah. There we go.

02:58:33.430 --> 02:58:33.930
Okay.

02:58:35.250 --> 02:58:35.690
Apply.

02:58:35.690 --> 02:58:36.970
Apply.

02:58:36.990 --> 02:58:39.490
All right. And let's drag down our first

02:58:39.490 --> 02:58:40.230
relationship.

02:58:41.810 --> 02:58:44.170
And let's go to

02:58:44.170 --> 02:58:45.530
evaluate JSON path

02:58:45.530 --> 02:58:46.470
for the split.

02:58:47.010 --> 02:58:50.010
And then let's bring down

02:58:50.010 --> 02:58:51.650
the original and

02:58:51.650 --> 02:58:53.470
failure to the log error.

02:58:55.030 --> 02:58:55.730
You can do original

02:58:55.730 --> 02:58:56.510
and failure.

02:58:58.170 --> 02:58:58.530
Say add.

02:59:00.090 --> 02:59:01.590
Yeah. And if you see your connection

02:59:01.590 --> 02:59:02.830
it says now failure,

02:59:02.830 --> 02:59:03.730
original.

02:59:04.510 --> 02:59:06.850
I like that. Okay. That's very cool.

02:59:07.030 --> 02:59:08.930
You don't have to do three different

02:59:08.930 --> 02:59:09.730
ones.

02:59:10.110 --> 02:59:13.090
And I went through and deleted all my labels

02:59:13.090 --> 02:59:14.950
just because I

02:59:14.950 --> 02:59:16.570
need to clean mine up as well.

02:59:19.530 --> 02:59:20.250
All right.

02:59:21.370 --> 02:59:22.750
Let's run it.

02:59:23.090 --> 02:59:24.350
And let's see.

02:59:25.310 --> 02:59:26.850
So get CSVs. We're going to run

02:59:26.850 --> 02:59:27.390
once.

02:59:29.110 --> 02:59:30.810
As a matter of fact, just turn on route on

02:59:30.810 --> 02:59:31.810
time to be started.

02:59:33.390 --> 02:59:34.830
And then run once

02:59:34.830 --> 02:59:36.810
on your get CSVs.

02:59:38.970 --> 02:59:39.150
All

02:59:39.150 --> 02:59:40.810
right. And so now your count

02:59:40.810 --> 02:59:42.670
should be eight and one.

02:59:43.750 --> 02:59:44.610
Seven and one. Sorry.

02:59:44.990 --> 02:59:45.830
Math is off today.

02:59:47.010 --> 02:59:47.410
Okay.

02:59:48.670 --> 02:59:50.630
So before we say split JSON,

02:59:50.770 --> 02:59:52.570
let's take a look at that JSON document

02:59:52.570 --> 02:59:54.770
one more time. Because there

02:59:54.770 --> 02:59:56.710
is something funky going on here.

02:59:57.110 --> 02:59:57.850
List the queue.

02:59:57.850 --> 02:59:58.530
Your eyeballs.

03:00:01.690 --> 03:00:01.930
Okay.

03:00:02.410 --> 03:00:03.510
That looks beautiful.

03:00:03.890 --> 03:00:05.510
And it does say it's an application.

03:00:05.630 --> 03:00:08.130
It read the content type. So a lot of these

03:00:08.130 --> 03:00:10.170
processors have a built in mine type.

03:00:10.710 --> 03:00:11.310
Go ahead and exit.

03:00:11.770 --> 03:00:13.470
Yeah. Now go ahead and close this.

03:00:13.690 --> 03:00:15.130
All right.

03:00:17.870 --> 03:00:19.710
Run once. Actually just

03:00:19.710 --> 03:00:21.370
turn it on. Just say start.

03:00:21.890 --> 03:00:22.410
Refresh.

03:00:28.530 --> 03:00:29.930
Still not right.

03:00:34.310 --> 03:00:36.150
This is weird because

03:00:36.150 --> 03:00:37.910
it's exactly like mine.

03:00:38.710 --> 03:00:40.470
Exactly. Exactly.

03:00:40.890 --> 03:00:41.330
Like mine.

03:00:42.710 --> 03:00:43.470
It is dark.

03:00:46.050 --> 03:00:47.130
All right.

03:00:47.210 --> 03:00:48.010
Tom, give me just a second.

03:00:48.050 --> 03:00:49.290
I'm going to do this.

03:00:49.530 --> 03:00:51.590
I'm going to take over.

03:00:52.910 --> 03:00:53.230
Okay.

03:00:53.650 --> 03:00:55.190
That's cool because I got to run to the bathroom real quick.

03:00:55.190 --> 03:00:55.730
I'll be right back.

03:00:56.030 --> 03:01:00.930
So I'm having the same

03:01:00.930 --> 03:01:02.270
exact issue as Tom.

03:01:02.690 --> 03:01:04.850
And I've been following you and it's not correcting.

03:01:06.190 --> 03:01:07.410
Oh my

03:01:07.410 --> 03:01:07.850
Lord.

03:01:09.270 --> 03:01:10.990
It's really weird because

03:01:10.990 --> 03:01:12.010
mine runs.

03:01:12.850 --> 03:01:14.290
Let me double check mine.

03:01:14.550 --> 03:01:16.470
I picked it up.

03:01:18.350 --> 03:01:19.290
Let me see

03:01:19.290 --> 03:01:20.550
here. Refresh.

03:01:21.730 --> 03:01:22.810
All right.

03:01:25.190 --> 03:01:25.810
Wait a minute.

03:01:25.810 --> 03:01:37.050
Wait a minute. Mine's

03:01:37.050 --> 03:01:38.870
erroring out now.

03:01:50.270 --> 03:01:51.490
Even mine is

03:01:51.490 --> 03:01:53.190
now erroring out and it was

03:01:53.190 --> 03:01:54.710
working just fine.

03:01:55.590 --> 03:01:57.450
All right. Well, luckily

03:01:57.450 --> 03:01:59.350
Tom, I don't think it's you. I think it's

03:02:00.210 --> 03:02:00.950
me.

03:02:01.450 --> 03:02:02.210
Oh yeah.

03:02:03.550 --> 03:02:04.110
Because

03:02:05.990 --> 03:02:07.370
I'm running mine

03:02:07.370 --> 03:02:09.150
as well and

03:02:09.150 --> 03:02:11.130
now I'm getting

03:02:11.130 --> 03:02:13.470
the same results where

03:02:13.470 --> 03:02:15.690
previously I was getting

03:02:15.690 --> 03:02:16.710
split document.

03:02:18.150 --> 03:02:19.310
So let me

03:02:19.310 --> 03:02:21.290
I'm going to work on Tom's and get this

03:02:21.290 --> 03:02:23.530
figured out. Ekta, you want to take a quick

03:02:23.530 --> 03:02:26.590
break? You know, have at it.

03:02:28.830 --> 03:02:31.030
I'm going to take a quick break too and I'll be right back.

03:02:31.270 --> 03:02:33.570
Yeah. Yeah. Even

03:02:33.570 --> 03:02:35.250
even mine, I'm getting

03:02:36.430 --> 03:02:37.430
wrong again.

03:02:38.110 --> 03:02:39.370
And mine was working

03:02:39.370 --> 03:02:40.010
just fine.

03:02:41.310 --> 03:02:42.110
Yep. Weird.

03:02:43.050 --> 03:02:44.490
This is weird. Something

03:02:50.270 --> 03:02:51.270
All right.

03:03:27.750 --> 03:03:29.150
Okay.

03:03:53.530 --> 03:03:54.930
Okay.

03:04:27.890 --> 03:04:29.650
That worked.

03:04:30.710 --> 03:04:32.230
And the slips are there.

03:04:43.290 --> 03:04:44.550
It should be

03:04:44.550 --> 03:04:45.690
an individual record.

03:04:46.010 --> 03:04:46.370
Yep.

03:04:47.450 --> 03:04:48.010
Okay.

03:04:48.870 --> 03:04:49.270
Okay.

03:04:49.270 --> 03:04:49.690
Okay.

03:04:51.590 --> 03:04:52.710
So that worked.

03:04:54.350 --> 03:04:55.590
What did you

03:04:55.590 --> 03:04:55.730
do?

03:04:57.890 --> 03:04:59.170
The CSV

03:04:59.170 --> 03:05:01.290
when the CSV is converted to

03:05:01.290 --> 03:05:03.330
JSON and then the JSON is sent

03:05:03.330 --> 03:05:05.550
to the split JSON, it works just

03:05:05.550 --> 03:05:07.230
fine. But when it's the

03:05:07.230 --> 03:05:09.150
when it's just a raw JSON

03:05:09.150 --> 03:05:11.230
document being

03:05:11.230 --> 03:05:13.490
picked up, it's not.

03:05:14.670 --> 03:05:15.210
And

03:05:15.210 --> 03:05:16.890
and so why

03:05:16.890 --> 03:05:18.890
didn't you get that?

03:05:37.610 --> 03:05:38.890
So I'm going to take a look at

03:05:44.410 --> 03:05:44.970
this

03:05:44.970 --> 03:05:46.970
to you.

03:06:06.030 --> 03:06:07.090
It's really weird.

03:06:07.210 --> 03:06:08.950
The time is now yesterday.

03:06:10.530 --> 03:06:11.450
All right.

03:06:11.450 --> 03:06:13.570
Let me look at

03:06:13.570 --> 03:06:15.110
what is the difference in this data

03:06:16.170 --> 03:06:16.750
now?

03:07:01.850 --> 03:07:02.450
No.

03:07:02.450 --> 03:07:03.630
It can't be a problem.

03:07:07.730 --> 03:07:08.330
No.

03:07:08.330 --> 03:07:08.690
It can't be a problem.

03:07:08.950 --> 03:07:10.930
No.

03:07:10.930 --> 03:07:10.990
It can't be a problem.

03:07:15.230 --> 03:07:16.630
Okay.

03:07:16.630 --> 03:07:17.730
Okay.

03:07:18.570 --> 03:07:19.970
Okay.

03:08:06.690 --> 03:08:10.650
That is definitely different.

03:08:10.650 --> 03:08:12.470
That is definitely different.

03:08:29.410 --> 03:08:30.250
Oh

03:08:30.250 --> 03:08:30.710
What about

03:09:34.170 --> 03:09:37.550
Good lord, the spiral web of flows.

03:09:53.970 --> 03:10:07.530
I am very forthcoming when it comes to this, and you know, I try to explain, like, you know, this, it can quickly turn into a spiral web that goes...

03:10:07.530 --> 03:10:14.550
It goes everywhere, and...

03:10:14.550 --> 03:10:18.090
I can see where it would be easy to lose track of where you're at and what's going where.

03:10:18.090 --> 03:10:25.990
Yeah, and like, I try to kind of clean up along the way. Let me delete this.

03:10:25.990 --> 03:10:36.890
Mm-hmm.

03:10:51.470 --> 03:11:03.250
And we, you know, we have, you know, we are putting in a lot of extra logging and stuff for now.

03:11:04.030 --> 03:11:17.090
And we're doing, you know, we're doing best practices, right? Best practice is, you know, add these log messages wherever you can and, you know, go from there.

03:11:17.090 --> 03:11:29.610
But, you know, if we, once we get ready to clean this up, then, you know, then we would, you know, take care of some of these, clean it up.

03:11:29.710 --> 03:11:32.810
But if I don't clean it up now a little bit, I am not going to be able to see.

03:11:32.810 --> 03:11:48.650
Okay. So I have what's coming out of the CSV to JSON going to this. We know it works, and we know it works well.

03:11:49.650 --> 03:11:59.690
Then I have this split JSON with another type of expression.

03:12:01.270 --> 03:12:07.750
That's what I was going to say. I am not setting the JSON file. I mean, that's the one thing I am not doing that you are doing.

03:12:09.050 --> 03:12:24.110
Yeah, I don't even need that step, to be honest. I just, you know, I'm just, it was part of the old file, the flow. And so since we're all working off of the old flow, I decided to just leave it in there.

03:12:24.750 --> 03:12:31.790
I get it. But if I were to sit down and do a, why are you not, did you run once?

03:13:10.810 --> 03:13:16.110
Okay. Turn that off. Run once.

03:13:18.610 --> 03:13:27.310
Should be two and one. One. All right. That ran, that ran, that ran.

03:13:41.590 --> 03:13:42.990
Perfect.

03:13:49.210 --> 03:13:50.610
Two.

03:13:54.690 --> 03:13:54.890
Right.

03:14:08.890 --> 03:14:10.410
That's what I'm talking about.

03:14:20.650 --> 03:14:22.050
Okay.

03:14:40.310 --> 03:14:42.830
What is going on here?

03:14:56.670 --> 03:14:58.070
Okay.

03:15:32.810 --> 03:15:37.290
I think I found the problem. One second. I'm going to fix this.

03:15:51.710 --> 03:16:01.070
So when we are taking our CSV and we are making a JSON document, we are doing it absolutely perfect.

03:16:01.070 --> 03:16:23.050
And so the JSON that's coming out is formatted perfect. It's formatted beautifully. So this JSON, the weather, I don't know what happened with that. It's still a valid JSON document. It's just not formatted a valid JSON document because it's just a bunch of JSON objects, not a JSON array.

03:16:23.050 --> 03:16:37.730
But give me just a second and I will fix that JSON. Because I was like, wait a minute, what the, what is going on? But yeah, I have a fix. I have a fix. We can do this.

03:16:46.050 --> 03:16:47.450
Okay.

03:16:47.450 --> 03:17:17.430
Okay. So there is the split JSON. So okay. So besides, okay, so if you are around on attribute and if you want to quickly, you know, get around this hurdle, if you're doing around on attribute, take your JSON.

03:17:17.430 --> 03:17:40.430
And just move it to a log message for now. You as well. And then that way it will continue doing your splits on the CSVs. And you can go from there. I'm going to, just a second, I'm going to provide you with an updated JSON document that is better formatted.

03:17:41.690 --> 03:18:03.410
So give me just a minute. But, you know, Thomas, you can as well, if you want, you can just take this and we will drag it to here. If the latency will let us, we will empty the queue.

03:18:05.590 --> 03:18:23.370
All right. Okay. So your flow should work now. And you shouldn't have any issues. You're not going to handle the original JSON document, but I'm about to replace it with a new document. And I'll just replace it on your desktop.

03:18:24.530 --> 03:18:45.070
Okay. Let me see. Where are, I'll see where. Server administration. Yeah, I created a folder. Oh, nice, nice, nice. Instead of working out of the downloads or upload, whatever it's. Server administration is what we're used to in our environment. So I was like, let me just mimic.

03:18:45.070 --> 03:19:07.890
Yeah, yeah. Just mimic what you, because, you know, whatever flows you set up for yourself, right, it's going to be very closely related. And when coming up with the scenario, I, you know, tried to model what you all would run into based upon, because I know I've been to YPG.

03:19:07.890 --> 03:19:24.370
I am army. I've worked for the army. So I know a little bit about what y'all's mission is and what y'all do. So I try to model this scenario off of that. Plus of other information I learned about you all.

03:19:24.370 --> 03:19:45.270
And that's why I come up with a data analyst. But the funny thing is, is actually this worked just fine. This is the same data on the last class. But the last class didn't have any kind of help starting off. They didn't have the previous example like we did.

03:19:45.270 --> 03:19:48.390
So they had to come up with their own methods.

03:19:50.110 --> 03:19:57.110
And so they handled it differently and that's why they were able to handle the, I think they were just splitting it by row.

03:19:59.570 --> 03:20:01.850
Actually, I wonder if you could do that.

03:20:01.850 --> 03:20:09.150
But anyways, work on that. I will provide a new version of that data file.

03:20:10.750 --> 03:20:12.470
And I think actually it was splitting.

03:20:13.530 --> 03:20:17.090
We could actually, let me look at one thing real quick.

03:20:20.070 --> 03:20:21.290
Oh, you're slow.

03:20:22.930 --> 03:20:23.490
Very slow.

03:20:24.550 --> 03:20:30.790
Yes, I don't, I contract to the training company. I don't work for the training company.

03:20:31.930 --> 03:20:38.810
So, like, it's not my choice on some things. And definitely not my choice here.

03:20:41.430 --> 03:20:46.770
So I think I can do a split. Oh, I could, I could do a line split.

03:20:50.030 --> 03:20:57.990
I could probably, I'm just thinking of, I'm going to put a new JSON document on you all's desktop.

03:20:58.410 --> 03:21:07.470
But if you wanted to work with that original, you could send it to a split text processor first to split by lines.

03:21:07.770 --> 03:21:14.130
And then you would have a valid JSON document because it's going to be a single record.

03:21:14.130 --> 03:21:19.630
But let me, let me, we're actually way over on time as well.

03:21:20.870 --> 03:21:29.150
So let's pause today. Tomorrow we will very quickly pick back up.

03:21:29.530 --> 03:21:35.410
We will finish this. Again, I'm not looking for a complete data flow.

03:21:35.750 --> 03:21:40.410
What I'm looking for is, you know, here's my thought process.

03:21:40.830 --> 03:21:42.930
Here's what this flow might look like.

03:21:42.930 --> 03:21:49.370
You know, Tom, you kind of had it right earlier where, you know, you laid out all your processors, you know.

03:21:49.410 --> 03:21:55.930
So what I was looking for is more of linking those together, getting as far as you can, which you have.

03:21:56.290 --> 03:22:00.150
And then, you know, what you can't get accomplished.

03:22:00.610 --> 03:22:06.710
You know, we'll get the processors and say, well, you know, I don't know how to do it,

03:22:06.710 --> 03:22:13.350
but I would bring all the attributes in and do a math function or write a little script or something.

03:22:13.670 --> 03:22:19.930
And then I'd send it out as email. And if, you know, that would have completed this scenario.

03:22:21.530 --> 03:22:26.390
So, you know, again, I know this is going to be a struggle on this scenario.

03:22:27.150 --> 03:22:33.990
I promise you we're going to have one more quick and easier one that that you will go away with the victory.

03:22:33.990 --> 03:22:46.410
But the the reason for this one is it really dives into multiple different processors, different controllers, different situations.

03:22:46.970 --> 03:22:54.590
It involves multiple different types of files, multiple files, you know, those things that exercise all of NAFA.

03:22:55.570 --> 03:23:01.890
So so that's the reason we do this scenario. But we'll we'll get it knocked out.

03:23:01.890 --> 03:23:16.390
So with that being said, unless somebody I'm going to upload a new what I'll do is I'm going to project everyone's browser and I'm going to put a new JSON document in your folder that you pick up with.

03:23:16.870 --> 03:23:21.510
So I think everyone's using the file. I'll go through and see where you're getting that file.

03:23:21.510 --> 03:23:24.310
I'll replace the JSON with another JSON document.

03:23:24.310 --> 03:23:31.250
And then you should be able to run your file all the way to splitting successfully.

03:23:32.030 --> 03:23:47.250
And then tomorrow we will quickly, you know, in the morning before break tomorrow morning, we will finish this, not necessarily finish the data flow, but finish the thought will go around the room.

03:23:48.030 --> 03:23:55.430
What I'm listening for tomorrow is going to be, you know, here is my data flow. Here's what I got accomplished.

03:23:55.570 --> 03:24:01.110
Here's what isn't accomplished. Here's my thought process. Here's what I was thinking that I could do.

03:24:01.550 --> 03:24:14.030
Here's, you know, I cleaned it up, the beautification, you know, things like that, because, you know, that tells me you've got the main concept of NAFA as well as some of the main components.

03:24:14.030 --> 03:24:20.030
You may not know all of the components, but at least you know where to go to get information.

03:24:20.310 --> 03:24:23.870
You know where to go to get a processor, those types of things.

03:24:24.530 --> 03:24:31.770
So that's what we will work on in the morning. I will handle the JSON. Anybody else have any questions?

03:24:31.770 --> 03:24:46.710
Okay, so that will conclude for today. Feel free to continue working on this and then I will come in and touch up your flow for just this component.

03:24:47.670 --> 03:24:53.730
And then that way you can, you know, that way you can do whatever you need.

03:24:55.390 --> 03:25:03.910
All right. That's great. Thanks, Josh. Yep. Yep. All right. If that's it, anybody have any pressing questions? If not, I am going to go grocery shopping.

03:25:05.490 --> 03:25:13.310
All right. Have fun. All right. Thanks, everyone. And if you're playing in your machine, I'm going to take control in just a minute.

03:25:14.290 --> 03:25:17.450
All right. Yep. Thanks, guys. Thanks.

03:26:00.630 --> 03:26:02.030
Okay.

03:26:36.990 --> 03:26:38.390
Okay.

03:27:09.610 --> 03:27:11.010
Okay.

03:27:13.310 --> 03:27:13.690
Okay.

03:28:02.690 --> 03:28:04.090
Okay.

03:28:29.770 --> 03:28:31.170
Okay.

03:28:51.250 --> 03:28:52.650
Okay.

03:28:57.790 --> 03:28:59.190
Okay.

03:28:59.190 --> 03:28:59.610
Okay.

03:29:26.390 --> 03:29:27.790
Okay.

03:29:44.290 --> 03:29:45.690
Okay.

03:30:07.490 --> 03:30:08.890
Okay.

03:30:27.790 --> 03:30:28.170
Okay.

03:30:57.790 --> 03:30:58.310
Okay.

03:30:58.310 --> 03:30:58.350
Okay.

03:31:22.550 --> 03:31:23.950
Okay.

03:31:26.550 --> 03:31:26.950
Okay.

03:31:28.950 --> 03:31:29.050
Okay.

03:31:57.890 --> 03:31:59.290
Okay.

03:32:05.570 --> 03:32:06.690
Okay.

03:32:12.850 --> 03:32:13.390
Okay.

03:32:14.990 --> 03:32:15.410
Okay.

03:32:16.310 --> 03:32:17.270
Okay.

03:32:17.690 --> 03:32:17.830
Okay.

03:33:20.050 --> 03:33:20.090
.

03:33:20.090 --> 03:33:20.110
.

03:33:35.790 --> 03:33:35.830
.

03:33:35.830 --> 03:33:35.850
.

03:33:35.850 --> 03:33:35.870
.

03:33:35.870 --> 03:33:37.230
.

03:33:37.230 --> 03:33:37.430
.

03:33:52.970 --> 03:33:54.370
.

03:33:55.810 --> 03:33:57.210
.

03:34:21.670 --> 03:34:23.070
.

03:34:23.070 --> 03:34:23.090
.

03:34:23.090 --> 03:34:24.110
.

03:34:51.910 --> 03:34:52.950
.

03:34:52.950 --> 03:34:52.970
.

03:34:52.970 --> 03:34:52.990
.

03:34:52.990 --> 03:34:53.410
.

03:34:53.410 --> 03:34:53.430
.

03:34:59.130 --> 03:35:00.530
.

03:35:03.070 --> 03:35:04.470
.

03:35:04.470 --> 03:35:04.750
.

03:35:13.230 --> 03:35:13.790
.

03:35:13.790 --> 03:35:13.830
.

03:35:13.830 --> 03:35:15.210
.

03:35:50.770 --> 03:35:52.170
.

03:35:52.170 --> 03:35:52.790
.

03:35:52.790 --> 03:35:54.370
.

03:35:54.370 --> 03:35:57.010
.

03:35:57.010 --> 03:35:58.070
.

03:35:58.070 --> 03:35:58.290
.

03:36:14.110 --> 03:36:15.510
.

03:36:15.510 --> 03:36:16.350
.

03:36:33.390 --> 03:36:34.250
.

03:36:34.250 --> 03:36:34.270
.

03:36:34.270 --> 03:36:34.290
.

03:36:34.290 --> 03:36:34.310
.

03:36:34.830 --> 03:36:34.870
.

03:37:04.150 --> 03:37:04.190
.

03:37:04.190 --> 03:37:04.210
.

03:37:04.210 --> 03:37:04.230
.

03:37:04.230 --> 03:37:04.330
.

03:37:04.330 --> 03:37:05.170
.

03:37:14.230 --> 03:37:14.510
.

03:37:14.510 --> 03:37:14.630
.

03:37:14.630 --> 03:37:16.150
.

03:37:32.210 --> 03:37:33.610
.

03:37:33.610 --> 03:37:35.430
.

03:37:35.430 --> 03:37:35.450
.

03:37:43.670 --> 03:37:45.070
.

03:37:50.570 --> 03:37:51.970
.

03:38:01.290 --> 03:38:02.690
.

03:38:02.690 --> 03:38:04.250
.

03:38:04.250 --> 03:38:04.330
.

03:38:04.330 --> 03:38:04.350
.

03:38:10.050 --> 03:38:11.450
.

03:38:11.450 --> 03:38:12.810
.

03:38:12.810 --> 03:38:13.610
.

03:38:28.290 --> 03:38:29.690
.

03:38:31.850 --> 03:38:33.250
.

03:38:36.430 --> 03:38:37.830
.

03:38:37.830 --> 03:38:40.330
.

03:38:44.130 --> 03:38:45.530
.

03:38:45.530 --> 03:38:46.670
.

03:38:46.670 --> 03:38:48.010
.

03:38:55.510 --> 03:38:56.910
.

03:38:56.910 --> 03:38:57.430
.

03:38:57.430 --> 03:38:59.270
.

03:39:07.330 --> 03:39:08.730
.

03:39:10.770 --> 03:39:12.170
.

03:39:18.530 --> 03:39:19.930
.

03:39:19.930 --> 03:39:20.370
.

03:39:20.370 --> 03:39:22.370
.

03:39:30.550 --> 03:39:31.950
.

03:39:31.950 --> 03:39:31.970
.

03:39:41.570 --> 03:39:42.970
.

03:39:42.970 --> 03:39:43.990
.

03:39:43.990 --> 03:39:44.010
.

03:39:44.010 --> 03:39:45.130
.

03:39:48.950 --> 03:39:50.350
.

03:39:50.350 --> 03:39:52.590
.

03:39:52.590 --> 03:39:53.330
.

03:39:57.190 --> 03:39:58.590
.

03:39:58.590 --> 03:39:59.870
.

03:40:15.850 --> 03:40:17.250
.

03:40:19.730 --> 03:40:21.130
.

03:40:29.250 --> 03:40:30.650
.

03:40:30.650 --> 03:40:32.390
.

03:40:43.730 --> 03:40:45.130
.

03:40:45.130 --> 03:40:47.630
.

03:41:01.190 --> 03:41:02.590
.

03:41:02.590 --> 03:41:02.650
.

03:41:02.650 --> 03:41:02.670
.

03:41:12.510 --> 03:41:13.110
.

03:41:13.110 --> 03:41:13.630
.

03:41:13.630 --> 03:41:13.710
.

03:41:13.710 --> 03:41:15.010
.

03:41:42.270 --> 03:41:43.670
.

03:41:43.670 --> 03:41:43.690
.

03:41:43.690 --> 03:41:46.290
.

03:41:53.690 --> 03:41:54.230
.

03:41:56.510 --> 03:41:57.910
.

03:42:01.990 --> 03:42:03.390
.

03:42:03.390 --> 03:42:03.470
.

03:42:03.470 --> 03:42:06.110
.

03:42:06.110 --> 03:42:06.130
.

03:42:12.030 --> 03:42:13.430
.

03:42:13.430 --> 03:42:14.410
.

03:42:41.970 --> 03:42:43.370
.

03:42:43.370 --> 03:42:43.410
.

03:42:43.410 --> 03:42:44.830
.

03:42:56.410 --> 03:42:57.810
.

03:42:57.810 --> 03:42:58.730
.

03:42:58.730 --> 03:43:01.070
.

03:43:11.370 --> 03:43:12.770
.

03:43:12.770 --> 03:43:15.130
.

03:43:20.310 --> 03:43:21.710
.

03:43:21.710 --> 03:43:23.490
.

03:43:23.490 --> 03:43:23.870
.

03:43:33.950 --> 03:43:35.350
.

03:44:03.930 --> 03:44:05.330
.

03:44:07.870 --> 03:44:09.270
.

03:44:22.170 --> 03:44:23.570
.

03:44:23.570 --> 03:44:24.110
.

03:44:40.270 --> 03:44:41.350
.

03:44:41.350 --> 03:44:41.370
.

03:44:41.370 --> 03:44:42.390
.

03:44:49.390 --> 03:44:50.790
.

03:44:56.030 --> 03:44:57.430
.

03:45:00.990 --> 03:45:02.390
.

03:45:02.390 --> 03:45:02.490
.

03:45:02.490 --> 03:45:03.670
.

03:45:12.670 --> 03:45:14.070
.

03:45:15.970 --> 03:45:17.370
.

03:45:28.810 --> 03:45:29.070
.

03:45:30.210 --> 03:45:31.470
.

03:45:31.470 --> 03:45:32.070
.

03:45:40.210 --> 03:45:40.710
.

03:45:40.710 --> 03:45:40.830
.

03:45:42.270 --> 03:45:43.670
.

03:45:50.410 --> 03:45:51.810
.

03:45:51.810 --> 03:45:51.830
.

03:45:53.390 --> 03:45:54.790
.

03:46:05.690 --> 03:46:07.090
.

03:46:07.090 --> 03:46:08.330
.

03:46:08.330 --> 03:46:08.670
.

03:46:35.810 --> 03:46:36.490
.

03:46:36.490 --> 03:46:36.570
.

03:46:36.570 --> 03:46:36.670
.

03:46:36.670 --> 03:46:36.710
.

03:46:45.130 --> 03:46:45.210
.

03:46:45.210 --> 03:46:45.230
.

03:46:45.230 --> 03:46:45.730
.

03:46:48.870 --> 03:46:50.270
.

03:46:50.270 --> 03:46:52.070
.

03:46:52.070 --> 03:46:52.150
.

03:46:52.150 --> 03:46:52.170
.

03:47:04.850 --> 03:47:05.010
.

03:47:05.010 --> 03:47:07.510
.

03:47:07.510 --> 03:47:07.530
.

03:47:18.550 --> 03:47:19.950
.

03:47:19.950 --> 03:47:21.250
.

03:47:25.150 --> 03:47:26.550
.

03:47:29.610 --> 03:47:31.010
.

03:47:31.010 --> 03:47:31.030
.

03:47:31.030 --> 03:47:31.230
.

03:47:35.350 --> 03:47:36.230
.

03:47:36.750 --> 03:47:36.770
.

03:47:43.930 --> 03:47:45.330
.

03:47:45.330 --> 03:47:47.810
.

03:47:55.330 --> 03:47:55.390
.

03:47:55.390 --> 03:47:55.750
.

03:47:55.750 --> 03:47:56.470
.

03:47:56.470 --> 03:47:57.070
.

03:48:05.590 --> 03:48:06.910
.

03:48:06.910 --> 03:48:07.210
.

03:48:07.210 --> 03:48:08.490
.

03:48:17.930 --> 03:48:19.330
.

03:48:19.330 --> 03:48:20.570
.

03:48:32.830 --> 03:48:34.230
.

03:48:34.230 --> 03:48:35.830
.

03:48:35.830 --> 03:48:35.910
.

03:48:51.650 --> 03:48:53.050
.

03:48:53.050 --> 03:48:54.310
.

03:48:54.310 --> 03:48:54.330
.

03:49:09.890 --> 03:49:11.290
.

03:49:11.290 --> 03:49:13.190
.

03:49:13.190 --> 03:49:13.210
.

03:49:21.890 --> 03:49:23.290
.

03:49:23.290 --> 03:49:24.530
.

03:49:31.090 --> 03:49:32.490
.

03:49:32.490 --> 03:49:33.890
.

03:49:33.890 --> 03:49:34.830
.

03:49:45.770 --> 03:49:47.170
.

03:49:47.170 --> 03:49:48.990
.

03:49:48.990 --> 03:49:49.010
.

03:50:03.150 --> 03:50:04.550
.

03:50:04.550 --> 03:50:05.830
.

03:50:14.710 --> 03:50:16.110
.

03:50:16.110 --> 03:50:17.050
.

03:50:17.050 --> 03:50:17.070
.

03:50:23.290 --> 03:50:24.250
.

03:50:24.250 --> 03:50:24.270
.

03:50:24.270 --> 03:50:24.850
.

03:50:34.130 --> 03:50:35.530
.

03:50:35.530 --> 03:50:36.710
.

03:50:45.630 --> 03:50:47.030
.

03:50:47.030 --> 03:50:47.210
.

03:50:47.210 --> 03:50:47.950
.

03:51:00.270 --> 03:51:01.670
.

03:51:01.670 --> 03:51:02.850
.

03:51:02.850 --> 03:51:03.090
.

03:51:15.150 --> 03:51:16.550
.

03:51:16.550 --> 03:51:17.710
.

03:51:17.710 --> 03:51:18.410
.

03:51:32.830 --> 03:51:34.230
.

03:51:34.230 --> 03:51:34.430
.

03:51:34.430 --> 03:51:34.450
.

03:51:45.410 --> 03:51:45.810
.

03:51:57.090 --> 03:51:58.490
.

03:51:58.490 --> 03:52:00.710
.

03:52:00.710 --> 03:52:02.130
.

03:52:09.490 --> 03:52:10.890
.

03:52:10.890 --> 03:52:13.610
.

03:52:20.890 --> 03:52:21.370
.

03:52:21.370 --> 03:52:22.990
.

03:52:22.990 --> 03:52:24.270
.

03:52:24.270 --> 03:52:24.670
.

03:52:34.010 --> 03:52:35.410
.

03:52:35.410 --> 03:52:36.490
.

03:52:36.490 --> 03:52:36.510
.

03:52:48.550 --> 03:52:49.110
.

03:52:49.110 --> 03:52:49.190
.

03:52:49.190 --> 03:52:49.470
.

03:52:49.470 --> 03:52:51.130
.

03:52:56.370 --> 03:52:57.770
.

03:52:57.770 --> 03:53:00.270
.

03:53:11.930 --> 03:53:12.770
.

03:53:13.330 --> 03:53:14.250
.

03:53:26.230 --> 03:53:27.630
.

03:53:27.630 --> 03:53:29.570
.

03:53:37.630 --> 03:53:38.490
.

03:53:38.490 --> 03:53:38.610
.

03:53:51.070 --> 03:53:52.470
.

03:53:52.470 --> 03:53:52.510
.

03:54:02.670 --> 03:54:04.070
.

03:54:04.070 --> 03:54:05.710
.

03:54:05.710 --> 03:54:05.870
.

03:54:05.870 --> 03:54:06.790
.

03:54:19.350 --> 03:54:20.750
.

03:54:20.750 --> 03:54:20.770
.

03:54:20.770 --> 03:54:22.270
.

03:54:22.270 --> 03:54:22.510
.

03:54:30.770 --> 03:54:31.470
.

03:54:31.470 --> 03:54:31.510
.

03:54:31.510 --> 03:54:32.550
.

03:54:32.550 --> 03:54:35.270
.

03:54:38.050 --> 03:54:39.450
.

03:54:39.450 --> 03:54:39.650
.

03:54:39.650 --> 03:54:41.530
.

03:54:52.250 --> 03:54:53.650
.

03:54:53.650 --> 03:54:54.570
.

03:55:05.210 --> 03:55:06.610
.

03:55:35.190 --> 03:55:36.590
.

03:55:38.250 --> 03:55:39.650
.

03:55:43.070 --> 03:55:44.470
.

03:55:44.470 --> 03:55:44.490
.

03:55:47.330 --> 03:55:48.730
.

03:55:51.330 --> 03:55:52.730
.

03:55:54.470 --> 03:55:55.870
.

03:56:10.010 --> 03:56:11.410
.

03:56:11.410 --> 03:56:11.650
.

03:56:19.530 --> 03:56:20.930
.

03:56:22.810 --> 03:56:24.210
.

03:56:29.070 --> 03:56:29.210
.

03:56:36.390 --> 03:56:37.790
.

03:56:37.790 --> 03:56:37.870
.

03:56:51.290 --> 03:56:52.690
.

03:56:54.850 --> 03:56:56.250
.

03:56:59.870 --> 03:57:01.270
.

03:57:06.250 --> 03:57:06.970
.

03:57:06.970 --> 03:57:08.930
.

03:57:08.930 --> 03:57:08.950
.

03:57:25.550 --> 03:57:26.950
.

03:57:26.950 --> 03:57:28.310
.

03:57:28.310 --> 03:57:28.450
.

03:57:40.590 --> 03:57:41.990
.

03:57:51.930 --> 03:57:53.330
.

03:57:53.330 --> 03:57:53.390
.

03:57:53.390 --> 03:57:53.430
.

03:57:58.790 --> 03:58:00.190
.

03:58:00.190 --> 03:58:01.510
.

03:58:01.510 --> 03:58:02.170
.

03:58:04.030 --> 03:58:05.430
.

03:58:11.850 --> 03:58:13.250
.

03:58:13.250 --> 03:58:13.470
.

03:58:21.750 --> 03:58:23.150
.

03:58:23.150 --> 03:58:24.190
.

03:58:24.190 --> 03:58:24.210
.

03:58:37.230 --> 03:58:38.630
.

03:58:38.630 --> 03:58:38.670
.

03:58:44.650 --> 03:58:45.970
.

03:58:45.970 --> 03:58:46.990
.

03:58:46.990 --> 03:58:47.290
.

03:58:47.290 --> 03:58:47.450
.

03:58:47.450 --> 03:58:47.470
.

03:59:05.530 --> 03:59:05.770
.

03:59:05.770 --> 03:59:05.850
.

03:59:05.850 --> 03:59:07.530
.

03:59:15.850 --> 03:59:16.490
.

03:59:16.490 --> 03:59:17.930
.

03:59:24.970 --> 03:59:26.370
.

03:59:26.370 --> 03:59:28.370
.

03:59:43.470 --> 03:59:44.870
.

03:59:44.870 --> 03:59:44.950
.

03:59:44.950 --> 03:59:44.970
.

03:59:44.970 --> 03:59:45.950
.

03:59:58.850 --> 04:00:00.250
.

04:00:00.250 --> 04:00:02.230
.

04:00:15.770 --> 04:00:17.170
.

04:00:17.170 --> 04:00:17.250
.

04:00:17.250 --> 04:00:17.290
.

04:00:17.290 --> 04:00:19.770
.

04:00:19.770 --> 04:00:19.790
.

04:00:26.990 --> 04:00:28.390
.

04:00:31.550 --> 04:00:32.950
.

04:00:33.630 --> 04:00:33.870
.

04:00:33.870 --> 04:00:33.950
.

04:00:40.010 --> 04:00:40.250
.

04:00:40.250 --> 04:00:40.310
.

04:00:40.310 --> 04:00:40.430
.

04:00:40.430 --> 04:00:42.330
.

04:00:42.330 --> 04:00:42.670
.

04:00:47.870 --> 04:00:49.270
.

04:00:49.270 --> 04:00:51.650
.

04:01:00.850 --> 04:01:02.250
.

04:01:05.470 --> 04:01:06.870
.

04:01:13.250 --> 04:01:14.650
.

04:01:17.530 --> 04:01:18.930
.

04:01:32.390 --> 04:01:33.790
.

04:01:33.790 --> 04:01:33.810
.

04:01:47.070 --> 04:01:48.470
.

04:02:02.390 --> 04:02:03.790
.

04:02:03.790 --> 04:02:05.250
.

04:02:05.250 --> 04:02:05.270
.

04:02:21.330 --> 04:02:22.730
.

04:02:22.730 --> 04:02:24.490
.

04:02:24.490 --> 04:02:26.710
.

04:02:30.070 --> 04:02:31.470
.

04:02:31.470 --> 04:02:31.770
.

04:02:35.350 --> 04:02:36.750
.

04:02:43.730 --> 04:02:45.130
.

04:02:45.130 --> 04:02:46.270
.

04:02:58.970 --> 04:03:00.370
.

04:03:00.370 --> 04:03:00.450
.

04:03:05.210 --> 04:03:05.450
.

04:03:06.610 --> 04:03:09.390
.

04:03:09.390 --> 04:03:10.650
.

04:03:19.110 --> 04:03:20.510
.

04:03:20.510 --> 04:03:20.690
.

04:03:20.690 --> 04:03:21.490
.

04:03:21.490 --> 04:03:23.910
.

04:03:31.730 --> 04:03:33.130
.

04:03:33.130 --> 04:03:33.930
.

04:03:50.310 --> 04:03:51.710
.

04:03:51.710 --> 04:03:51.730
.

04:04:11.010 --> 04:04:12.410
.

04:04:12.410 --> 04:04:12.490
.

04:04:21.730 --> 04:04:22.510
.

04:04:32.450 --> 04:04:33.850
.

04:04:33.850 --> 04:04:35.290
.

04:04:45.170 --> 04:04:46.570
.

04:04:46.570 --> 04:04:47.970
.

04:04:51.870 --> 04:04:53.270
.

04:04:53.270 --> 04:04:55.310
.

04:05:21.810 --> 04:05:23.210
.

04:05:23.210 --> 04:05:23.230
.

04:05:23.230 --> 04:05:23.250
.

04:05:23.250 --> 04:05:24.330
.

04:05:24.330 --> 04:05:24.350
.

04:05:33.590 --> 04:05:34.990
.

04:05:34.990 --> 04:05:37.770
.

04:05:52.430 --> 04:05:53.830
.

04:05:53.830 --> 04:05:53.850
.

04:05:53.850 --> 04:05:53.870
.

04:05:53.870 --> 04:05:56.030
.

04:06:21.770 --> 04:06:23.170
.

04:06:23.170 --> 04:06:23.190
.

04:06:23.190 --> 04:06:23.850
.

04:06:23.850 --> 04:06:26.170
.

04:06:34.330 --> 04:06:35.730
.

04:07:04.310 --> 04:07:05.710
.

04:07:05.710 --> 04:07:06.270
.

04:07:12.930 --> 04:07:14.330
.

04:07:14.330 --> 04:07:17.090
.

04:07:27.910 --> 04:07:29.310
.

04:07:29.310 --> 04:07:29.990
.

04:07:29.990 --> 04:07:30.010
.

04:07:57.930 --> 04:07:59.290
.

04:07:59.290 --> 04:07:59.730
.

04:08:18.990 --> 04:08:20.390
.

04:08:20.390 --> 04:08:20.410
.

04:08:27.870 --> 04:08:29.270
.

04:08:32.430 --> 04:08:32.470
.

04:08:32.470 --> 04:08:32.490
.

04:08:46.250 --> 04:08:46.290
.

04:08:46.290 --> 04:08:46.310
.

04:08:46.310 --> 04:08:46.330
.

04:08:46.330 --> 04:08:48.490
.

04:09:03.570 --> 04:09:04.970
.

04:09:17.850 --> 04:09:19.250
.

04:09:19.250 --> 04:09:19.570
.

04:09:19.570 --> 04:09:20.910
.

04:09:20.910 --> 04:09:22.890
.

04:09:49.430 --> 04:09:50.830
.

04:09:50.830 --> 04:09:50.850
.

04:09:50.850 --> 04:09:50.890
.

04:09:50.890 --> 04:09:53.010
.

04:10:08.370 --> 04:10:09.770
.

04:10:09.770 --> 04:10:09.790
.

04:10:19.470 --> 04:10:20.870
.

04:10:20.870 --> 04:10:21.630
.

04:10:21.630 --> 04:10:21.650
.

04:10:36.870 --> 04:10:38.270
.

04:10:38.270 --> 04:10:40.090
.

04:10:45.570 --> 04:10:46.970
.

04:10:49.130 --> 04:10:50.530
.

04:11:02.790 --> 04:11:04.190
.

04:11:04.190 --> 04:11:06.270
.

04:11:14.030 --> 04:11:15.430
.

04:11:15.430 --> 04:11:15.710
.

04:11:15.710 --> 04:11:17.350
.

04:11:17.350 --> 04:11:18.530
.

04:11:18.530 --> 04:11:20.250
.

04:11:20.250 --> 04:11:20.270
.

04:11:20.270 --> 04:11:21.570
.

04:11:27.070 --> 04:11:28.470
.

04:11:28.470 --> 04:11:29.010
.

04:11:29.010 --> 04:11:31.790
.

04:11:57.570 --> 04:11:58.970
.

04:11:58.970 --> 04:11:58.990
.

04:11:58.990 --> 04:12:00.010
.

04:12:02.070 --> 04:12:03.470
.

04:12:03.470 --> 04:12:03.550
.

04:12:03.550 --> 04:12:04.510
.

04:12:09.770 --> 04:12:11.170
.

04:12:13.830 --> 04:12:15.230
.

04:12:15.230 --> 04:12:15.250
.

04:12:20.970 --> 04:12:22.370
.

04:12:22.370 --> 04:12:22.670
.

04:12:25.090 --> 04:12:26.490
.

04:12:43.950 --> 04:12:45.350
.

04:12:56.590 --> 04:12:57.990
.

04:13:06.830 --> 04:13:08.230
.

04:13:08.230 --> 04:13:09.090
.

04:13:37.290 --> 04:13:38.170
.

04:13:38.170 --> 04:13:38.190
.

04:13:38.190 --> 04:13:38.210
.

04:13:38.210 --> 04:13:40.310
.

04:13:48.390 --> 04:13:49.790
.

04:13:49.790 --> 04:13:51.450
.

04:13:53.450 --> 04:13:54.850
.

04:13:54.850 --> 04:13:55.630
.

04:13:55.630 --> 04:13:57.790
.

04:13:57.790 --> 04:13:57.810
.

04:14:08.590 --> 04:14:09.990
.

04:14:09.990 --> 04:14:11.930
.

04:14:19.930 --> 04:14:21.330
.

04:14:25.190 --> 04:14:26.590
.

04:14:37.310 --> 04:14:38.710
.

04:14:38.710 --> 04:14:40.370
.

04:14:53.470 --> 04:14:53.710
.

04:14:54.870 --> 04:14:55.910
.

04:14:55.910 --> 04:14:55.930
.

04:15:22.390 --> 04:15:23.790
.

04:15:23.790 --> 04:15:24.830
.

04:15:24.830 --> 04:15:24.850
.

04:15:24.850 --> 04:15:25.630
.

04:15:35.650 --> 04:15:37.050
.

04:16:05.630 --> 04:16:07.030
.

04:16:07.030 --> 04:16:07.070
.

04:16:36.910 --> 04:16:36.990
.

04:16:36.990 --> 04:16:37.010
.

04:16:37.010 --> 04:16:38.290
.

04:17:05.610 --> 04:17:06.930
.

04:17:06.930 --> 04:17:06.970
.

04:17:06.970 --> 04:17:06.990
.

04:17:08.370 --> 04:17:08.610
.

04:17:08.610 --> 04:17:08.630
.

04:17:36.590 --> 04:17:36.830
.

04:17:36.830 --> 04:17:36.950
.

04:17:36.950 --> 04:17:36.970
.

04:17:38.730 --> 04:17:39.210
.

04:17:39.210 --> 04:17:39.450
.

04:17:55.790 --> 04:17:56.270
.

04:17:56.270 --> 04:17:56.290
.

04:17:56.290 --> 04:17:56.310
.

04:17:56.310 --> 04:17:58.670
.

04:18:24.810 --> 04:18:26.210
.

04:18:26.210 --> 04:18:26.270
.

04:18:26.270 --> 04:18:26.290
.

04:18:26.290 --> 04:18:27.430
.

04:18:44.010 --> 04:18:45.410
.

04:18:45.410 --> 04:18:45.430
.

04:18:54.870 --> 04:18:56.270
.

04:18:58.050 --> 04:18:59.450
.

04:19:24.690 --> 04:19:26.090
.

04:19:26.090 --> 04:19:26.230
.

04:19:26.230 --> 04:19:26.250
.

04:19:26.250 --> 04:19:27.570
.

04:19:27.570 --> 04:19:27.590
.

04:19:44.490 --> 04:19:45.890
.

04:19:45.890 --> 04:19:45.910
.

04:19:54.830 --> 04:19:56.230
.

04:19:56.230 --> 04:19:56.770
.

04:19:56.770 --> 04:19:58.170
.

04:20:01.790 --> 04:20:03.190
.

04:20:03.190 --> 04:20:04.650
.

04:20:06.650 --> 04:20:08.050
.

04:20:08.050 --> 04:20:08.070
.

04:20:10.890 --> 04:20:12.290
.

04:20:36.650 --> 04:20:38.050
.

04:20:38.050 --> 04:20:39.430
.

04:20:39.430 --> 04:20:39.930
.

04:20:52.630 --> 04:20:53.050
.

04:20:54.030 --> 04:20:55.350
.

04:20:55.350 --> 04:20:55.450
.

04:21:07.050 --> 04:21:08.450
.

04:21:08.450 --> 04:21:10.130
.

04:21:12.030 --> 04:21:13.430
.

04:21:22.630 --> 04:21:24.030
.

04:21:53.150 --> 04:21:53.570
.

04:21:53.570 --> 04:21:53.590
.

04:21:53.590 --> 04:21:53.990
.

04:21:53.990 --> 04:21:54.010
.

04:21:54.010 --> 04:21:56.310
.

04:22:04.490 --> 04:22:05.890
.

04:22:05.890 --> 04:22:06.350
.

04:22:06.350 --> 04:22:08.070
.

04:22:08.070 --> 04:22:08.090
.

04:22:16.550 --> 04:22:17.950
.

04:22:17.950 --> 04:22:18.130
.

04:22:20.590 --> 04:22:21.990
.

04:22:29.690 --> 04:22:31.090
.

04:22:34.330 --> 04:22:35.730
.

04:22:35.730 --> 04:22:35.750
.

04:22:41.550 --> 04:22:42.950
.

04:22:42.950 --> 04:22:45.570
.

04:22:53.470 --> 04:22:54.870
.

04:22:54.870 --> 04:22:55.270
.

04:22:57.110 --> 04:22:58.510
.

04:23:16.390 --> 04:23:17.790
.

04:23:17.790 --> 04:23:17.810
.

04:23:23.850 --> 04:23:25.250
.

04:23:25.250 --> 04:23:27.030
.

04:23:27.030 --> 04:23:27.710
.

04:23:32.250 --> 04:23:33.650
.

04:23:33.650 --> 04:23:35.930
.

04:23:47.290 --> 04:23:48.690
.

04:23:48.690 --> 04:23:49.450
.

04:23:49.450 --> 04:23:50.490
.

04:23:50.490 --> 04:23:51.210
.

04:24:06.230 --> 04:24:07.630
.

04:24:07.630 --> 04:24:08.570
.

04:24:08.570 --> 04:24:09.290
.

04:24:21.710 --> 04:24:23.110
.

04:24:23.110 --> 04:24:23.450
.

04:24:23.450 --> 04:24:24.130
.

04:24:30.650 --> 04:24:32.010
.

04:24:32.010 --> 04:24:32.290
.

04:24:32.290 --> 04:24:34.690
.

04:24:40.490 --> 04:24:41.890
.

04:24:44.190 --> 04:24:45.590
.

04:25:10.390 --> 04:25:11.790
.

04:25:11.790 --> 04:25:11.850
.

04:25:11.850 --> 04:25:11.870
.

04:25:13.850 --> 04:25:15.250
.

04:25:40.250 --> 04:25:41.650
.

04:25:41.650 --> 04:25:41.830
.

04:25:41.830 --> 04:25:41.850
.

04:26:10.430 --> 04:26:11.830
.

04:26:11.830 --> 04:26:14.110
.

04:26:21.830 --> 04:26:22.530
.

04:26:22.530 --> 04:26:23.590
.

04:26:35.870 --> 04:26:37.270
.

04:26:37.270 --> 04:26:38.630
.

04:26:38.630 --> 04:26:39.610
.

04:27:05.810 --> 04:27:07.210
.

04:27:07.210 --> 04:27:07.230
.

04:27:07.230 --> 04:27:07.250
.

04:27:07.250 --> 04:27:08.110
.

04:27:16.790 --> 04:27:18.190
.

04:27:21.810 --> 04:27:23.210
.

04:27:23.210 --> 04:27:25.830
.

04:27:32.950 --> 04:27:34.350
.

04:27:34.350 --> 04:27:35.150
.

04:27:35.150 --> 04:27:36.670
.

04:27:48.910 --> 04:27:50.310
.

04:27:50.310 --> 04:27:50.330
.

04:27:50.330 --> 04:27:51.570
.

04:28:00.410 --> 04:28:01.810
.

04:28:01.810 --> 04:28:03.130
.

04:28:03.130 --> 04:28:03.470
.

04:28:18.690 --> 04:28:20.090
.

04:28:20.090 --> 04:28:20.770
.

04:28:20.770 --> 04:28:20.790
.

04:28:49.350 --> 04:28:50.050
.

04:28:50.050 --> 04:28:50.070
.

04:28:50.070 --> 04:28:50.910
.

04:29:18.630 --> 04:29:20.030
.

04:29:20.030 --> 04:29:20.050
.

04:29:20.050 --> 04:29:22.430
.

04:29:34.330 --> 04:29:35.050
.

04:29:35.730 --> 04:29:37.490
.

04:29:52.250 --> 04:29:53.650
.

04:29:53.650 --> 04:29:55.210
.

04:30:10.410 --> 04:30:11.810
.

04:30:11.810 --> 04:30:11.830
.

04:30:11.830 --> 04:30:11.850
.

04:30:11.850 --> 04:30:11.990
.

04:30:21.410 --> 04:30:22.810
.

04:30:22.810 --> 04:30:22.850
.

04:30:52.690 --> 04:30:52.750
.

04:30:52.750 --> 04:30:52.770
.

04:30:52.770 --> 04:30:52.790
.

04:30:52.790 --> 04:30:54.790
.

04:31:03.150 --> 04:31:04.550
.

04:31:04.550 --> 04:31:04.570
.

04:31:04.570 --> 04:31:04.590
.

04:31:04.590 --> 04:31:05.730
.

04:31:16.030 --> 04:31:17.430
.

04:31:17.430 --> 04:31:19.170
.

04:31:19.170 --> 04:31:19.290
.

04:31:30.810 --> 04:31:32.210
.

04:31:32.210 --> 04:31:33.250
.

04:31:42.330 --> 04:31:43.730
.

04:31:43.730 --> 04:31:45.530
.

04:31:54.250 --> 04:31:55.650
.

04:31:55.650 --> 04:31:55.810
.

04:31:55.810 --> 04:31:57.270
.

04:32:05.910 --> 04:32:07.310
.

04:32:07.310 --> 04:32:07.690
.

04:32:07.690 --> 04:32:09.210
.

04:32:18.450 --> 04:32:19.850
.

04:32:19.850 --> 04:32:21.590
.

04:32:29.850 --> 04:32:30.590
.

04:32:30.590 --> 04:32:30.910
.

04:32:30.910 --> 04:32:31.130
.

04:32:31.130 --> 04:32:31.550
.

04:32:45.510 --> 04:32:46.430
.

04:32:46.430 --> 04:32:46.890
.

04:32:48.350 --> 04:32:49.750
.

04:33:03.910 --> 04:33:05.310
.

04:33:05.310 --> 04:33:07.810
.

04:33:07.810 --> 04:33:07.830
.

04:33:15.350 --> 04:33:16.750
.

04:33:16.750 --> 04:33:18.910
.

04:33:28.930 --> 04:33:30.330
.

04:33:30.330 --> 04:33:31.290
.

04:33:47.910 --> 04:33:48.890
.

04:33:48.890 --> 04:33:48.910
.

04:33:48.910 --> 04:33:48.930
.

04:33:48.930 --> 04:33:49.670
.

04:34:04.850 --> 04:34:06.250
.

04:34:06.250 --> 04:34:06.270
.

04:34:06.270 --> 04:34:08.910
.

04:34:34.110 --> 04:34:35.510
.

04:34:35.510 --> 04:34:35.530
.

04:34:35.530 --> 04:34:35.550
.

04:34:35.550 --> 04:34:36.010
.

04:34:36.010 --> 04:34:37.250
.

04:34:48.810 --> 04:34:50.210
.

04:34:50.210 --> 04:34:50.230
.

04:34:50.230 --> 04:34:52.850
.

04:34:52.850 --> 04:34:52.870
.

04:35:00.590 --> 04:35:01.990
.

04:35:01.990 --> 04:35:02.750
.

04:35:02.750 --> 04:35:05.330
.

04:35:19.130 --> 04:35:20.530
.

04:35:20.530 --> 04:35:21.110
.

04:35:31.250 --> 04:35:32.650
.

04:35:32.650 --> 04:35:32.690
.

04:35:37.730 --> 04:35:39.130
.

04:35:39.130 --> 04:35:40.050
.

04:35:42.450 --> 04:35:43.850
.

04:35:47.950 --> 04:35:49.350
.

04:35:49.350 --> 04:35:50.550
.

04:35:57.650 --> 04:35:59.050
.

04:36:27.630 --> 04:36:29.030
.

04:36:29.030 --> 04:36:31.690
.

04:36:57.550 --> 04:36:58.950
.

04:36:58.950 --> 04:36:58.990
.

04:36:58.990 --> 04:36:59.010
.

04:36:59.010 --> 04:36:59.530
.

04:36:59.530 --> 04:36:59.810
.

04:37:28.390 --> 04:37:28.950
.

04:37:28.950 --> 04:37:28.970
.

04:37:28.970 --> 04:37:28.990
.

04:37:28.990 --> 04:37:29.310
.

04:37:57.230 --> 04:37:58.250
.

04:37:58.250 --> 04:37:58.270
.

04:37:58.270 --> 04:37:58.970
.

04:37:58.970 --> 04:38:01.530
.

04:38:16.410 --> 04:38:17.810
.

04:38:17.810 --> 04:38:17.830
.

04:38:17.830 --> 04:38:17.850
.

04:38:19.890 --> 04:38:21.290
.

04:38:34.270 --> 04:38:35.670
.

04:39:05.570 --> 04:39:05.610
.

04:39:05.610 --> 04:39:05.630
.

04:39:05.630 --> 04:39:05.650
.

04:39:05.650 --> 04:39:07.430
.

04:39:07.430 --> 04:39:07.610
.

04:39:16.790 --> 04:39:18.190
.

04:39:18.190 --> 04:39:19.910
.

04:39:19.910 --> 04:39:20.190
.

04:39:27.730 --> 04:39:29.130
.

04:39:29.130 --> 04:39:30.710
.

04:39:33.710 --> 04:39:35.110
.

04:39:35.110 --> 04:39:35.570
.

04:39:35.570 --> 04:39:37.010
.

04:39:45.630 --> 04:39:47.030
.

04:39:47.030 --> 04:39:48.690
.

04:39:53.710 --> 04:39:55.110
.

04:39:55.110 --> 04:39:55.130
.

04:39:55.130 --> 04:39:57.850
.

04:40:05.810 --> 04:40:07.210
.

04:40:07.210 --> 04:40:08.790
.

04:40:08.790 --> 04:40:08.830
.

04:40:17.210 --> 04:40:17.490
.

04:40:17.490 --> 04:40:18.390
.

04:40:18.390 --> 04:40:19.590
.

04:40:24.090 --> 04:40:25.490
.

04:40:25.490 --> 04:40:26.290
.

04:40:26.290 --> 04:40:27.510
.

04:40:36.430 --> 04:40:37.830
.

04:40:37.830 --> 04:40:39.730
.

04:40:51.510 --> 04:40:52.910
.

04:40:52.910 --> 04:40:54.850
.

04:40:54.850 --> 04:40:54.870
.

04:41:02.750 --> 04:41:04.150
.

04:41:04.150 --> 04:41:04.190
.

04:41:04.190 --> 04:41:04.410
.

04:41:12.030 --> 04:41:12.410
.

04:41:12.410 --> 04:41:12.570
.

04:41:12.570 --> 04:41:12.650
.

04:41:12.650 --> 04:41:14.750
.

04:41:20.030 --> 04:41:21.430
.

04:41:21.430 --> 04:41:21.450
.

04:41:25.470 --> 04:41:26.870
.

04:41:31.070 --> 04:41:32.470
.

04:41:32.470 --> 04:41:34.610
.

04:41:34.610 --> 04:41:34.710
.

04:41:42.450 --> 04:41:43.850
.

04:41:46.190 --> 04:41:47.590
.

04:41:53.730 --> 04:41:55.130
.

04:41:55.130 --> 04:41:57.450
.

04:42:06.830 --> 04:42:08.230
.

04:42:08.230 --> 04:42:10.590
.

04:42:15.890 --> 04:42:17.290
.

04:42:17.290 --> 04:42:18.070
.

04:42:46.430 --> 04:42:47.230
.

04:42:47.230 --> 04:42:47.250
.

04:42:47.250 --> 04:42:47.270
.

04:42:47.270 --> 04:42:47.650
.

04:43:14.290 --> 04:43:15.690
.

04:43:15.690 --> 04:43:15.810
.

04:43:15.810 --> 04:43:17.250
.

04:43:17.250 --> 04:43:18.030
.

04:43:18.030 --> 04:43:18.170
.

04:43:27.810 --> 04:43:29.210
.

04:43:29.210 --> 04:43:31.690
.

04:43:31.690 --> 04:43:31.710
.

04:43:43.370 --> 04:43:44.210
.

04:43:44.770 --> 04:43:44.790
.

04:43:46.690 --> 04:43:48.090
.

04:43:48.090 --> 04:43:50.810
.

04:43:50.810 --> 04:43:50.970
.

04:43:50.970 --> 04:43:51.510
.

04:44:04.730 --> 04:44:06.130
.

04:44:06.130 --> 04:44:07.530
.

04:44:22.550 --> 04:44:23.950
.

04:44:23.950 --> 04:44:23.970
.

04:44:53.850 --> 04:44:53.890
.

04:44:53.890 --> 04:44:53.910
.

04:44:53.910 --> 04:44:53.930
.

04:45:21.970 --> 04:45:23.370
.

04:45:23.370 --> 04:45:23.510
.

04:45:52.210 --> 04:45:53.050
.

04:45:53.050 --> 04:45:53.070
.

04:45:53.070 --> 04:45:53.490
.

04:45:53.490 --> 04:45:54.490
.

04:46:03.670 --> 04:46:05.070
.

04:46:05.070 --> 04:46:06.350
.

04:46:06.350 --> 04:46:07.410
.

04:46:24.070 --> 04:46:25.470
.

04:46:29.630 --> 04:46:29.670
.

04:46:29.670 --> 04:46:29.690
.

04:46:55.370 --> 04:46:55.410
.

04:46:55.410 --> 04:46:55.430
.

04:46:55.430 --> 04:46:55.450
.

04:46:55.450 --> 04:46:57.710
.

04:47:05.970 --> 04:47:07.370
.

04:47:10.070 --> 04:47:11.470
.

04:47:17.950 --> 04:47:19.350
.

04:47:19.350 --> 04:47:22.090
.

04:47:29.350 --> 04:47:30.130
.

04:47:30.130 --> 04:47:32.810
.

04:47:40.170 --> 04:47:41.570
.

04:47:41.570 --> 04:47:41.610
.

04:47:41.610 --> 04:47:43.770
.

04:47:47.810 --> 04:47:49.210
.

04:47:49.210 --> 04:47:49.890
.

04:47:53.150 --> 04:47:54.550
.

04:47:59.890 --> 04:48:00.650
.

04:48:00.650 --> 04:48:01.150
.

04:48:01.150 --> 04:48:01.430
.

04:48:01.430 --> 04:48:03.450
.

04:48:03.450 --> 04:48:03.510
.

04:48:18.630 --> 04:48:20.030
.

04:48:20.030 --> 04:48:21.610
.

04:48:21.610 --> 04:48:21.690
.

04:48:36.550 --> 04:48:37.950
.

04:48:37.950 --> 04:48:39.670
.

04:48:51.910 --> 04:48:53.310
.

04:48:55.750 --> 04:48:57.150
.

04:49:03.310 --> 04:49:03.450
.

04:49:03.450 --> 04:49:05.530
.

04:49:13.450 --> 04:49:14.850
.

04:49:14.850 --> 04:49:17.530
.

04:49:29.030 --> 04:49:29.850
.

04:49:30.430 --> 04:49:30.750
.

04:49:30.750 --> 04:49:30.770
.

04:49:50.990 --> 04:49:51.630
.

04:49:51.630 --> 04:49:54.110
.

04:50:01.650 --> 04:50:03.050
.

04:50:03.050 --> 04:50:04.490
.

04:50:04.490 --> 04:50:04.610
.

04:50:22.970 --> 04:50:24.370
.

04:50:24.370 --> 04:50:24.970
.

04:50:31.630 --> 04:50:33.030
.

04:50:33.030 --> 04:50:34.630
.

04:50:42.650 --> 04:50:44.050
.

04:50:44.050 --> 04:50:44.150
.

04:50:44.150 --> 04:50:44.210
.

04:50:44.210 --> 04:50:45.210
.

04:51:00.270 --> 04:51:01.670
.

04:51:01.670 --> 04:51:02.910
.

04:51:02.910 --> 04:51:02.930
.

04:51:17.410 --> 04:51:18.810
.

04:51:30.250 --> 04:51:31.650
.

04:51:46.170 --> 04:51:46.650
.

04:51:47.570 --> 04:51:48.090
.

04:51:56.630 --> 04:51:58.030
.

04:51:58.030 --> 04:51:59.770
.

04:52:02.250 --> 04:52:03.650
.

04:52:03.650 --> 04:52:04.130
.

04:52:13.890 --> 04:52:14.770
.

04:52:32.070 --> 04:52:33.470
.

04:53:01.930 --> 04:53:03.330
.

04:53:03.470 --> 04:53:04.250
.

04:53:13.470 --> 04:53:14.310
.

04:53:14.310 --> 04:53:15.310
.

04:53:42.890 --> 04:53:44.290
.

04:53:44.290 --> 04:53:45.670
.

04:53:45.670 --> 04:53:45.690
.

04:54:01.250 --> 04:54:02.650
.

04:54:02.650 --> 04:54:02.670
.

04:54:04.110 --> 04:54:05.510
.

04:54:12.670 --> 04:54:13.390
.

04:54:13.390 --> 04:54:13.910
.

04:54:13.910 --> 04:54:13.970
.

04:54:42.550 --> 04:54:43.950
.

04:54:43.950 --> 04:54:46.670
.

04:55:00.870 --> 04:55:02.270
.

04:55:06.130 --> 04:55:07.530
.

04:55:07.530 --> 04:55:07.570
.

04:55:20.430 --> 04:55:21.830
.

04:55:28.230 --> 04:55:29.630
.

04:55:29.630 --> 04:55:29.810
.

04:55:33.750 --> 04:55:35.150
.

04:55:35.150 --> 04:55:36.650
.

04:55:45.830 --> 04:55:47.230
.

04:55:47.230 --> 04:55:48.870
.

04:56:02.050 --> 04:56:02.230
.

04:56:03.450 --> 04:56:04.670
.

04:56:04.670 --> 04:56:04.870
.

04:56:20.550 --> 04:56:21.950
.

04:56:21.950 --> 04:56:22.470
.

04:56:22.470 --> 04:56:24.730
.

04:56:29.730 --> 04:56:31.130
.

04:56:31.130 --> 04:56:32.650
.

04:56:32.650 --> 04:56:33.870
.

04:56:40.090 --> 04:56:41.490
.

04:56:43.810 --> 04:56:45.210
.

04:56:52.990 --> 04:56:54.390
.

04:56:54.390 --> 04:56:54.410
.

04:56:54.410 --> 04:56:54.430
.

04:57:23.010 --> 04:57:24.410
.

04:57:30.770 --> 04:57:32.170
.

04:57:32.170 --> 04:57:32.470
.

04:57:34.430 --> 04:57:35.830
.

04:58:01.010 --> 04:58:02.410
.

04:58:02.410 --> 04:58:02.450
.

04:58:02.450 --> 04:58:03.230
.

04:58:03.230 --> 04:58:03.290
.

04:58:20.750 --> 04:58:22.150
.

04:58:22.150 --> 04:58:22.170
.

04:58:31.030 --> 04:58:32.430
.

04:58:32.430 --> 04:58:34.550
.

04:58:34.550 --> 04:58:34.650
.

04:58:46.270 --> 04:58:47.670
.

04:58:47.670 --> 04:58:47.910
.

04:58:47.910 --> 04:58:48.350
.

04:58:59.690 --> 04:59:00.570
.

04:59:00.570 --> 04:59:01.870
.

04:59:08.710 --> 04:59:10.110
.

04:59:10.110 --> 04:59:10.150
.

04:59:10.150 --> 04:59:12.450
.

04:59:38.670 --> 04:59:40.070
.

04:59:40.070 --> 04:59:40.090
.

04:59:40.090 --> 04:59:40.430
.

04:59:40.430 --> 04:59:41.890
.

04:59:47.610 --> 04:59:49.010
.

04:59:49.010 --> 04:59:50.430
.

04:59:54.950 --> 04:59:56.350
.

04:59:56.350 --> 04:59:58.750
.

05:00:06.350 --> 05:00:07.090
.

05:00:07.090 --> 05:00:07.270
.

05:00:07.270 --> 05:00:08.530
.

05:00:08.530 --> 05:00:08.550
.

05:00:21.070 --> 05:00:22.470
.

05:00:22.470 --> 05:00:23.190
.

05:00:27.670 --> 05:00:29.070
.

05:00:29.070 --> 05:00:30.810
.

05:00:30.810 --> 05:00:31.130
.

05:00:32.970 --> 05:00:34.370
.

05:00:45.190 --> 05:00:46.590
.

05:01:03.330 --> 05:01:04.730
.

05:01:15.150 --> 05:01:16.550
.

05:01:16.550 --> 05:01:17.930
.

05:01:17.930 --> 05:01:18.070
.

05:01:23.350 --> 05:01:24.750
.

05:01:24.750 --> 05:01:26.850
.

05:01:31.930 --> 05:01:33.330
.

05:01:34.850 --> 05:01:35.610
.

05:01:35.610 --> 05:01:35.630
.

05:02:02.150 --> 05:02:02.910
.

05:02:02.910 --> 05:02:02.930
.

05:02:02.930 --> 05:02:03.310
.

05:02:09.870 --> 05:02:11.270
.

05:02:11.270 --> 05:02:12.370
.

05:02:12.370 --> 05:02:13.130
.

05:02:19.150 --> 05:02:20.550
.

05:02:20.550 --> 05:02:20.730
.

05:02:20.730 --> 05:02:22.190
.

05:02:22.190 --> 05:02:23.610
.

05:02:49.270 --> 05:02:50.670
.

05:02:50.670 --> 05:02:51.370
.

05:03:03.170 --> 05:03:04.570
.

05:03:04.570 --> 05:03:06.930
.

05:03:10.530 --> 05:03:11.930
.

05:03:16.930 --> 05:03:17.010
.

05:03:17.710 --> 05:03:18.390
.

05:03:18.390 --> 05:03:18.730
.

05:03:37.970 --> 05:03:38.650
.

05:03:38.650 --> 05:03:38.670
.

05:03:38.670 --> 05:03:38.690
.

05:03:38.690 --> 05:03:39.550
.

05:03:39.550 --> 05:03:39.570
.

05:03:48.690 --> 05:03:49.050
.

05:03:49.050 --> 05:03:49.130
.

05:03:49.130 --> 05:03:49.950
.

05:04:02.470 --> 05:04:03.870
.

05:04:03.870 --> 05:04:05.590
.

05:04:13.870 --> 05:04:14.010
.

05:04:14.010 --> 05:04:14.830
.

05:04:14.830 --> 05:04:14.850
.

05:04:24.130 --> 05:04:25.530
.

05:04:25.530 --> 05:04:26.890
.

05:04:26.890 --> 05:04:27.710
.

05:04:43.970 --> 05:04:45.370
.

05:04:45.370 --> 05:04:45.390
.

05:04:45.390 --> 05:04:45.410
.

05:04:45.410 --> 05:04:45.570
.

05:04:56.630 --> 05:04:58.030
.

05:05:27.930 --> 05:05:27.970
.

05:05:27.970 --> 05:05:27.990
.

05:05:27.990 --> 05:05:28.010
.

05:05:28.010 --> 05:05:29.570
.

05:05:38.310 --> 05:05:39.710
.

05:05:39.710 --> 05:05:42.390
.

05:05:49.710 --> 05:05:50.410
.

05:05:50.410 --> 05:05:52.230
.

05:05:52.230 --> 05:05:52.710
.

05:06:03.950 --> 05:06:05.350
.

05:06:05.350 --> 05:06:05.510
.

05:06:05.510 --> 05:06:06.770
.

05:06:06.770 --> 05:06:07.250
.

05:06:11.770 --> 05:06:13.170
.

05:06:13.170 --> 05:06:13.210
.

05:06:14.870 --> 05:06:16.270
.

05:06:16.270 --> 05:06:16.410
.

05:06:30.270 --> 05:06:31.670
.

05:06:31.670 --> 05:06:32.490
.

05:06:32.490 --> 05:06:32.970
.

05:06:41.610 --> 05:06:43.010
.

05:06:43.010 --> 05:06:44.250
.

05:06:50.210 --> 05:06:51.610
.

05:06:51.610 --> 05:06:52.230
.

05:06:52.230 --> 05:06:52.850
.

05:07:00.030 --> 05:07:01.270
.

05:07:01.270 --> 05:07:01.670
.

05:07:12.410 --> 05:07:13.810
.

05:07:15.490 --> 05:07:16.890
.

05:07:16.890 --> 05:07:16.970
.

05:07:27.750 --> 05:07:29.150
.

05:07:29.150 --> 05:07:30.550
.

05:07:43.490 --> 05:07:44.150
.

05:07:44.890 --> 05:07:46.230
.

05:07:55.230 --> 05:07:56.630
.

05:07:56.630 --> 05:07:58.950
.

05:08:09.690 --> 05:08:11.090
.

05:08:11.090 --> 05:08:11.770
.

05:08:16.170 --> 05:08:16.770
.

05:08:22.390 --> 05:08:23.790
.

05:08:23.790 --> 05:08:25.390
.

05:08:33.490 --> 05:08:34.890
.

05:08:34.890 --> 05:08:35.870
.

05:08:35.870 --> 05:08:37.190
.

05:08:52.430 --> 05:08:53.830
.

05:08:57.050 --> 05:08:58.450
.

05:09:22.350 --> 05:09:23.750
.

05:09:23.750 --> 05:09:23.770
.

05:09:23.770 --> 05:09:25.930
.

05:09:25.930 --> 05:09:26.230
.

05:09:29.590 --> 05:09:30.990
.

05:09:30.990 --> 05:09:33.510
.

05:09:33.510 --> 05:09:35.210
.

05:09:35.210 --> 05:09:35.490
.

05:09:38.870 --> 05:09:40.270
.

05:09:41.870 --> 05:09:43.270
.

05:09:43.270 --> 05:09:43.330
.

05:09:50.270 --> 05:09:50.650
.

05:09:53.930 --> 05:09:55.330
.

05:10:07.890 --> 05:10:09.290
.

05:10:10.750 --> 05:10:12.150
.

05:10:15.450 --> 05:10:16.850
.

05:10:16.850 --> 05:10:17.330
.

05:10:17.330 --> 05:10:19.270
.

05:10:19.270 --> 05:10:19.290
.

05:10:27.330 --> 05:10:27.630
.

05:10:29.850 --> 05:10:31.250
.

05:10:31.250 --> 05:10:31.370
.

05:10:45.190 --> 05:10:46.590
.

05:10:46.590 --> 05:10:46.610
.

05:10:46.610 --> 05:10:47.850
.

05:10:47.850 --> 05:10:48.950
.

05:10:54.430 --> 05:10:55.830
.

05:10:55.830 --> 05:10:57.970
.

05:11:01.070 --> 05:11:02.470
.

05:11:02.470 --> 05:11:04.730
.

05:11:08.630 --> 05:11:10.030
.

05:11:10.030 --> 05:11:11.350
.

05:11:11.350 --> 05:11:11.530
.

05:11:38.370 --> 05:11:39.770
.

05:11:39.770 --> 05:11:39.790
.

05:11:40.350 --> 05:11:40.390
.

05:11:40.390 --> 05:11:40.410
.

05:12:09.590 --> 05:12:09.630
.

05:12:09.630 --> 05:12:09.650
.

05:12:09.650 --> 05:12:09.670
.

05:12:11.410 --> 05:12:12.810
.

05:12:17.610 --> 05:12:19.010
.

05:12:19.010 --> 05:12:20.690
.

05:12:20.690 --> 05:12:21.890
.

05:12:47.170 --> 05:12:48.570
.

05:12:50.510 --> 05:12:51.910
.

05:13:00.530 --> 05:13:01.930
.

05:13:04.030 --> 05:13:05.430
.

05:13:30.510 --> 05:13:31.910
.

05:13:33.510 --> 05:13:34.910
.

05:13:42.370 --> 05:13:43.770
.

05:13:43.770 --> 05:13:45.790
.

05:13:57.230 --> 05:13:58.630
.

05:13:58.630 --> 05:13:58.650
.

05:14:08.550 --> 05:14:09.950
.

05:14:12.370 --> 05:14:13.770
.

05:14:17.590 --> 05:14:18.990
.

05:14:18.990 --> 05:14:19.090
.

05:14:48.250 --> 05:14:48.610
.

05:14:48.610 --> 05:14:48.850
.

05:14:48.850 --> 05:14:48.970
.

05:14:51.770 --> 05:14:53.170
.

05:14:57.410 --> 05:14:58.810
.

05:15:05.430 --> 05:15:06.830
.

05:15:22.130 --> 05:15:23.530
.

05:15:23.530 --> 05:15:23.750
.

05:15:23.750 --> 05:15:24.290
.

05:15:24.290 --> 05:15:24.630
.

05:15:34.990 --> 05:15:35.670
.

05:15:35.670 --> 05:15:35.690
.

05:15:35.690 --> 05:15:36.990
.

05:15:36.990 --> 05:15:37.350
.

05:15:44.190 --> 05:15:45.590
.

05:15:47.170 --> 05:15:48.570
.

05:15:53.810 --> 05:15:55.210
.

05:15:56.710 --> 05:15:58.110
.

05:16:10.810 --> 05:16:12.210
.

05:16:15.090 --> 05:16:16.490
.

05:16:26.150 --> 05:16:27.550
.

05:16:27.550 --> 05:16:27.590
.

05:16:32.010 --> 05:16:32.590
.

05:16:38.270 --> 05:16:39.670
.

05:16:41.810 --> 05:16:43.210
.

05:16:50.630 --> 05:16:52.030
.

05:16:52.030 --> 05:16:53.430
.

05:17:01.530 --> 05:17:02.930
.

05:17:02.930 --> 05:17:03.090
.

05:17:03.090 --> 05:17:03.110
.

05:17:03.110 --> 05:17:04.890
.

05:17:13.570 --> 05:17:14.970
.

05:17:14.970 --> 05:17:15.370
.

05:17:43.750 --> 05:17:44.390
.

05:17:44.390 --> 05:17:44.410
.

05:17:44.410 --> 05:17:44.650
.

05:17:44.650 --> 05:17:46.950
.

05:17:46.950 --> 05:17:46.970
.

05:18:02.150 --> 05:18:03.550
.

05:18:05.910 --> 05:18:07.310
.

05:18:13.550 --> 05:18:13.690
.

05:18:13.690 --> 05:18:15.670
.

05:18:23.630 --> 05:18:25.030
.

05:18:25.030 --> 05:18:27.770
.

05:18:35.430 --> 05:18:36.830
.

05:18:36.830 --> 05:18:38.710
.

05:18:46.910 --> 05:18:48.310
.

05:18:48.310 --> 05:18:50.990
.

05:18:58.510 --> 05:18:59.910
.

05:18:59.910 --> 05:18:59.930
.

05:18:59.930 --> 05:19:00.010
.

05:19:00.010 --> 05:19:02.450
.

05:19:10.010 --> 05:19:10.750
.

05:19:13.010 --> 05:19:14.410
.

05:19:24.010 --> 05:19:25.410
.

05:19:25.410 --> 05:19:27.630
.

05:19:50.410 --> 05:19:51.810
.

05:19:51.810 --> 05:19:51.830
.

05:19:51.830 --> 05:19:53.070
.

05:19:53.070 --> 05:19:53.090
.

05:20:02.290 --> 05:20:03.690
.

05:20:03.690 --> 05:20:05.050
.

05:20:22.090 --> 05:20:23.490
.

05:20:23.490 --> 05:20:23.510
.

05:20:23.510 --> 05:20:25.870
.

05:20:41.190 --> 05:20:42.590
.

05:20:42.590 --> 05:20:42.610
.

05:20:42.610 --> 05:20:42.630
.

05:21:11.670 --> 05:21:12.110
.

05:21:12.110 --> 05:21:12.230
.

05:21:12.230 --> 05:21:12.290
.

05:21:12.290 --> 05:21:12.610
.

05:21:16.470 --> 05:21:17.870
.

05:21:20.910 --> 05:21:22.310
.

05:21:50.890 --> 05:21:52.290
.

05:22:21.450 --> 05:22:21.730
.

05:22:21.730 --> 05:22:21.870
.

05:22:21.870 --> 05:22:22.010
.

05:22:22.010 --> 05:22:24.350
.

05:22:50.170 --> 05:22:51.570
.

05:22:51.570 --> 05:22:51.730
.

05:23:19.830 --> 05:23:21.230
.

05:23:21.230 --> 05:23:21.430
.

05:23:25.490 --> 05:23:26.890
.

05:23:31.050 --> 05:23:32.450
.

05:23:32.450 --> 05:23:34.010
.

05:23:42.450 --> 05:23:43.010
.

05:23:43.010 --> 05:23:45.670
.

05:24:11.230 --> 05:24:12.630
.

05:24:12.630 --> 05:24:12.730
.

05:24:12.730 --> 05:24:14.550
.

05:24:14.550 --> 05:24:14.570
.

05:24:22.730 --> 05:24:23.570
.

05:24:23.570 --> 05:24:25.590
.

05:24:25.590 --> 05:24:25.610
.

05:24:30.550 --> 05:24:31.950
.

05:24:31.950 --> 05:24:33.270
.

05:24:33.270 --> 05:24:34.670
.