Skip to content

Commit

Permalink
Add support for delta timezone_ntz datatype
Browse files Browse the repository at this point in the history
Add support for TIMEZONE_NTZ datatype in v3 delta tables.
  • Loading branch information
infvg committed Jan 23, 2025
1 parent 0d22e37 commit c6371a6
Show file tree
Hide file tree
Showing 14 changed files with 115 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import io.delta.kernel.types.ShortType;
import io.delta.kernel.types.StringType;
import io.delta.kernel.types.StructType;
import io.delta.kernel.types.TimestampNTZType;
import io.delta.kernel.types.TimestampType;

import java.math.BigDecimal;
Expand Down Expand Up @@ -230,7 +231,7 @@ else if (deltaType instanceof ShortType) {
else if (deltaType instanceof StringType) {
return createUnboundedVarcharType();
}
else if (deltaType instanceof TimestampType) {
else if (deltaType instanceof TimestampType || deltaType instanceof TimestampNTZType) {
return TIMESTAMP;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
/*
* Licensed 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.
*/
package com.facebook.presto.delta;

import com.facebook.presto.Session;
import com.facebook.presto.common.type.TimeZoneKey;
import com.facebook.presto.hive.HivePlugin;
import com.facebook.presto.testing.MaterializedResult;
import com.facebook.presto.testing.QueryRunner;
import com.facebook.presto.tests.DistributedQueryRunner;
import com.facebook.presto.tpch.TpchPlugin;
import com.google.common.collect.ImmutableMap;
import org.testng.annotations.Test;

import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.Map;

import static com.facebook.presto.testing.TestingSession.testSessionBuilder;
import static com.facebook.presto.testing.assertions.Assert.assertEquals;
import static java.lang.String.format;
import static java.util.Locale.US;

public class TestTimestampColumns
extends AbstractDeltaDistributedQueryTestBase
{
private static final String[] DELTA_TEST_TABLE_LIST = new String[1];
static {
DELTA_TEST_TABLE_LIST[0] = "delta_v3" + FileSystems.getDefault().getSeparator() + "test-typing";
}
@Override
protected QueryRunner createQueryRunner()
throws Exception
{
return createDeltaQueryRunner(ImmutableMap.of(
"experimental.pushdown-subfields-enabled", "true",
"experimental.pushdown-dereference-enabled", "true"));
}

private static DistributedQueryRunner createDeltaQueryRunner(Map<String, String> extraProperties)
throws Exception
{
Session session = testSessionBuilder()
.setCatalog(DELTA_CATALOG)
.setSchema(DELTA_SCHEMA.toLowerCase(US))
.setTimeZoneKey(TimeZoneKey.getTimeZoneKey("Europe/Madrid"))
.build();

DistributedQueryRunner queryRunner = DistributedQueryRunner.builder(session)
.setExtraProperties(extraProperties)
.build();

// Install the TPCH plugin for test data (not in Delta format)
queryRunner.installPlugin(new TpchPlugin());
queryRunner.createCatalog("tpch", "tpch");

Path dataDirectory = queryRunner.getCoordinator().getDataDirectory().resolve("delta_metadata");
Path catalogDirectory = dataDirectory.getParent().resolve("catalog");

// Install a Delta connector catalog
queryRunner.installPlugin(new DeltaPlugin());
Map<String, String> deltaProperties = ImmutableMap.<String, String>builder()
.put("hive.metastore", "file")
.put("hive.metastore.catalog.dir", catalogDirectory.toFile().toURI().toString())
.build();
queryRunner.createCatalog(DELTA_CATALOG, "delta", deltaProperties);

// Install a Hive connector catalog that uses the same metastore as Delta
// This catalog will be used to create tables in metastore as the Delta connector doesn't
// support creating tables yet.
queryRunner.installPlugin(new HivePlugin("hive"));
Map<String, String> hiveProperties = ImmutableMap.<String, String>builder()
.put("hive.metastore", "file")
.put("hive.metastore.catalog.dir", catalogDirectory.toFile().toURI().toString())
.put("hive.allow-drop-table", "true")
.put("hive.security", "legacy")
.build();
queryRunner.createCatalog(HIVE_CATALOG, "hive", hiveProperties);
queryRunner.execute(format("CREATE SCHEMA %s.%s", HIVE_CATALOG, DELTA_SCHEMA));

return queryRunner;
}

@Test(dataProvider = "deltaReaderVersions")
public void testDeltaTimezoneTypeSupport(String version)
{
String testQuery = format("select * from \"%s\".\"%s\"",
PATH_SCHEMA, goldenTablePathWithPrefix(version, "test-typing"));
MaterializedResult expectedResult = getQueryRunner().execute(testQuery);
assertEquals(expectedResult.getMaterializedRows().size(), 10);
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"txnId":"dac93cbf-630e-4a7e-8368-27952a66b0ee","tableSizeBytes":6387,"numFiles":1,"numMetadata":1,"numProtocol":1,"setTransactions":[],"domainMetadata":[],"metadata":{"id":"0a4082b0-2e72-49f1-b617-1b828ad42cd6","format":{"provider":"parquet","options":{}},"schemaString":"{\"type\":\"struct\",\"fields\":[{\"name\":\"VendorID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tpep_pickup_datetime\",\"type\":\"timestamp\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tpep_dropoff_datetime\",\"type\":\"timestamp\",\"nullable\":true,\"metadata\":{}},{\"name\":\"passenger_count\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"trip_distance\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"RatecodeID\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"store_and_fwd_flag\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"PULocationID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"DOLocationID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"payment_type\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"fare_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"extra\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"mta_tax\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tip_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tolls_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"improvement_surcharge\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"total_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"congestion_surcharge\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"airport_fee\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}}]}","partitionColumns":[],"configuration":{},"createdTime":1737551907192},"protocol":{"minReaderVersion":1,"minWriterVersion":2},"allFiles":[{"path":"part-00000-4858a35f-1c46-4eca-a46f-ba7285d14dae-c000.snappy.parquet","partitionValues":{},"size":6387,"modificationTime":1737551908307,"dataChange":false,"stats":"{\"numRecords\":10,\"minValues\":{\"VendorID\":1,\"tpep_pickup_datetime\":\"2021-12-31T19:13:04.000+03:00\",\"tpep_dropoff_datetime\":\"2021-12-31T19:22:45.000+03:00\",\"passenger_count\":1.0,\"trip_distance\":0.78,\"RatecodeID\":1.0,\"store_and_fwd_flag\":\"N\",\"PULocationID\":68,\"DOLocationID\":42,\"payment_type\":1,\"fare_amount\":5.0,\"extra\":0.5,\"mta_tax\":0.5,\"tip_amount\":0.0,\"tolls_amount\":0.0,\"improvement_surcharge\":0.3,\"total_amount\":8.8,\"congestion_surcharge\":0.0,\"airport_fee\":0.0},\"maxValues\":{\"VendorID\":2,\"tpep_pickup_datetime\":\"2021-12-31T19:53:21.000+03:00\",\"tpep_dropoff_datetime\":\"2021-12-31T20:14:20.000+03:00\",\"passenger_count\":2.0,\"trip_distance\":10.3,\"RatecodeID\":1.0,\"store_and_fwd_flag\":\"N\",\"PULocationID\":238,\"DOLocationID\":236,\"payment_type\":2,\"fare_amount\":33.0,\"extra\":3.0,\"mta_tax\":0.5,\"tip_amount\":13.0,\"tolls_amount\":6.55,\"improvement_surcharge\":0.3,\"total_amount\":56.35,\"congestion_surcharge\":2.5,\"airport_fee\":0.0},\"nullCount\":{\"VendorID\":0,\"tpep_pickup_datetime\":0,\"tpep_dropoff_datetime\":0,\"passenger_count\":0,\"trip_distance\":0,\"RatecodeID\":0,\"store_and_fwd_flag\":0,\"PULocationID\":0,\"DOLocationID\":0,\"payment_type\":0,\"fare_amount\":0,\"extra\":0,\"mta_tax\":0,\"tip_amount\":0,\"tolls_amount\":0,\"improvement_surcharge\":0,\"total_amount\":0,\"congestion_surcharge\":0,\"airport_fee\":0}}"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{"commitInfo":{"timestamp":1737551908361,"operation":"WRITE","operationParameters":{"mode":"ErrorIfExists","partitionBy":"[]"},"isolationLevel":"Serializable","isBlindAppend":true,"operationMetrics":{"numFiles":"1","numOutputRows":"10","numOutputBytes":"6387"},"engineInfo":"Apache-Spark/3.5.4 Delta-Lake/3.3.0","txnId":"dac93cbf-630e-4a7e-8368-27952a66b0ee"}}
{"metaData":{"id":"0a4082b0-2e72-49f1-b617-1b828ad42cd6","format":{"provider":"parquet","options":{}},"schemaString":"{\"type\":\"struct\",\"fields\":[{\"name\":\"VendorID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tpep_pickup_datetime\",\"type\":\"timestamp\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tpep_dropoff_datetime\",\"type\":\"timestamp\",\"nullable\":true,\"metadata\":{}},{\"name\":\"passenger_count\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"trip_distance\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"RatecodeID\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"store_and_fwd_flag\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"PULocationID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"DOLocationID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"payment_type\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"fare_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"extra\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"mta_tax\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tip_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tolls_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"improvement_surcharge\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"total_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"congestion_surcharge\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"airport_fee\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}}]}","partitionColumns":[],"configuration":{},"createdTime":1737551907192}}
{"protocol":{"minReaderVersion":1,"minWriterVersion":2}}
{"add":{"path":"part-00000-4858a35f-1c46-4eca-a46f-ba7285d14dae-c000.snappy.parquet","partitionValues":{},"size":6387,"modificationTime":1737551908307,"dataChange":true,"stats":"{\"numRecords\":10,\"minValues\":{\"VendorID\":1,\"tpep_pickup_datetime\":\"2021-12-31T19:13:04.000+03:00\",\"tpep_dropoff_datetime\":\"2021-12-31T19:22:45.000+03:00\",\"passenger_count\":1.0,\"trip_distance\":0.78,\"RatecodeID\":1.0,\"store_and_fwd_flag\":\"N\",\"PULocationID\":68,\"DOLocationID\":42,\"payment_type\":1,\"fare_amount\":5.0,\"extra\":0.5,\"mta_tax\":0.5,\"tip_amount\":0.0,\"tolls_amount\":0.0,\"improvement_surcharge\":0.3,\"total_amount\":8.8,\"congestion_surcharge\":0.0,\"airport_fee\":0.0},\"maxValues\":{\"VendorID\":2,\"tpep_pickup_datetime\":\"2021-12-31T19:53:21.000+03:00\",\"tpep_dropoff_datetime\":\"2021-12-31T20:14:20.000+03:00\",\"passenger_count\":2.0,\"trip_distance\":10.3,\"RatecodeID\":1.0,\"store_and_fwd_flag\":\"N\",\"PULocationID\":238,\"DOLocationID\":236,\"payment_type\":2,\"fare_amount\":33.0,\"extra\":3.0,\"mta_tax\":0.5,\"tip_amount\":13.0,\"tolls_amount\":6.55,\"improvement_surcharge\":0.3,\"total_amount\":56.35,\"congestion_surcharge\":2.5,\"airport_fee\":0.0},\"nullCount\":{\"VendorID\":0,\"tpep_pickup_datetime\":0,\"tpep_dropoff_datetime\":0,\"passenger_count\":0,\"trip_distance\":0,\"RatecodeID\":0,\"store_and_fwd_flag\":0,\"PULocationID\":0,\"DOLocationID\":0,\"payment_type\":0,\"fare_amount\":0,\"extra\":0,\"mta_tax\":0,\"tip_amount\":0,\"tolls_amount\":0,\"improvement_surcharge\":0,\"total_amount\":0,\"congestion_surcharge\":0,\"airport_fee\":0}}"}}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"txnId":"ce6337d8-02e5-4b6d-b7bc-cf3e033af6e3","tableSizeBytes":6430,"numFiles":1,"numMetadata":1,"numProtocol":1,"setTransactions":[],"domainMetadata":[],"metadata":{"id":"daf6b671-aaad-492b-a5ac-faed6e47e339","format":{"provider":"parquet","options":{}},"schemaString":"{\"type\":\"struct\",\"fields\":[{\"name\":\"VendorID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tpep_pickup_datetime\",\"type\":\"timestamp_ntz\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tpep_dropoff_datetime\",\"type\":\"timestamp\",\"nullable\":true,\"metadata\":{}},{\"name\":\"passenger_count\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"trip_distance\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"RatecodeID\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"store_and_fwd_flag\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"PULocationID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"DOLocationID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"payment_type\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"fare_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"extra\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"mta_tax\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tip_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tolls_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"improvement_surcharge\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"total_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"congestion_surcharge\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"airport_fee\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}}]}","partitionColumns":[],"configuration":{},"createdTime":1737552101173},"protocol":{"minReaderVersion":3,"minWriterVersion":7,"readerFeatures":["timestampNtz"],"writerFeatures":["timestampNtz","appendOnly","invariants"]},"allFiles":[{"path":"part-00000-ec2cb5b9-464d-48c2-ab09-7d5e98cb7a6d-c000.snappy.parquet","partitionValues":{},"size":6430,"modificationTime":1737552102118,"dataChange":false,"stats":"{\"numRecords\":10,\"minValues\":{\"VendorID\":1,\"tpep_pickup_datetime\":\"2022-01-01T00:13:04.000\",\"tpep_dropoff_datetime\":\"2021-12-31T19:22:45.000+03:00\",\"passenger_count\":1.0,\"trip_distance\":0.78,\"RatecodeID\":1.0,\"store_and_fwd_flag\":\"N\",\"PULocationID\":68,\"DOLocationID\":42,\"payment_type\":1,\"fare_amount\":5.0,\"extra\":0.5,\"mta_tax\":0.5,\"tip_amount\":0.0,\"tolls_amount\":0.0,\"improvement_surcharge\":0.3,\"total_amount\":8.8,\"congestion_surcharge\":0.0,\"airport_fee\":0.0},\"maxValues\":{\"VendorID\":2,\"tpep_pickup_datetime\":\"2022-01-01T00:53:21.000\",\"tpep_dropoff_datetime\":\"2021-12-31T20:14:20.000+03:00\",\"passenger_count\":2.0,\"trip_distance\":10.3,\"RatecodeID\":1.0,\"store_and_fwd_flag\":\"N\",\"PULocationID\":238,\"DOLocationID\":236,\"payment_type\":2,\"fare_amount\":33.0,\"extra\":3.0,\"mta_tax\":0.5,\"tip_amount\":13.0,\"tolls_amount\":6.55,\"improvement_surcharge\":0.3,\"total_amount\":56.35,\"congestion_surcharge\":2.5,\"airport_fee\":0.0},\"nullCount\":{\"VendorID\":0,\"tpep_pickup_datetime\":0,\"tpep_dropoff_datetime\":0,\"passenger_count\":0,\"trip_distance\":0,\"RatecodeID\":0,\"store_and_fwd_flag\":0,\"PULocationID\":0,\"DOLocationID\":0,\"payment_type\":0,\"fare_amount\":0,\"extra\":0,\"mta_tax\":0,\"tip_amount\":0,\"tolls_amount\":0,\"improvement_surcharge\":0,\"total_amount\":0,\"congestion_surcharge\":0,\"airport_fee\":0}}"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{"commitInfo":{"timestamp":1737552102160,"operation":"WRITE","operationParameters":{"mode":"ErrorIfExists","partitionBy":"[]"},"isolationLevel":"Serializable","isBlindAppend":true,"operationMetrics":{"numFiles":"1","numOutputRows":"10","numOutputBytes":"6430"},"engineInfo":"Apache-Spark/3.5.4 Delta-Lake/3.3.0","txnId":"ce6337d8-02e5-4b6d-b7bc-cf3e033af6e3"}}
{"metaData":{"id":"daf6b671-aaad-492b-a5ac-faed6e47e339","format":{"provider":"parquet","options":{}},"schemaString":"{\"type\":\"struct\",\"fields\":[{\"name\":\"VendorID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tpep_pickup_datetime\",\"type\":\"timestamp_ntz\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tpep_dropoff_datetime\",\"type\":\"timestamp\",\"nullable\":true,\"metadata\":{}},{\"name\":\"passenger_count\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"trip_distance\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"RatecodeID\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"store_and_fwd_flag\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"PULocationID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"DOLocationID\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"payment_type\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}},{\"name\":\"fare_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"extra\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"mta_tax\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tip_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"tolls_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"improvement_surcharge\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"total_amount\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"congestion_surcharge\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"airport_fee\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}}]}","partitionColumns":[],"configuration":{},"createdTime":1737552101173}}
{"protocol":{"minReaderVersion":3,"minWriterVersion":7,"readerFeatures":["timestampNtz"],"writerFeatures":["timestampNtz","appendOnly","invariants"]}}
{"add":{"path":"part-00000-ec2cb5b9-464d-48c2-ab09-7d5e98cb7a6d-c000.snappy.parquet","partitionValues":{},"size":6430,"modificationTime":1737552102118,"dataChange":true,"stats":"{\"numRecords\":10,\"minValues\":{\"VendorID\":1,\"tpep_pickup_datetime\":\"2022-01-01T00:13:04.000\",\"tpep_dropoff_datetime\":\"2021-12-31T19:22:45.000+03:00\",\"passenger_count\":1.0,\"trip_distance\":0.78,\"RatecodeID\":1.0,\"store_and_fwd_flag\":\"N\",\"PULocationID\":68,\"DOLocationID\":42,\"payment_type\":1,\"fare_amount\":5.0,\"extra\":0.5,\"mta_tax\":0.5,\"tip_amount\":0.0,\"tolls_amount\":0.0,\"improvement_surcharge\":0.3,\"total_amount\":8.8,\"congestion_surcharge\":0.0,\"airport_fee\":0.0},\"maxValues\":{\"VendorID\":2,\"tpep_pickup_datetime\":\"2022-01-01T00:53:21.000\",\"tpep_dropoff_datetime\":\"2021-12-31T20:14:20.000+03:00\",\"passenger_count\":2.0,\"trip_distance\":10.3,\"RatecodeID\":1.0,\"store_and_fwd_flag\":\"N\",\"PULocationID\":238,\"DOLocationID\":236,\"payment_type\":2,\"fare_amount\":33.0,\"extra\":3.0,\"mta_tax\":0.5,\"tip_amount\":13.0,\"tolls_amount\":6.55,\"improvement_surcharge\":0.3,\"total_amount\":56.35,\"congestion_surcharge\":2.5,\"airport_fee\":0.0},\"nullCount\":{\"VendorID\":0,\"tpep_pickup_datetime\":0,\"tpep_dropoff_datetime\":0,\"passenger_count\":0,\"trip_distance\":0,\"RatecodeID\":0,\"store_and_fwd_flag\":0,\"PULocationID\":0,\"DOLocationID\":0,\"payment_type\":0,\"fare_amount\":0,\"extra\":0,\"mta_tax\":0,\"tip_amount\":0,\"tolls_amount\":0,\"improvement_surcharge\":0,\"total_amount\":0,\"congestion_surcharge\":0,\"airport_fee\":0}}"}}
Binary file not shown.

0 comments on commit c6371a6

Please sign in to comment.