Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Supplement 2.0.0 version UserGuide and modify Download #365

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/src/Download/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
# Download
Our GitHub page: https://github.com/apache/tsfile

The latest version of TsFile is 1.1.0.
The latest version of TsFile is 2.0.0.

Downloading it from the [Maven central repository](https://search.maven.org/search?q=g:org.apache.tsfile)

Expand All @@ -32,8 +32,8 @@ Add the following dependency section to your pom.xml:
<dependency>
<groupId>org.apache.tsfile</groupId>
<artifactId>tsfile</artifactId>
<version>1.1.0</version>
<version>2.0.0</version>
</dependency>
```

The release note of 1.1.0 can be found in the Archives of the Apache Software Foundation: https://github.com/apache/tsfile/releases/tag/v1.1.0
The release note of 2.0.0 can be found in the Archives of the Apache Software Foundation: https://github.com/apache/tsfile/releases/tag/v2.0.0
65 changes: 65 additions & 0 deletions docs/src/UserGuide/1.1.0/QuickStart/Data-Model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<!--

Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.

-->
# Data Model

## Basic Concepts

To manage industrial IoT timing data, the measurement point data model of TsFile includes the following information

- DeviceId(String):Device Name
- MeasurementSchema:Measurement points
- measurementId(String):Measurement Point Name
- tsDataType(TSDataType):Data Type

For the above detailed introduction, please refer to:[Entering Time Series Data](https://tsfile.apache.org/UserGuide/latest/QuickStart/Navigating_Time_Series_Data.html)

## Example

![](https://alioss.timecho.com/docs/img/20240502164237-dkcm.png)

In the above example, the metadata (Scheme) of TsFile contains 2 devices and 5 time series, and is established as a table structure as shown in the following figure:

<table>
<tr>
<th rowspan="1">Device ID</th>
<th rowspan="1">Measurement points</th>
</tr>
<tr>
<th rowspan="2">Solar panel 1</th>
<th>Voltage(FLOAT)</th>
</tr>
<tr>
<th>Current(FLOAT)</th>
</tr>
<tr>
<th rowspan="4">Fan1</th>
</tr>
<tr>
<th>Voltage(FLOAT)</th>
</tr>
<tr>
<th>Current(FLOAT)</th>
</tr>
<tr>
<th>Wind Speed(FLOAT)</th>
</tr>
</table>

124 changes: 124 additions & 0 deletions docs/src/UserGuide/1.1.0/QuickStart/QuickStart.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
<!--

Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.

-->
# Quick Start

## Sample Data

![](https://alioss.timecho.com/docs/img/2024050517481.png)

## Installation Method

Add the following content to the `dependencies` in `pom.xml`

```shell
<dependency>
<groupId>org.apache.tsfile</groupId>
<artifactId>tsfile</artifactId>
<version>2.0.0</version>
</dependency>
```

## Writing Process

### Construct TsFileWriter

```shell
File f = new File("test.tsfile");
TsFileWriter tsFileWriter = new TsFileWriter(f);
```

### Registration Time Series

```shell
List<MeasurementSchema> schema1 = new ArrayList<>();
schema1.add(new MeasurementSchema("voltage", TSDataType.FLOAT));
schema1.add(new MeasurementSchema("current", TSDataType.FLOAT));
tsFileWriter.registerTimeseries(new Path("Solar_panel_1"), schema1);

List<MeasurementSchema> schema2 = new ArrayList<>();
schema2.add(new MeasurementSchema("voltage", TSDataType.FLOAT));
schema2.add(new MeasurementSchema("current", TSDataType.FLOAT));
schema2.add(new MeasurementSchema("wind_speed", TSDataType.FLOAT));
tsFileWriter.registerTimeseries(new Path("Fan_1"), schema2);
```

### Write Data

```shell
TSRecord tsRecord = new TSRecord(1, "Solar_panel_1");
tsRecord.addTuple(DataPoint.getDataPoint(TSDataType.FLOAT, "voltage", 1.1f));
tsRecord.addTuple(DataPoint.getDataPoint(TSDataType.FLOAT, "current", 2.2f));
tsFileWriter.write(tsRecord);
```

### Close File

```shell
tsFileWriter.close();
```

### Sample Code

<https://github.com/apache/tsfile/blob/develop/java/examples/src/main/java/org/apache/tsfile/TsFileWriteWithTSRecord.java>

## Query Process

### Construct TsFileReader

```shell
TsFileSequenceReader reader = new TsFileSequenceReader(path);
TsFileReader tsFileReader = new TsFileReader(reader);
```

### Construct Query Request

```shell
ArrayList<Path> paths = new ArrayList<>();
paths.add(new Path("Solar_panel_1", "voltage",true));
paths.add(new Path("Solar_panel_1", "current",true));

IExpression timeFilter =
BinaryExpression.and(
new GlobalTimeExpression(TimeFilterApi.gtEq(4L)),
new GlobalTimeExpression(TimeFilterApi.ltEq(10L)));

QueryExpression queryExpression = QueryExpression.create(paths, timeFilter);
```

### Query Data

```shell
QueryDataSet queryDataSet = tsFileReader.query(queryExpression);
while (queryDataSet.hasNext()) {
queryDataSet.next();
}
```

### Close File

```shell
tsFileReader.close();
```

### Sample Code

<https://github.com/apache/tsfile/blob/develop/java/examples/src/main/java/org/apache/tsfile/TsFileRead.java>

49 changes: 26 additions & 23 deletions docs/src/UserGuide/latest/QuickStart/Data-Model.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,44 +22,47 @@

## Basic Concepts

To manage industrial IoT timing data, the measurement point data model of TsFile includes the following information
To manage industrial IoT time series data, the data model of TsFile includes the following concepts

- DeviceId(String):Device Name
- MeasurementSchema:Measurement points
- measurementId(String):Measurement Point Name
- tsDataType(TSDataType):Data Type
- Tag: The description of an IoT device of one dimension in the form of a string key-value pair. For example, "category=XT451" describes the category of a wind turbine is "XT451" and "year=2021" says it is built in the year 2021.
- Field: A variable that is being measured by a device. Like fan speed, voltage, temperature, wind speed, and so on. Unlike a Tagthat is currently fixed to STRING data type, Fields are supported by various data types.
- Timestamp and Timeseries: Each value of a FIELD measured by a device is associated with a unique timestamp. The sequence of the timestamps and values of a FIELD is a Timeseries.
- Schema: A set of Tags that can uniquely identify a kind of device, and the set of Fields that are measured by these devices. E.g., a wind turbine can be uniquely located by "Province," "City," "WindField," and "SerialNumber," so the TAG set of SCHEMA "wind_turbine" can be "Province," "City," "WindField," and "SerialNumber." While its the FIELD set contains "FanSpeed," "Voltage," "Temperature," "WindSpeed," and so on.
- DeviceId: The unique identifier of an IoT device, which consists of the schema name and all tag values. For example, for the Schema "wind_turbine" above, a DeviceId can be ("wind_turbine", "Beijing", "Beijing", "Field_1135", "T1523678").

For the above detailed introduction, please refer to:[Entering Time Series Data](https://tsfile.apache.org/UserGuide/latest/QuickStart/Navigating_Time_Series_Data.html)

## Example

![](https://alioss.timecho.com/docs/img/20240502164237-dkcm.png)

In the above example, the metadata (Scheme) of TsFile contains 2 devices and 5 time series, and is established as a table structure as shown in the following figure:

<table>
<tr>
<th rowspan="1">Device ID</th>
<th rowspan="1">Measurement points</th>
<th rowspan="1">concept</th>
<th rowspan="1">definition</th>
</tr>
<tr>
<th rowspan="2">Solar panel 1</th>
<th>Voltage(FLOAT)</th>
<th rowspan="1">table</th>
<th>A collection of devices with the same pattern.The storage table defined during modeling consists of three parts: identification column, time column, and physical quantity column.</th>
</tr>
<tr>
<th>Current(FLOAT)</th>
<th rowspan="1">TAG</th>
<th>The unique identifier of a device, which can contain 0 to multiple tag columns in a table. The composite value formed by combining the values of the tag columns in the column order when the table was created is called the identifier, and tags with the same composite value are called the same identifier.The data type of the tag column can currently only be String, which can be left unspecified and defaults to StringThe values of the identification column can all be emptyWhen writing, all tag columns must be specified (unspecified identity columns are filled with null by default)</th>
</tr>
<tr>
<th rowspan="4">Fan1</th>
<th rowspan="1">Time</th>
<th>A table must have a time column, and data with the same identifier value is sorted by time by default.The values in the time column cannot be empty and must be in sequence.</th>
</tr>
<tr>
<th>Voltage(FLOAT)</th>
</tr>
<tr>
<th>Current(FLOAT)</th>
<th rowspan="1">FIELD</th>
<th>The field column defines the measurement point names and data types for time-series data.</th>
</tr>
<tr>
<th>Wind Speed(FLOAT)</th>
<th rowspan="1">row</th>
<th>A row of data in the table</th>
</tr>
</table>


## Example

A schema describes is a collection of devices with the same pattern. As shown in the figure below, it models the management of factory equipment, and the physical variable collection of each device has certain commonalities (such as collecting temperature and humidity physical quantities, collecting physical quantities of the same device on the same frequency, etc.), so it can be managed on a device-by-device basis.

At this point, a physical device can be uniquely identified through 3 Tags [Region] - [Factory] - [Equipment] (orange column in the figure below, also known as device identification information). The Fields collected by the device are [Temperature], [Humidity], [Status], and [Arrival Time] (blue column in the figure below).

![](https://alioss.timecho.com/docs/img/data_model_example_image.png)
Loading
Loading