| # 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. |
| # |
| |
| # Uncomment the following line to use apache-iotdb module installed by pip3 |
| |
| import random |
| |
| import numpy as np |
| |
| from iotdb.Session import Session |
| from iotdb.template.InternalNode import InternalNode |
| from iotdb.template.MeasurementNode import MeasurementNode |
| from iotdb.template.Template import Template |
| from iotdb.utils.IoTDBConstants import TSDataType, TSEncoding, Compressor |
| from iotdb.utils.Tablet import Tablet |
| from iotdb.utils.NumpyTablet import NumpyTablet |
| |
| # creating session connection. |
| ip = "127.0.0.1" |
| port_ = "6667" |
| username_ = "root" |
| password_ = "root" |
| session = Session(ip, port_, username_, password_, fetch_size=1024, zone_id="UTC+8") |
| session.open(False) |
| |
| ts_path_list = [ |
| "root.eg.exchange.s0", |
| "root.eg.exchange.s1", |
| "root.eg.exchange.s2", |
| "root.eg.exchange.s3", |
| "root.eg.exchange.s4", |
| "root.eg.exchange.s5", |
| "root.eg.exchange.s6", |
| "root.eg.exchange.s7" |
| ] |
| |
| fetch_args = { |
| "start_time": 631123200000, |
| "end_time": 1286640000000, |
| "interval": 86400000 * 96, |
| "sliding_step": 86400000, |
| # "indexes": [0, 1] |
| "indexes": random.sample([i for i in range(0, 7492)], 100) |
| } |
| |
| result = session.fetch_window_batch(ts_path_list, None, fetch_args) |
| print(result.shape) |
| |
| # |
| # # create and delete databases |
| # session.set_storage_group("root.sg_test_01") |
| # session.set_storage_group("root.sg_test_02") |
| # session.set_storage_group("root.sg_test_03") |
| # session.set_storage_group("root.sg_test_04") |
| # session.delete_storage_group("root.sg_test_02") |
| # session.delete_storage_groups(["root.sg_test_03", "root.sg_test_04"]) |
| # |
| # # setting time series. |
| # session.create_time_series( |
| # "root.sg_test_01.d_01.s_01", TSDataType.BOOLEAN, TSEncoding.PLAIN, Compressor.SNAPPY |
| # ) |
| # session.create_time_series( |
| # "root.sg_test_01.d_01.s_02", TSDataType.INT32, TSEncoding.PLAIN, Compressor.SNAPPY |
| # ) |
| # session.create_time_series( |
| # "root.sg_test_01.d_01.s_03", TSDataType.INT64, TSEncoding.PLAIN, Compressor.SNAPPY |
| # ) |
| # session.create_time_series( |
| # "root.sg_test_01.d_02.s_01", |
| # TSDataType.BOOLEAN, |
| # TSEncoding.PLAIN, |
| # Compressor.SNAPPY, |
| # None, |
| # {"tag1": "v1"}, |
| # {"description": "v1"}, |
| # "temperature", |
| # ) |
| # |
| # # setting multiple time series once. |
| # ts_path_lst_ = [ |
| # "root.sg_test_01.d_01.s_04", |
| # "root.sg_test_01.d_01.s_05", |
| # "root.sg_test_01.d_01.s_06", |
| # "root.sg_test_01.d_01.s_07", |
| # "root.sg_test_01.d_01.s_08", |
| # "root.sg_test_01.d_01.s_09", |
| # ] |
| # data_type_lst_ = [ |
| # TSDataType.FLOAT, |
| # TSDataType.DOUBLE, |
| # TSDataType.TEXT, |
| # TSDataType.FLOAT, |
| # TSDataType.DOUBLE, |
| # TSDataType.TEXT, |
| # ] |
| # encoding_lst_ = [TSEncoding.PLAIN for _ in range(len(data_type_lst_))] |
| # compressor_lst_ = [Compressor.SNAPPY for _ in range(len(data_type_lst_))] |
| # session.create_multi_time_series( |
| # ts_path_lst_, data_type_lst_, encoding_lst_, compressor_lst_ |
| # ) |
| # |
| # ts_path_lst_ = [ |
| # "root.sg_test_01.d_02.s_04", |
| # "root.sg_test_01.d_02.s_05", |
| # "root.sg_test_01.d_02.s_06", |
| # "root.sg_test_01.d_02.s_07", |
| # "root.sg_test_01.d_02.s_08", |
| # "root.sg_test_01.d_02.s_09", |
| # ] |
| # data_type_lst_ = [ |
| # TSDataType.FLOAT, |
| # TSDataType.DOUBLE, |
| # TSDataType.TEXT, |
| # TSDataType.FLOAT, |
| # TSDataType.DOUBLE, |
| # TSDataType.TEXT, |
| # ] |
| # encoding_lst_ = [TSEncoding.PLAIN for _ in range(len(data_type_lst_))] |
| # compressor_lst_ = [Compressor.SNAPPY for _ in range(len(data_type_lst_))] |
| # tags_lst_ = [{"tag2": "v2"} for _ in range(len(data_type_lst_))] |
| # attributes_lst_ = [{"description": "v2"} for _ in range(len(data_type_lst_))] |
| # session.create_multi_time_series( |
| # ts_path_lst_, |
| # data_type_lst_, |
| # encoding_lst_, |
| # compressor_lst_, |
| # None, |
| # tags_lst_, |
| # attributes_lst_, |
| # None, |
| # ) |
| # |
| # # delete time series |
| # session.delete_time_series( |
| # [ |
| # "root.sg_test_01.d_01.s_07", |
| # "root.sg_test_01.d_01.s_08", |
| # "root.sg_test_01.d_01.s_09", |
| # ] |
| # ) |
| # |
| # # checking time series |
| # print( |
| # "s_07 expecting False, checking result: ", |
| # session.check_time_series_exists("root.sg_test_01.d_01.s_07"), |
| # ) |
| # print( |
| # "s_03 expecting True, checking result: ", |
| # session.check_time_series_exists("root.sg_test_01.d_01.s_03"), |
| # ) |
| # print( |
| # "d_02.s_01 expecting True, checking result: ", |
| # session.check_time_series_exists("root.sg_test_01.d_02.s_01"), |
| # ) |
| # print( |
| # "d_02.s_06 expecting True, checking result: ", |
| # session.check_time_series_exists("root.sg_test_01.d_02.s_06"), |
| # ) |
| # |
| # # insert one record into the database. |
| # measurements_ = ["s_01", "s_02", "s_03", "s_04", "s_05", "s_06"] |
| # values_ = [False, 10, 11, 1.1, 10011.1, "test_record"] |
| # data_types_ = [ |
| # TSDataType.BOOLEAN, |
| # TSDataType.INT32, |
| # TSDataType.INT64, |
| # TSDataType.FLOAT, |
| # TSDataType.DOUBLE, |
| # TSDataType.TEXT, |
| # ] |
| # session.insert_record("root.sg_test_01.d_01", 1, measurements_, data_types_, values_) |
| # |
| # # insert multiple records into database |
| # measurements_list_ = [ |
| # ["s_01", "s_02", "s_03", "s_04", "s_05", "s_06"], |
| # ["s_01", "s_02", "s_03", "s_04", "s_05", "s_06"], |
| # ] |
| # values_list_ = [ |
| # [False, 22, 33, 4.4, 55.1, "test_records01"], |
| # [True, 77, 88, 1.25, 8.125, "test_records02"], |
| # ] |
| # data_type_list_ = [data_types_, data_types_] |
| # device_ids_ = ["root.sg_test_01.d_01", "root.sg_test_01.d_01"] |
| # session.insert_records( |
| # device_ids_, [2, 3], measurements_list_, data_type_list_, values_list_ |
| # ) |
| # |
| # # insert one tablet into the database. |
| # values_ = [ |
| # [False, 10, 11, 1.1, 10011.1, "test01"], |
| # [True, 100, 11111, 1.25, 101.0, "test02"], |
| # [False, 100, 1, 188.1, 688.25, "test03"], |
| # [True, 0, 0, 0, 6.25, "test04"], |
| # ] # Non-ASCII text will cause error since bytes can only hold 0-128 nums. |
| # timestamps_ = [4, 5, 6, 7] |
| # tablet_ = Tablet( |
| # "root.sg_test_01.d_01", measurements_, data_types_, values_, timestamps_ |
| # ) |
| # session.insert_tablet(tablet_) |
| # |
| # # insert one numpy tablet into the database. |
| # np_values_ = [ |
| # np.array([False, True, False, True], TSDataType.BOOLEAN.np_dtype()), |
| # np.array([10, 100, 100, 0], TSDataType.INT32.np_dtype()), |
| # np.array([11, 11111, 1, 0], TSDataType.INT64.np_dtype()), |
| # np.array([1.1, 1.25, 188.1, 0], TSDataType.FLOAT.np_dtype()), |
| # np.array([10011.1, 101.0, 688.25, 6.25], TSDataType.DOUBLE.np_dtype()), |
| # np.array(["test01", "test02", "test03", "test04"], TSDataType.TEXT.np_dtype()), |
| # ] |
| # np_timestamps_ = np.array([1, 2, 3, 4], TSDataType.INT64.np_dtype()) |
| # np_tablet_ = NumpyTablet( |
| # "root.sg_test_01.d_02", measurements_, data_types_, np_values_, np_timestamps_ |
| # ) |
| # session.insert_tablet(np_tablet_) |
| # |
| # # insert one unsorted numpy tablet into the database. |
| # np_values_unsorted = [ |
| # np.array([False, False, False, True, True], np.dtype(">?")), |
| # np.array([0, 10, 100, 1000, 10000], np.dtype(">i4")), |
| # np.array([1, 11, 111, 1111, 11111], np.dtype(">i8")), |
| # np.array([1.1, 1.25, 188.1, 0, 8.999], np.dtype(">f4")), |
| # np.array([10011.1, 101.0, 688.25, 6.25, 8, 776], np.dtype(">f8")), |
| # np.array(["test09", "test08", "test07", "test06", "test05"]), |
| # ] |
| # np_timestamps_unsorted = np.array([9, 8, 7, 6, 5], np.dtype(">i8")) |
| # np_tablet_unsorted = NumpyTablet( |
| # "root.sg_test_01.d_02", |
| # measurements_, |
| # data_types_, |
| # np_values_unsorted, |
| # np_timestamps_unsorted, |
| # ) |
| # session.insert_tablet(np_tablet_unsorted) |
| # print(np_tablet_unsorted.get_timestamps()) |
| # for value in np_tablet_unsorted.get_values(): |
| # print(value) |
| # |
| # # insert multiple tablets into database |
| # tablet_01 = Tablet( |
| # "root.sg_test_01.d_01", measurements_, data_types_, values_, [8, 9, 10, 11] |
| # ) |
| # tablet_02 = Tablet( |
| # "root.sg_test_01.d_01", measurements_, data_types_, values_, [12, 13, 14, 15] |
| # ) |
| # session.insert_tablets([tablet_01, tablet_02]) |
| # |
| # # insert one tablet with empty cells into the database. |
| # values_ = [ |
| # [None, 10, 11, 1.1, 10011.1, "test01"], |
| # [True, None, 11111, 1.25, 101.0, "test02"], |
| # [False, 100, 1, None, 688.25, "test03"], |
| # [True, 0, 0, 0, 6.25, None], |
| # ] # Non-ASCII text will cause error since bytes can only hold 0-128 nums. |
| # timestamps_ = [16, 17, 18, 19] |
| # tablet_ = Tablet( |
| # "root.sg_test_01.d_01", measurements_, data_types_, values_, timestamps_ |
| # ) |
| # session.insert_tablet(tablet_) |
| # |
| # # insert records of one device |
| # time_list = [1, 2, 3] |
| # measurements_list = [ |
| # ["s_01", "s_02", "s_03"], |
| # ["s_01", "s_02", "s_03"], |
| # ["s_01", "s_02", "s_03"], |
| # ] |
| # data_types_list = [ |
| # [TSDataType.BOOLEAN, TSDataType.INT32, TSDataType.INT64], |
| # [TSDataType.BOOLEAN, TSDataType.INT32, TSDataType.INT64], |
| # [TSDataType.BOOLEAN, TSDataType.INT32, TSDataType.INT64], |
| # ] |
| # values_list = [[False, 22, 33], [True, 1, 23], [False, 15, 26]] |
| # |
| # session.insert_records_of_one_device( |
| # "root.sg_test_01.d_01", time_list, measurements_list, data_types_list, values_list |
| # ) |
| # |
| # # execute non-query sql statement |
| # session.execute_non_query_statement( |
| # "insert into root.sg_test_01.d_01(timestamp, s_02) values(16, 188)" |
| # ) |
| # |
| # # execute sql query statement |
| # with session.execute_query_statement( |
| # "select * from root.sg_test_01.d_01" |
| # ) as session_data_set: |
| # session_data_set.set_fetch_size(1024) |
| # while session_data_set.has_next(): |
| # print(session_data_set.next()) |
| # # execute sql query statement |
| # with session.execute_query_statement( |
| # "select s_01, s_02, s_03, s_04, s_05, s_06 from root.sg_test_01.d_02" |
| # ) as session_data_set: |
| # session_data_set.set_fetch_size(1024) |
| # while session_data_set.has_next(): |
| # print(session_data_set.next()) |
| # |
| # # execute statement |
| # with session.execute_statement( |
| # "select * from root.sg_test_01.d_01" |
| # ) as session_data_set: |
| # while session_data_set.has_next(): |
| # print(session_data_set.next()) |
| # |
| # session.execute_statement( |
| # "insert into root.sg_test_01.d_01(timestamp, s_02) values(16, 188)" |
| # ) |
| # |
| # # insert string records of one device |
| # time_list = [1, 2, 3] |
| # measurements_list = [ |
| # ["s_01", "s_02", "s_03"], |
| # ["s_01", "s_02", "s_03"], |
| # ["s_01", "s_02", "s_03"], |
| # ] |
| # values_list = [["False", "22", "33"], ["True", "1", "23"], ["False", "15", "26"]] |
| # |
| # session.insert_string_records_of_one_device( |
| # "root.sg_test_01.d_03", |
| # time_list, |
| # measurements_list, |
| # values_list, |
| # ) |
| # |
| # with session.execute_raw_data_query( |
| # ["root.sg_test_01.d_03.s_01", "root.sg_test_01.d_03.s_02"], 1, 4 |
| # ) as session_data_set: |
| # session_data_set.set_fetch_size(1024) |
| # while session_data_set.has_next(): |
| # print(session_data_set.next()) |
| # |
| # with session.execute_last_data_query( |
| # ["root.sg_test_01.d_03.s_01", "root.sg_test_01.d_03.s_02"], 0 |
| # ) as session_data_set: |
| # session_data_set.set_fetch_size(1024) |
| # while session_data_set.has_next(): |
| # print(session_data_set.next()) |
| # |
| # # delete database |
| # session.delete_storage_group("root.sg_test_01") |
| # |
| # # create measurement node template |
| # template = Template(name="template_python", share_time=False) |
| # m_node_1 = MeasurementNode( |
| # name="s1", |
| # data_type=TSDataType.INT64, |
| # encoding=TSEncoding.RLE, |
| # compression_type=Compressor.SNAPPY, |
| # ) |
| # m_node_2 = MeasurementNode( |
| # name="s2", |
| # data_type=TSDataType.INT64, |
| # encoding=TSEncoding.RLE, |
| # compression_type=Compressor.SNAPPY, |
| # ) |
| # m_node_3 = MeasurementNode( |
| # name="s3", |
| # data_type=TSDataType.INT64, |
| # encoding=TSEncoding.RLE, |
| # compression_type=Compressor.SNAPPY, |
| # ) |
| # template.add_template(m_node_1) |
| # template.add_template(m_node_2) |
| # template.add_template(m_node_3) |
| # session.create_schema_template(template) |
| # print("create template success template_python") |
| # |
| # # create internal node template |
| # template_name = "treeTemplate_python" |
| # template = Template(name=template_name, share_time=True) |
| # i_node_gps = InternalNode(name="GPS", share_time=False) |
| # i_node_v = InternalNode(name="vehicle", share_time=True) |
| # m_node_x = MeasurementNode("x", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY) |
| # |
| # i_node_gps.add_child(m_node_x) |
| # i_node_v.add_child(m_node_x) |
| # template.add_template(i_node_gps) |
| # template.add_template(i_node_v) |
| # template.add_template(m_node_x) |
| # |
| # session.create_schema_template(template) |
| # print("create template success treeTemplate_python}") |
| # |
| # print(session.is_measurement_in_template(template_name, "GPS")) |
| # print(session.is_measurement_in_template(template_name, "GPS.x")) |
| # print(session.show_all_templates()) |
| # |
| # # # append schema template |
| # data_types = [TSDataType.FLOAT, TSDataType.FLOAT, TSDataType.DOUBLE] |
| # encoding_list = [TSEncoding.RLE, TSEncoding.RLE, TSEncoding.GORILLA] |
| # compressor_list = [Compressor.SNAPPY, Compressor.SNAPPY, Compressor.LZ4] |
| # |
| # measurements_aligned_path = ["aligned.s1", "aligned.s2", "aligned.s3"] |
| # session.add_measurements_in_template( |
| # template_name, |
| # measurements_aligned_path, |
| # data_types, |
| # encoding_list, |
| # compressor_list, |
| # is_aligned=True, |
| # ) |
| # # session.drop_schema_template("add_template_python") |
| # measurements_aligned_path = ["unaligned.s1", "unaligned.s2", "unaligned.s3"] |
| # session.add_measurements_in_template( |
| # template_name, |
| # measurements_aligned_path, |
| # data_types, |
| # encoding_list, |
| # compressor_list, |
| # is_aligned=False, |
| # ) |
| # session.delete_node_in_template(template_name, "aligned.s1") |
| # print(session.count_measurements_in_template(template_name)) |
| # print(session.is_path_exist_in_template(template_name, "aligned.s1")) |
| # print(session.is_path_exist_in_template(template_name, "aligned.s2")) |
| # |
| # session.set_schema_template(template_name, "root.python.set") |
| # print(session.show_paths_template_using_on(template_name)) |
| # print(session.show_paths_template_set_on(template_name)) |
| # session.unset_schema_template(template_name, "root.python.set") |
| # |
| # # drop template |
| # session.drop_schema_template("template_python") |
| # session.drop_schema_template(template_name) |
| # print("drop template success, template_python and treeTemplate_python") |
| |
| # close session connection. |
| session.close() |
| |
| print("All executions done!!") |