Merge pull request #591 from chitralverma/fix-measures
[GRIFFIN-358] Rewrite the Rule/ Measure implementations
diff --git a/griffin-doc/measure/dimensions.md b/griffin-doc/measure/dimensions.md
new file mode 100644
index 0000000..8a71b19
--- /dev/null
+++ b/griffin-doc/measure/dimensions.md
@@ -0,0 +1,135 @@
+<!--
+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.
+-->
+
+
+Dimensions of Data Quality
+==========================
+
+In light of the management axiom “what gets measured gets managed” (Willcocks and Lester, 1996), the dimensions of Data
+Quality signifies a crucial management element in the domain of data quality. Through time, researchers and
+practitioners have suggested several views of data quality measures/ dimensions many of which have overlapping, and
+sometimes conflicting interpretations.
+
+While it is important to embrace the diversity of views of data quality measures/ dimensions, it is equally important
+for the data quality research and practitioner community to be united in the consistent interpretation of this
+foundational concept.
+
+Apache Griffin, takes a step towards this consistent interpretation through a systematic review of research and
+practitioner literature and measures/ assesses the quality of user-defined data assets in terms of the following
+dimension/ measures,
+
+- [Accuracy](#accuracy)
+- [Completeness](#completeness)
+- [Duplication](#duplication)
+- [Custom User-defined (SparkSQL based)](#sparksql)
+- [Profiling](#profiling)
+
+## Accuracy
+
+Data accuracy refers to the degree to which the values of a said attribute agrees with an identified reference truth
+data (source of correct information). In-accurate data may come from different sources like,
+
+- Dynamically computed values,
+- the result of a manual workflow,
+- irate customers, etc.
+
+Accuracy measure quantifies the extent to which data sets contains are correct, reliable and certified values that are
+free of error. Higher accuracy values signify that the said data set represents the “real-life” values/ objects that it
+intends to model.
+
+A detailed measure configuration guide is available [here](measure-configuration-guide/accuracy.md).
+
+## Completeness
+
+Completeness refers to the degree to which values are present in a data collection. When data is incomplete due to
+unavailability (missing records), this does not represent a lack of completeness. As far as an individual datum is
+concerned, only two situations are possible - either a value is assigned to the attribute in question or not. The latter
+case is usually represented by a `null` value.
+
+The definition of Completeness and its scope itself may change from one user to another. Thus, Apache Griffin allows
+users to define SQL-like expressions which describe their definition of completeness. For a tabular data set with
+columns `name`, `email` and `age`, some examples of such completeness definitions are mentioned below,
+
+- `name is NULL`
+- `name is NULL and age is NULL`
+- `email NOT RLIKE '^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$'`
+
+A detailed measure configuration guide is available [here](measure-configuration-guide/completeness.md).
+
+## Duplication
+
+Asserting the measure of duplication of the entities within a data set implies that no entity exists more than once
+within the data set and that there is a key that can be used to uniquely access each entity. For example, in a master
+product table, each product must appear once and be assigned a unique identifier that represents that product within a
+system or across multiple applications/ systems.
+
+Redundancies in a dataset can be measured in terms of the following metrics,
+
+- **Duplicate:** the number of values that are the same as other values in the list
+- **Distinct:** the number of non-null values that are different from each other (Non-unique + Unique)
+- **Non-Unique:** the number of values that have at least one duplicate in the list
+- **Unique:** the number of values that have no duplicates
+
+Duplication measure in Apache Griffin computes all of these metrics for a user-defined data asset.
+
+A detailed measure configuration guide is available [here](measure-configuration-guide/duplication.md).
+
+## SparkSQL
+
+In some cases, the above-mentioned dimensions/ measures may not enough to model a complete data quality definition. For
+such cases, Apache Griffin allows the definition of complex custom user-defined checks as SparkSQL queries.
+
+SparkSQL measure is like a pro mode that allows advanced users to configure complex custom checks that are not covered
+by other measures. These SparkSQL queries may contain clauses like `select`, `from`, `where`, `group-by`, `order-by`
+, `limit`, etc.
+
+A detailed measure configuration guide is available [here](measure-configuration-guide/sparksql.md).
+
+## Schema Conformance
+
+Schema Conformance ensures that the attributes of a given dataset follow a set of standard definitions in terms of data
+type. Most binary file formats (orc, avro, etc.) and tabular sources (Hive, RDBMS, etc.) already impose type constraints
+on the data they represent. However, text based formats like csv, json, xml, etc. do not retain schema information. Such
+formats must be explicitly validated for attribute type conformance.
+
+For example, date of birth of customer should be a date, age should be an integer.
+
+A detailed measure configuration guide is available [here](measure-configuration-guide/schema_conformance.md).
+
+## Profiling
+
+Data processing and its analysis can't truly be complete without data profiling - reviewing source data for content and
+quality. Data profiling helps to find data quality rules and requirements that will support a more thorough data quality
+assessment in a later step. Data profiling can help us to,
+
+- **Discover Structure of data**
+
+ Validating that data is consistent and formatted correctly, and performing mathematical checks on the data (e.g. sum,
+ minimum or maximum). Structure discovery helps understand how well data is structured—for example, what percentage of
+ phone numbers do not have the correct number of digits.
+
+- **Discover Content of data**
+
+ Looking into individual data records to discover errors. Content discovery identifies which specific rows in a table
+ contain problems, and which systemic issues occur in the data (for example, phone numbers with no area code).
+
+Data Profiling helps us create a huge amount of insight into the quality levels of our data and helps to find data
+quality rules and requirements that will support a more thorough data quality assessment in a later step.
+
+A detailed measure configuration guide is available [here](measure-configuration-guide/profiling.md).
diff --git a/griffin-doc/measure/measure-configuration-guide/accuracy.md b/griffin-doc/measure/measure-configuration-guide/accuracy.md
new file mode 100644
index 0000000..95fe54b
--- /dev/null
+++ b/griffin-doc/measure/measure-configuration-guide/accuracy.md
@@ -0,0 +1,245 @@
+<!--
+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.
+-->
+
+Accuracy Measure - Configuration Guide
+=====================================
+
+### Introduction
+
+Data accuracy refers to the degree to which the values of a said attribute in a data source agree with an identified
+reference truth data (source of correct information). In-accurate data may come from different sources like,
+
+- Dynamically computed values,
+- the result of a manual workflow,
+- irate customers, etc.
+
+Accuracy measure quantifies the extent to which data sets contains are correct, reliable and certified values that are
+free of error. Higher accuracy values signify that the said data set represents the “real-life” values/ objects that it
+intends to model.
+
+Accuracy measure is comparative in nature - attributes of data source to be checked are compared with attributes of
+another reference source. Thus, unlike other measures/ dimensions, Accuracy relies on definition of 2 sources,
+
+- the reference (truth) source which contains the good/ correct/ accurate values.
+- the actual data source to be assessed and measured for data accuracy.
+
+### Configuration
+
+The accuracy measure can be configured as below,
+
+```json
+{
+ ...
+
+ "measures": [
+ {
+ "name": "accuracy_measure",
+ "type": "accuracy",
+ "data.source": "crime_report_source",
+ "config": {
+ "ref.source": "crime_report_truth",
+ "expr": [
+ {
+ "source.col": "city",
+ "ref.col": "city_name"
+ }
+ ]
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "accuracy_metric",
+ "flatten": "map"
+ },
+ {
+ "type": "record",
+ "name": "accuracy_records"
+ }
+ ]
+ }
+ ]
+
+ ...
+}
+ ```
+
+##### Key Parameters:
+
+| Name | Type | Description | Supported Values |
+|:--------|:---------|:---------------------------------------|:----------------------------------------------------------|
+| name | `String` | User-defined name of this measure | - |
+| type | `String` | Type of Measure | completeness, duplication, profiling, accuracy, sparksql, schemaConformance |
+| data.source | `String` | Name of data source on which this measure is applied | - |
+| config | `Object` | Configuration params of the measure | Depends on measure type ([see below](#example-config-object)) |
+| out | `List ` | Define output(s) of measure execution | [See below](#outputs) |
+
+##### Example `config` Object:
+
+`config` object for Accuracy measure contains the following keys,
+
+- `expr`: The value for `expr` is a json array of comparison objects where each object has 2 fields `source.col`
+ and `ref.col` which must be actual columns in the source and reference data sets respectively. This key is mandatory
+ and `expr` array must not be empty i.e. at least one comparison must be defined.
+
+- `ref.source`: This is a mandatory parameter which selects the data source which will be used as reference. This is a
+ mandatory parameter and this data source must be defined in the sources section of the application configuration.
+
+_Note:_ This expression describes the accurate records. This means that for all records where `expr` is true, the row is
+marked as accurate, and rest of the records are in-accurate.
+
+The conditions of attribute comparison are defined by users, and it looks something like,
+
+```json
+{
+ ...
+
+ "config": {
+ "ref.source": "crime_report_truth",
+ "expr": [
+ {
+ "source.col": "city",
+ "ref.col": "city_name"
+ }
+ ]
+ }
+
+ ...
+}
+```
+
+This expression means that the users is trying to access the accuracy of `city` column in the data source under
+assessment against the accurate values in `city_name` column of the reference data source. For understand, in SQL this
+will boil down to `city == city_name`.
+
+Since `expr` is an array, users can define as many comparisons as they require. In case of multiple conditions, the
+overall rule representation in terms of SQL becomes something like,
+`s1 == r1 AND s2 == r2 AND sn == rn`, where `sn` and `rn` are all actual columns.
+
+Note: The values of `source.col` and `ref.col` must be actual column names in the source and reference data sets
+respectively.
+
+### Outputs
+
+Accuracy measure supports the following two outputs,
+
+- Metrics
+- Records
+
+Users can choose to define any combination of these 2 outputs. For no outputs, skip this `out: [ ... ]` section from the
+measure configuration.
+
+#### Metrics Outputs
+
+To write metrics for accuracy measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "type": "metric",
+ "name": "accuracy_metric"
+ }
+ ]
+
+ ...
+}
+ ```
+
+This will generate the metrics like below,
+
+```json
+{
+ "applicationId": "local-1623451540444",
+ "job_name": "Batch-All-Measures-Example",
+ "tmst": 1623451547986,
+ "measure_name": "accuracy_measure",
+ "metrics": [
+ {
+ "metric_name": "total",
+ "metric_value": "4617"
+ },
+ {
+ "metric_name": "accurate",
+ "metric_value": "4511"
+ },
+ {
+ "metric_name": "inaccurate",
+ "metric_value": "106"
+ }
+ ],
+ "measure_type": "Accuracy",
+ "data_source": "crime_report_source"
+}
+```
+
+#### Record Outputs
+
+To write records as output for accuracy measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "type": "record",
+ "name": "accuracy_records"
+ }
+ ]
+
+ ...
+}
+ ```
+
+The above configuration will generate the records output like below,
+
+```
++-------------------+---------------------------------------------+---------------------------------+-------------+-------+-------------+--------+
+|date_time |incident |address |city |zipcode|__tmst |__status|
++-------------------+---------------------------------------------+---------------------------------+-------------+-------+-------------+--------+
+|2015-05-26 20:15:00|F&W/DISPOSAL REQUEST (F&WDISPS) |200 Block FOREST AV |PALO ALTO |94301 |1622231569966|good |
+|2015-05-26 20:45:00|ACCIDENT PROPERTY DAMAGE (1182) |MIDDLEFIELD RD & SAN ANTONIO RD |PALO ALTO |94303 |1622231569966|good |
+|2015-05-26 22:55:00|DRIVER'S LICENSE SUSPENDED/ALC (14601.2(A)VC)|EL CAMINO REAL & N SAN ANTONIO RD|"" |null |1622231569966|bad |
+|2015-05-26 22:55:00|TRAFFIC/SUSPENDED LICENSE (14601) |EL CAMINO REAL & N SAN ANTONIO RD|"" |null |1622231569966|bad |
+|2015-05-26 23:40:00|BURGLARY/AUTO (459A) |300 Block EMERSON ST |PALO ALTO |94301 |1622231569966|good |
+|2015-05-27 00:30:00|BURGLARY/AUTO (459A) |1900 Block EL CAMINO REAL |PALO ALTO |94306 |1622231569966|good |
+|2015-05-30 19:28:00|SICK & CARED FOR/MISC (1053M) |100 Block LOIS LN |PALO ALTO |94303 |1622231569966|good |
+|2015-05-30 19:30:00|BURGLARY/AUTO (459A) |100 Block EL CAMINO REAL |PALO ALTO |94304 |1622231569966|good |
+|2015-05-30 20:50:00|BURGLARY/AUTO (459A) |100 Block EL CAMINO REAL |PALO ALTO |94304 |1622231569966|good |
+|2015-05-30 20:54:00|BURGLARY/AUTO (459A) |400 Block E OKEEFE ST |"" |94303 |1622231569966|bad |
+|2015-05-30 20:54:00|BURGLARY/AUTO (459A) |400 Block E OKEEFE ST |"" |94303 |1622231569966|bad |
+|2015-05-30 21:17:00|BURGLARY/AUTO (459A) |2000 Block EL CAMINO REAL |PALO ALTO |94306 |1622231569966|good |
+|2015-05-30 21:17:00|CREDIT CARDS/FRAUDULENT USE (484G) |2000 Block EL CAMINO REAL |PALO ALTO |94306 |1622231569966|good |
+|2015-06-01 16:00:00|ACCIDENT PROPERTY DAMAGE (1182) |3100 Block BLOCK MIDDLEFIELD RD |PALO ALTO |94306 |1622231569966|good |
+|2015-06-01 16:00:00|BURGLARY/AUTO (459A) |4200 Block EL CAMINO REAL |PALO ALTO |94306 |1622231569966|good |
+|2015-06-01 16:20:00|BURGLARY ATTEMPT/AUTO (459AA) |300 Block LOWELL AV |PALO ALTO |94301 |1622231569966|good |
+|2015-06-01 16:30:00|BURGLARY/AUTO (459A) |800 Block EL CAMINO REAL |PALO ALTO |94301 |1622231569966|good |
+|2015-06-01 16:30:00|ASSAULT WITH DEADLY WEAPON (245) |1100 Block N RENGSTORFF AV |MOUNTAIN VIEW|null |1622231569966|bad |
+|2015-06-01 16:30:00|BURGLARY/AUTO (459A) |2000 Block EL CAMINO REAL |PALO ALTO |94306 |1622231569966|good |
+|2015-06-01 16:30:00|TRAFFIC/SUSPENDED LICENSE (14601) |1100 Block N RENGSTORFF AV |MOUNTAIN VIEW|null |1622231569966|bad |
++-------------------+---------------------------------------------+---------------------------------+-------------+-------+-------------+--------+
+only showing top 20 rows
+ ```
+
+A new column `__status` has been added to the original data set on which this measure was executed. The value of this
+column can be either `bad` or `good` which can be used to calculate the metrics/ separate data based on quality etc.
+
+_Note:_ This output is for `ConsoleSink`.
\ No newline at end of file
diff --git a/griffin-doc/measure/measure-configuration-guide/completeness.md b/griffin-doc/measure/measure-configuration-guide/completeness.md
new file mode 100644
index 0000000..accd5a5
--- /dev/null
+++ b/griffin-doc/measure/measure-configuration-guide/completeness.md
@@ -0,0 +1,212 @@
+<!--
+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.
+-->
+
+Completeness Measure - Configuration Guide
+=====================================
+
+### Introduction
+
+Completeness refers to the degree to which values are present in a data collection. When data is incomplete due to
+unavailability (missing records), this does not represent a lack of completeness. As far as an individual datum is
+concerned, only two situations are possible - either a value is assigned to the attribute in question or not. The latter
+case is usually represented by a `null` value.
+
+The definition of Completeness and its scope itself may change from one user to another. Thus, Apache Griffin allows
+users to define SQL-like expressions which describe their definition of completeness. For a tabular data set with
+columns `name`, `email` and `age`, some examples of such completeness definitions are mentioned below,
+
+- `name is NULL`
+- `name is NULL and age is NULL`
+- `email NOT RLIKE '^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$'`
+
+### Configuration
+
+The completeness measure can be configured as below,
+
+```json
+{
+ ...
+
+ "measures": [
+ {
+ "name": "completeness_measure",
+ "type": "completeness",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": "zipcode is null OR city is null"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "comp_metric",
+ "flatten": "map"
+ },
+ {
+ "type": "record",
+ "name": "comp_records"
+ }
+ ]
+ }
+ ]
+
+ ...
+}
+ ```
+
+##### Key Parameters:
+
+| Name | Type | Description | Supported Values |
+|:--------|:---------|:---------------------------------------|:----------------------------------------------------------|
+| name | `String` | User-defined name of this measure | - |
+| type | `String` | Type of Measure | completeness, duplication, profiling, accuracy, sparksql, schemaConformance |
+| data.source | `String` | Name of data source on which this measure is applied | - |
+| config | `Object` | Configuration params of the measure | Depends on measure type ([see below](#example-config-object)) |
+| out | `List ` | Define output(s) of measure execution | [See below](#outputs) |
+
+##### Example `config` Object:
+
+`config` object for completeness measure contains only one key `expr`. The value for `expr` is a SQL-like expression
+string which definition this completeness. For more complex definitions, expressions can be clubbed with `AND` and `OR`.
+
+_Note:_ This expression describes the bad or incomplete records. This means that for `"expr": "zipcode is NULL"` the
+records which contain `null` in zipcode column are considered as incomplete.
+
+It can be defined as mentioned below,
+
+```json
+{
+ ...
+
+ "config": {
+ "expr": "zipcode is null OR city is null"
+ }
+
+ ...
+}
+ ```
+
+### Outputs
+
+Completeness measure supports the following two outputs,
+
+- Metrics
+- Records
+
+Users can choose to define any combination of these 2 outputs. For no outputs, skip this `out: [ ... ]` section from the
+measure configuration.
+
+#### Metrics Outputs
+
+To write metrics for completeness measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "name": "comp_metric",
+ "type": "metric"
+ }
+ ]
+
+ ...
+}
+ ```
+
+This will generate the metrics like below,
+
+```json
+{
+ "applicationId": "local-1623452412322",
+ "job_name": "Batch-All-Measures-Example",
+ "tmst": 1623452423891,
+ "measure_name": "completeness_measure",
+ "metrics": [
+ {
+ "metric_name": "total",
+ "metric_value": "4617"
+ },
+ {
+ "metric_name": "complete",
+ "metric_value": "4459"
+ },
+ {
+ "metric_name": "incomplete",
+ "metric_value": "158"
+ }
+ ],
+ "measure_type": "Completeness",
+ "data_source": "crime_report_source"
+}
+```
+
+#### Record Outputs
+
+To write records as output for completeness measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "type": "record",
+ "name": "comp_records"
+ }
+ ]
+
+ ...
+}
+ ```
+
+The above configuration will generate the records output like below,
+
+```
++-------------------+---------------------------------------------+---------------------------------------+-------------+-------+-------------+--------+
+|date_time |incident |address |city |zipcode|__tmst |__status|
++-------------------+---------------------------------------------+---------------------------------------+-------------+-------+-------------+--------+
+|2015-05-26 05:56:00|PENAL CODE/MISC (PENALMI) |3900 Block BLOCK EL CAMINO REAL |PALO ALTO |94306 |1619969055893|good |
+|2015-05-26 05:56:00|DRUNK IN PUBLIC ADULT/MISC (647FA) |3900 Block BLOCK EL CAMINO REAL |PALO ALTO |94306 |1619969055893|good |
+|2015-05-26 05:56:00|PENAL CODE/MISC (PENALMI) |3900 Block BLOCK EL CAMINO REAL |PALO ALTO |94306 |1619969055893|good |
+|2015-05-26 22:55:00|DRIVER'S LICENSE SUSPENDED/ALC (14601.2(A)VC)|EL CAMINO REAL & N SAN ANTONIO RD |"" |null |1619969055893|bad |
+|2015-05-26 22:55:00|TRAFFIC/SUSPENDED LICENSE (14601) |EL CAMINO REAL & N SAN ANTONIO RD |"" |null |1619969055893|bad |
+|2015-06-01 01:41:00|TRAFFIC/SUSPENDED LICENSE (14601) |QUARRY RD & ARBORETUM RD |PALO ALTO |94304 |1619969055893|good |
+|2015-06-01 02:49:00|TRAFFIC/SUSPENDED LICENSE (14601) |2000 Block BLOCK E BAYSHORE RD |PALO ALTO |94303 |1619969055893|good |
+|2015-06-01 03:13:00|DRIVING WITH A SUSPENDED OR RE (14601.1(A)VC)|100 Block SAN ANTONIO RD |PALO ALTO |null |1619969055893|bad |
+|2015-06-01 03:13:00|TRAFFIC/SUSPENDED LICENSE (14601) |100 Block SAN ANTONIO RD |PALO ALTO |null |1619969055893|bad |
+|2015-06-01 03:13:00|WARRANT/PALO ALTO (PWARRANT) |100 Block SAN ANTONIO RD |PALO ALTO |null |1619969055893|bad |
+|2015-06-01 16:20:00|BURGLARY ATTEMPT/AUTO (459AA) |300 Block LOWELL AV |PALO ALTO |94301 |1619969055893|good |
+|2015-06-01 16:30:00|BURGLARY/AUTO (459A) |800 Block EL CAMINO REAL |PALO ALTO |94301 |1619969055893|good |
+|2015-06-01 16:30:00|ASSAULT WITH DEADLY WEAPON (245) |1100 Block N RENGSTORFF AV |MOUNTAIN VIEW|null |1619969055893|bad |
+|2015-06-01 16:30:00|BURGLARY/AUTO (459A) |2000 Block EL CAMINO REAL |PALO ALTO |94306 |1619969055893|good |
+|2015-06-01 16:30:00|TRAFFIC/SUSPENDED LICENSE (14601) |1100 Block N RENGSTORFF AV |MOUNTAIN VIEW|null |1619969055893|bad |
+|2015-06-01 16:30:00|PENAL CODE/RESISTING ARREST (148RA) |1100 Block N RENGSTORFF AV |MOUNTAIN VIEW|null |1619969055893|bad |
+|2015-06-01 16:30:00|BURGLARY/AUTO (459A) |1100 Block N RENGSTORFF AV |MOUNTAIN VIEW|null |1619969055893|bad |
+|2015-06-01 16:30:00|ASSAULT WITH DEADLY WEAPON (245) |1100 Block N RENGSTORFF AV |MOUNTAIN VIEW|null |1619969055893|bad |
+|2015-06-01 17:30:00|IDENTITY THEFT/MISC. (530M) |300 Block CREEKSIDE DR |PALO ALTO |94306 |1619969055893|good |
+|2015-06-01 17:30:00|PENAL CODE/TERRORIST THREATS (422) |100 Block CALIFORNIA AV |PALO ALTO |94306 |1619969055893|good |
++-------------------+---------------------------------------------+---------------------------------------+-------------+-------+-------------+--------+
+only showing top 20 rows
+ ```
+
+A new column `__status` has been added to the original data set on which this measure was executed. The value of this
+column can be either `bad` or `good` which can be used to calculate the metrics/ separate data based on quality etc.
+
+_Note:_ This output is for `ConsoleSink`.
\ No newline at end of file
diff --git a/griffin-doc/measure/measure-configuration-guide/duplication.md b/griffin-doc/measure/measure-configuration-guide/duplication.md
new file mode 100644
index 0000000..15e7408
--- /dev/null
+++ b/griffin-doc/measure/measure-configuration-guide/duplication.md
@@ -0,0 +1,257 @@
+<!--
+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.
+-->
+
+Duplication Measure - Configuration Guide
+=====================================
+
+### Introduction
+
+Asserting the measure of duplication of the entities within a data set implies that no entity exists more than once
+within the data set and that there is a key that can be used to uniquely access each entity. For example, in a master
+product table, each product must appear once and be assigned a unique identifier that represents that product within a
+system or across multiple applications/ systems.
+
+Redundancies in a dataset can be measured in terms of the following metrics,
+
+- **Duplicate:** the number of values that are the same as other values in the list
+- **Distinct:** the number of non-null values that are different from each other (Non-unique + Unique)
+- **Non-Unique:** the number of values that have at least one duplicate in the list
+- **Unique:** the number of values that have no duplicates
+
+Duplication measure in Apache Griffin computes all of these metrics for a user-defined data asset.
+
+As an example, consider the data set below,
+
+```
++---+-------------+------+
+|id |name |gender|
++---+-------------+------+
+|1 |John Smith |Male |
+|2 |John Smith |Male |
+|3 |Rebecca Davis|Female|
+|4 |Paul Adams |Male |
+|5 |null |null |
++---+-------------+------+
+```
+
+From the above definitions of redundancy measurement following results are generated (considering only `name` column),
+
+| Metric | Count | Records | Explanation |
+|:----------|:-----:|:----------------|:-----------------------------------------------------------|
+|Duplicate | 1 | Record 2 | There is one duplicate of the John Smith record (Record 1) |
+|Distinct | 3 | Records 1, 3, 4 | These records contain distinct values |
+|Non-unique | 1 | Record 1 | John Smith has a duplicate record - it isn't unique |
+|Unique | 2 | Records 3 and 4 | Rebecca Davis and Paul Adams appear only once in the list, they have no duplicates |
+
+_Note:_ The above results are when only `name` column is measured by duplication measure. Results for whole row would be
+different.
+
+### Configuration
+
+The duplication measure can be configured as below,
+
+```json
+{
+ ...
+
+ "measures": [
+ {
+ "name": "duplication_measure",
+ "type": "duplication",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": "incident",
+ "bad.record.definition": "duplicate"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "duplication_metric",
+ "flatten": "map"
+ },
+ {
+ "type": "record",
+ "name": "duplication_records"
+ }
+ ]
+ }
+ ]
+
+ ...
+}
+ ```
+
+##### Key Parameters:
+
+| Name | Type | Description | Supported Values |
+|:--------|:---------|:---------------------------------------|:----------------------------------------------------------|
+| name | `String` | User-defined name of this measure | - |
+| type | `String` | Type of Measure | completeness, duplication, profiling, accuracy, sparksql, schemaConformance |
+| data.source | `String` | Name of data source on which this measure is applied | - |
+| config | `Object` | Configuration params of the measure | Depends on measure type ([see below](#example-config-object)) |
+| out | `List ` | Define output(s) of measure execution | [See below](#outputs) |
+
+##### Example `config` Object:
+
+`config` object for duplication measure contains the following keys,
+
+- `expr`: The value for `expr` is a comma separated string of columns in the data asset on which the duplication measure
+ is to be executed. `expr` is an optional key for Duplication measure, i.e., if it is not defined, the entire row will
+ be checked by duplication measure.
+
+- `bad.record.definition`: As the key suggests, its value defines what exactly would be considered as a bad record after
+ this measure computes redundancies on the data asset. Since the redundancies are calculated as `duplicate`, `unique`
+ , `non_unique`, and `distinct`, the value of this key must also be one of these values. This key is mandatory and
+ must be defined with appropriate value.
+
+ _Note:_ This expression describes the bad records. This means that for the config,
+ ```json
+ {
+ ...
+
+ "config": {
+ "expr": "incident",
+ "bad.record.definition": "duplicate"
+ }
+
+ ...
+ }
+ ```
+ the records with duplicate value in `incident` column will be considered bad.
+
+ If `expr` was not defined then the duplicate records themselves will be considered bad.
+
+### Outputs
+
+Duplication measure supports the following two outputs,
+
+- Metrics
+- Records
+
+Users can choose to define any combination of these 2 outputs. For no outputs, skip this `out: [ ... ]` section from the
+measure configuration.
+
+#### Metrics Outputs
+
+To write metrics for duplication measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "name": "duplication_metric",
+ "type": "metric"
+ }
+ ]
+
+ ...
+}
+ ```
+
+This will generate the metrics like below,
+
+```json
+{
+ "applicationId": "local-1623452147576",
+ "job_name": "Batch-All-Measures-Example",
+ "tmst": 1623452154930,
+ "measure_name": "duplication_measure",
+ "metrics": [
+ {
+ "metric_name": "total",
+ "metric_value": "4617"
+ },
+ {
+ "metric_name": "duplicate",
+ "metric_value": "4363"
+ },
+ {
+ "metric_name": "unique",
+ "metric_value": "58"
+ },
+ {
+ "metric_name": "non_unique",
+ "metric_value": "196"
+ },
+ {
+ "metric_name": "distinct",
+ "metric_value": "254"
+ }
+ ],
+ "measure_type": "Duplication",
+ "data_source": "crime_report_source"
+}
+```
+
+#### Record Outputs
+
+To write records as output for duplication measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "type": "record",
+ "name": "duplication_records"
+ }
+ ]
+
+ ...
+}
+ ```
+
+The above configuration will generate the records output like below,
+
+```
++-------------------+-----------------------------------------+----------------------------------+-------------+-------+-------------+--------+
+|date_time |incident |address |city |zipcode|__tmst |__status|
++-------------------+-----------------------------------------+----------------------------------+-------------+-------+-------------+--------+
+|2015-10-30 03:32:00|MUNI CODE/MISC |400 Block LYTTON AV |PALO ALTO |94301 |1619970144048|good |
+|2015-10-31 23:00:00|MUNI CODE/MISC |1 Block ENCINA AV |PALO ALTO |94301 |1619970144048|bad |
+|2015-10-31 23:10:00|MUNI CODE/MISC |LYTTON AV & BRYANT ST |PALO ALTO |94301 |1619970144048|bad |
+|2016-02-07 07:38:00|MUNI CODE/MISC |200 Block UNIVERSITY AV |PALO ALTO |94301 |1619970144048|bad |
+|2015-05-31 07:27:00|THEFT PETTY ATT/FROM AUTO (488FAA) |2000 Block EMERSON ST |PALO ALTO |94301 |1619970144048|good |
+|2015-06-02 16:00:00|OUTSIDE INVESTIGATION/MISC (OUTSIDE) |700 Block CEREZA DR |PALO ALTO |94306 |1619970144048|good |
+|2015-10-31 07:21:00|VEHICLE/IMPOUNDED |400 Block BRYANT ST |PALO ALTO |94301 |1619970144048|good |
+|2016-02-02 16:50:00|VEHICLE/IMPOUNDED |1400 Block BLOCK EL CAMINO REAL |PALO ALTO |null |1619970144048|bad |
+|2016-02-04 07:14:00|VEHICLE/IMPOUNDED |EMBARCADERO RD & GREER RD |PALO ALTO |94303 |1619970144048|bad |
+|2015-05-27 05:00:00|FOUND PROPERTY/MISC (FOUND) |HAMILTON AV & WAVERLEY ST |PALO ALTO |94301 |1619970144048|good |
+|2015-05-29 20:30:00|FOUND PROPERTY/MISC (FOUND) |700 Block GREER RD |PALO ALTO |94303 |1619970144048|bad |
+|2015-05-30 22:50:00|FOUND PROPERTY/MISC (FOUND) |600 Block GUINDA ST |PALO ALTO |94301 |1619970144048|bad |
+|2015-06-01 18:30:00|FOUND PROPERTY/MISC (FOUND) |200 Block UNIVERSITY AV |PALO ALTO |94301 |1619970144048|bad |
+|2015-06-01 22:30:00|FOUND PROPERTY/MISC (FOUND) |300 Block HOMER AV |PALO ALTO |94301 |1619970144048|bad |
+|2015-10-20 13:30:00|FOUND PROPERTY/MISC (FOUND) |2600 Block MIDDLEFIELD RD |PALO ALTO |94306 |1619970144048|bad |
+|2015-10-21 23:30:00|FOUND PROPERTY/MISC (FOUND) |3200 Block BLOCK E BAYSHORE RD |PALO ALTO |94303 |1619970144048|bad |
+|2015-09-28 06:35:00|STALKING/MISC (6469) |700 Block DE SOTO DR |PALO ALTO |94303 |1619970144048|good |
+|2015-07-02 20:23:00|DRUNK IN PUBLIC (647(F)PC) |800 Block EL CAMINO REAL |PALO ALTO |94301 |1619970144048|good |
+|2015-08-01 01:30:00|DRUNK IN PUBLIC (647(F)PC) |500 Block HIGH ST |PALO ALTO |94301 |1619970144048|bad |
+|2015-07-11 21:56:00|OUTSIDE WARRANT (O/W-MISD) |3500 Block BLOCK EL CAMINO REAL |PALO ALTO |94306 |1619970144048|good |
++-------------------+-----------------------------------------+----------------------------------+-------------+-------+-------------+--------+
+only showing top 20 rows
+ ```
+
+A new column `__status` has been added to the original data set on which this measure was executed. The value of this
+column can be either `bad` or `good` which can be used to calculate the metrics/ separate data based on quality etc.
+These values for `__status` column are based on the value of user-defined key `bad.record.definition`.
+
+_Note:_ This output is for `ConsoleSink`.
\ No newline at end of file
diff --git a/griffin-doc/measure/measure-configuration-guide/profiling.md b/griffin-doc/measure/measure-configuration-guide/profiling.md
new file mode 100644
index 0000000..b6ee6fa
--- /dev/null
+++ b/griffin-doc/measure/measure-configuration-guide/profiling.md
@@ -0,0 +1,210 @@
+<!--
+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.
+-->
+
+Profiling Measure - Configuration Guide
+=====================================
+
+### Introduction
+
+Data processing and its analysis can't truly be complete without data profiling - reviewing source data for content and
+quality. Data profiling helps to find data quality rules and requirements that will support a more thorough data quality
+assessment in a later step. Data profiling can help us to,
+
+- **Discover Structure of data**
+
+ Validating that data is consistent and formatted correctly, and performing mathematical checks on the data (e.g. sum,
+ minimum or maximum). Structure discovery helps understand how well data is structured—for example, what percentage of
+ phone numbers do not have the correct number of digits.
+
+- **Discover Content of data**
+
+ Looking into individual data records to discover errors. Content discovery identifies which specific rows in a table
+ contain problems, and which systemic issues occur in the data (for example, phone numbers with no area code).
+
+The process of Data profiling involves:
+
+- Collecting descriptive statistics like min, max, count and sum
+- Collecting data types, length and recurring patterns
+- Discovering metadata and assessing its accuracy, etc.
+
+A common problem in data management circles is the confusion around what is meant by Data profiling as opposed to Data
+Quality Assessment due to the interchangeable use of these 2 terms.
+
+Data Profiling helps us create a huge amount of insight into the quality levels of our data and helps to find data
+quality rules and requirements that will support a more thorough data quality assessment in a later step. For example,
+data profiling can help us to discover value frequencies, formats and patterns for each attribute in the data asset.
+Using data profiling alone we can find some perceived defects and outliers in the data asset, and we end up with a whole
+range of clues based on which correct Quality assessment measures can be defined like completeness/ distinctness etc.
+
+### Configuration
+
+The Profiling measure can be configured as below,
+
+```json
+{
+ ...
+
+ "measures": [
+ {
+ "name": "profiling_measure",
+ "type": "profiling",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": "city,zipcode",
+ "approx.distinct.count": true,
+ "round.scale": 2,
+ "dataset.sample": 1.0
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "prof_metric",
+ "flatten": "map"
+ }
+ ]
+ }
+ ]
+
+ ...
+}
+ ```
+
+##### Key Parameters:
+
+| Name | Type | Description | Supported Values |
+|:--------|:---------|:---------------------------------------|:----------------------------------------------------------|
+| name | `String` | User-defined name of this measure | - |
+| type | `String` | Type of Measure | completeness, duplication, profiling, accuracy, sparksql, schemaConformance |
+| data.source | `String` | Name of data source on which this measure is applied | - |
+| config | `Object` | Configuration params of the measure | Depends on measure type ([see below](#example-config-object)) |
+| out | `List ` | Define output(s) of measure execution | [See below](#outputs) |
+
+##### Example `config` Object:
+
+`config` object for Profiling measure contains the following keys,
+
+- `expr`: The value for `expr` is a comma separated string of columns in the data asset on which the profiling measure
+ is to be executed. `expr` is an optional key for Profiling measure, i.e., if it is not defined, all columns in the
+ data set will be profiled.
+
+- `approx.distinct.count`: The value for this key is boolean. If this is `true`, the distinct counts will be
+ approximated to allow up to 5% error. Approximate counts are usually faster but are less accurate. If this is set
+ to `false`, then the counts will be 100% accurate.
+
+- `round.scale`: Several resultant metrics of profiling measure are floating-point numbers. This key controls to extent
+ to which these floating-point numbers are rounded. For example, if `round.scale = 2` then all floating-point metric
+ values will be rounded to 2 decimal places.
+
+- `dataset.sample`: The value of this key determines what percentage of data is to be profiled. The decimal value
+ belongs to range [0.0, 1.0], where 0.0 means the whole dataset will be skipped, 1.0 means the whole dataset will be
+ profiled. An intermediate value, say 0.5 will approximately take random 50% of the dataset rows (without replacement)
+ and perform profiling on it. This option can be used when the dataset to be profiled is large, and an approximate
+ profile is needed.
+
+### Outputs
+
+Unlike other measures, Profiling does not produce record outputs. Thus, only metric outputs must be configured.
+
+#### Metrics Outputs
+
+For each column in the data set, the profile contains the following,
+
+- avg_col_len: Average length of the column value across all rows
+- max_col_len: Maximum length of the column value across all rows
+- min_col_len: Minimum length of the column value across all rows
+- avg: Average column value across all rows
+- max: Maximum column value across all rows
+- min: Minimum column value across all rows
+- null_count: Count of null values across all rows for this column
+- approx_distinct_count **OR** distinct_count: Count of (approx) distinct values across all rows for this column
+- variance: Variance measures variability from the average or mean.
+- kurtosis: Kurtosis is a measure of whether the data are heavy-tailed or light-tailed relative to a normal
+ distribution.
+- std_dev: Standard deviation is a measure of the amount of variation or dispersion of a set of values.
+- total: Total values across all rows. This is same for all columns.
+- data_type: Data type of this column.
+
+To write Profiling metrics, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "name": "prof_metric",
+ "type": "metric"
+ }
+ ]
+
+ ...
+}
+ ```
+
+This will generate the metrics like below,
+
+```json
+{
+ "applicationId": "local-1623451540444",
+ "job_name": "Batch-All-Measures-Example",
+ "tmst": 1623451547985,
+ "measure_name": "profiling_measure",
+ "metrics": [
+ {
+ "city": {
+ "avg_col_len": null,
+ "max_col_len": "25",
+ "variance": null,
+ "kurtosis": null,
+ "avg": null,
+ "min": null,
+ "null_count": "0",
+ "approx_distinct_count": "6",
+ "total": "4617",
+ "std_dev": null,
+ "data_type": "string",
+ "max": null,
+ "min_col_len": "2"
+ }
+ },
+ {
+ "zipcode": {
+ "avg_col_len": "5.0",
+ "max_col_len": "5",
+ "variance": "4.57",
+ "kurtosis": "-1.57",
+ "avg": "94303.11",
+ "min": "94301",
+ "null_count": "158",
+ "approx_distinct_count": "4",
+ "total": "4617",
+ "std_dev": "2.14",
+ "data_type": "int",
+ "max": "94306",
+ "min_col_len": "5"
+ }
+ }
+ ],
+ "measure_type": "Profiling",
+ "data_source": "crime_report_source"
+}
+```
+
+_Note:_ Some mathematical metrics are bound to the type of attribute under consideration, for example standard deviation
+cannot be calculated for a column name of string type, thus, the value for these metrics are null for such columns.
\ No newline at end of file
diff --git a/griffin-doc/measure/measure-configuration-guide/schema_conformance.md b/griffin-doc/measure/measure-configuration-guide/schema_conformance.md
new file mode 100644
index 0000000..768c0ca
--- /dev/null
+++ b/griffin-doc/measure/measure-configuration-guide/schema_conformance.md
@@ -0,0 +1,218 @@
+<!--
+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.
+-->
+
+SchemaConformance Measure - Configuration Guide
+=====================================
+
+### Introduction
+
+Schema Conformance ensures that the attributes of a given dataset follow a set of standard definitions in terms of data
+type. Most binary file formats (orc, avro, etc.) and tabular sources (Hive, RDBMS, etc.) already impose type constraints
+on the data they represent. However, text based formats like csv, json, xml, etc. do not retain schema information. Such
+formats must be explicitly validated for attribute type conformance.
+
+For example, date of birth of customer should be a date, age should be an integer.
+
+### Configuration
+
+The schema conformance measure can be configured as below,
+
+```json
+{
+ ...
+
+ "measures": [
+ {
+ "name": "schema_conformance_measure",
+ "type": "schemaConformance",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": [
+ {
+ "source.col": "zipcode_str",
+ "type": "int"
+ }
+ ]
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "schema_conformance_metric"
+ },
+ {
+ "type": "record",
+ "name": "schema_conformance_records"
+ }
+ ]
+ }
+ ]
+
+ ...
+}
+ ```
+
+##### Key Parameters:
+
+| Name | Type | Description | Supported Values |
+|:--------|:---------|:---------------------------------------|:----------------------------------------------------------|
+| name | `String` | User-defined name of this measure | - |
+| type | `String` | Type of Measure | completeness, duplication, profiling, accuracy, sparksql, schemaConformance |
+| data.source | `String` | Name of data source on which this measure is applied | - |
+| config | `Object` | Configuration params of the measure | Depends on measure type ([see below](#example-config-object)) |
+| out | `List ` | Define output(s) of measure execution | [See below](#outputs) |
+
+##### Example `config` Object:
+
+`config` object for schema conformance measure contains only one key `expr`. The value for `expr` is a json array of
+mapping objects where each object has 2 fields - `source.col` and `type`. Each `source.col` must exist in the source
+data set and will be checked for type. This key is mandatory and `expr` array must not be empty i.e., at least one
+mapping must be defined.
+
+It can be defined as mentioned below,
+
+```json
+{
+ ...
+
+ "config": {
+ "expr": [
+ ...
+
+ {
+ "source.col": "zipcode_str",
+ "type": "int"
+ }
+
+ ...
+ ]
+ }
+
+ ...
+}
+ ```
+
+### Outputs
+
+Schema Conformance measure supports the following two outputs,
+
+- Metrics
+- Records
+
+Users can choose to define any combination of these 2 outputs. For no outputs, skip this `out: [ ... ]` section from the
+measure configuration.
+
+#### Metrics Outputs
+
+To write metrics for Schema Conformance measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "type": "metric",
+ "name": "schema_conformance_metric"
+ }
+ ]
+
+ ...
+}
+ ```
+
+This will generate the metrics like below,
+
+```json
+{
+ "applicationId": "local-1623452147576",
+ "job_name": "Batch-All-Measures-Example",
+ "tmst": 1623452154931,
+ "measure_name": "schema_conformance_measure",
+ "metrics": [
+ {
+ "metric_name": "total",
+ "metric_value": "4617"
+ },
+ {
+ "metric_name": "complete",
+ "metric_value": "4459"
+ },
+ {
+ "metric_name": "incomplete",
+ "metric_value": "158"
+ }
+ ],
+ "measure_type": "SchemaConformance",
+ "data_source": "crime_report_source"
+}
+```
+
+#### Record Outputs
+
+To write records as output for Schema Conformance measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "type": "record",
+ "name": "schema_conformance_records"
+ }
+ ]
+
+ ...
+}
+ ```
+
+The above configuration will generate the records output like below,
+
+```
++-------------------+--------------------+--------------------+---------+-----------+-------+-------------+--------+
+| date_time| incident| address| city|zipcode_str|zipcode| __tmst|__status|
++-------------------+--------------------+--------------------+---------+-----------+-------+-------------+--------+
+|2015-05-26 05:56:00|PENAL CODE/MISC (...|3900 Block BLOCK ...|PALO ALTO| 94306| 94306|1623452414131| good|
+|2015-05-26 05:56:00|DRUNK IN PUBLIC A...|3900 Block BLOCK ...|PALO ALTO| 94306| 94306|1623452414131| good|
+|2015-05-26 05:56:00|PENAL CODE/MISC (...|3900 Block BLOCK ...|PALO ALTO| "" | null |1623452414131| bad |
+|2015-05-26 05:56:00|PENAL CODE/MISC (...|3900 Block BLOCK ...|PALO ALTO| 94306| 94306|1623452414131| good|
+|2015-05-26 08:00:00|N&D/POSSESSION (1...|WILKIE WAY & JAME...|PALO ALTO| 94306| 94306|1623452414131| good|
+|2015-05-26 08:00:00|N&D/PARAPHERNALIA...|WILKIE WAY & JAME...|PALO ALTO| 94306| 94306|1623452414131| good|
+|2015-05-26 08:00:00|TRAFFIC/SUSPENDED...|WILKIE WAY & JAME...|PALO ALTO| 94306| 94306|1623452414131| good|
+|2015-05-26 10:30:00|TRAFFIC/MISC (TRA...|EL CAMINO REAL & ...|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 11:31:00|PENAL CODE/MISC (...| 400 Block ALMA ST|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 12:04:00| B&P/MISC (B&PMISC)| 700 Block URBAN LN|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 12:25:00|PENAL CODE/MISC (...| 500 Block HIGH ST|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 13:06:00|WARRANT/OTHER AGE...| 800 Block BRYANT ST|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 13:30:00|THEFT GRAND/BIKE/...|1 Block UNIVERSIT...|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 13:35:00|PENAL CODE/MISC (...| 800 Block BRYANT ST|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 14:30:00|F&W/BRANDISHING (...|2200 Block EL CAM...|PALO ALTO| "" | null |1623452414131| bad |
+|2015-05-26 14:43:00|ACCIDENT MINOR IN...|3300 Block BLOCK ...|PALO ALTO| 94306| 94306|1623452414131| good|
+|2015-05-26 15:22:00|THEFT PETTY/MISC ...| 300 Block POE ST|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 16:31:00| B&P/MISC (B&PMISC)|500 Block WAVERLE...|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 16:48:00|MUNI CODE/MISC (1...|200 Block UNIVERS...|PALO ALTO| 94301| 94301|1623452414131| good|
+|2015-05-26 16:48:00|MUNI CODE/MISC (1...|200 Block UNIVERS...|PALO ALTO| 94301| 94301|1623452414131| good|
++-------------------+--------------------+--------------------+---------+-----------+-------+-------------+--------+
+only showing top 20 rows
+ ```
+
+A new column `__status` has been added to the source data set that acted as input to this measure. The value of this
+column can be either `bad` or `good` which can be used to calculate the metrics/ separate data based on quality etc.
+
+_Note:_ This output is for `ConsoleSink`.
\ No newline at end of file
diff --git a/griffin-doc/measure/measure-configuration-guide/sparksql.md b/griffin-doc/measure/measure-configuration-guide/sparksql.md
new file mode 100644
index 0000000..d8ca39e
--- /dev/null
+++ b/griffin-doc/measure/measure-configuration-guide/sparksql.md
@@ -0,0 +1,227 @@
+<!--
+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.
+-->
+
+SparkSQL Measure - Configuration Guide
+=====================================
+
+### Introduction
+
+In some cases, the pre-defined dimensions/ measures may not enough to model a complete data quality definition. For such
+cases, Apache Griffin allows the definition of complex custom user-defined checks as SparkSQL queries.
+
+SparkSQL measure is like a pro mode that allows advanced users to configure complex custom checks that are not covered
+by other measures. These SparkSQL queries may contain clauses like `select`, `from`, `where`, `group-by`, `order-by`
+, `limit`, `join`, etc.
+
+### Configuration
+
+The SparkSQL measure can be configured as below,
+
+```json
+{
+ ...
+
+ "measures": [
+ {
+ "name": "spark_sql_measure",
+ "type": "sparkSQL",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": "SELECT t.*, sq.zip IS NULL AS __measure_spark_sql_measure FROM crime_report_source AS t LEFT OUTER JOIN (SELECT zipcode as zip, COUNT(DISTINCT city) AS city_count FROM crime_report_source GROUP BY zipcode having city_count = 1) as sq ON sq.zip=t.zipcode",
+ "bad.record.definition": "__measure_spark_sql_measure"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "spark_sql_metric",
+ "flatten": "map"
+ },
+ {
+ "type": "record",
+ "name": "spark_sql_records"
+ }
+ ]
+ }
+ ]
+
+ ...
+}
+ ```
+
+##### Key Parameters:
+
+| Name | Type | Description | Supported Values |
+|:--------|:---------|:---------------------------------------|:----------------------------------------------------------|
+| name | `String` | User-defined name of this measure | - |
+| type | `String` | Type of Measure | completeness, duplication, profiling, accuracy, sparksql, schemaConformance |
+| data.source | `String` | Name of data source on which this measure is applied | - |
+| config | `Object` | Configuration params of the measure | Depends on measure type ([see below](#example-config-object)) |
+| out | `List ` | Define output(s) of measure execution | [See below](#outputs) |
+
+##### Example `config` Object:
+
+`config` object for SparkSQL measure contains the following keys,
+
+- `expr`: The value for `expr` is a valid SparkSQL query string. This is a mandatory parameter
+
+- `bad.record.definition`: As the key suggests, its value defines what exactly would be considered as a bad record after
+ this query executes. For example, the output of the configured query above has the following schema,
+ ```
+ root
+ |-- date_time: timestamp (nullable = true)
+ |-- incident: string (nullable = true)
+ |-- address: string (nullable = true)
+ |-- city: string (nullable = true)
+ |-- zipcode: integer (nullable = true)
+ |-- __measure_spark_sql_measure: integer (nullable = false)
+ ```
+
+ In order to separate the good data from bad data, a `bad.record.definition` expression must be set. This expression
+ can be a SparkSQL like expression and must yield a column with boolean data type.
+
+ _Note:_ This expression describes the bad records, i.e. if `bad.record.definition` = `true` for a record, it is marked
+ as bad/ incomplete record.
+
+### Outputs
+
+SparkSQL measure supports the following two outputs,
+
+- Metrics
+- Records
+
+Users can choose to define any combination of these 2 outputs. For no outputs, skip this `out: [ ... ]` section from the
+measure configuration.
+
+#### Metrics Outputs
+
+To write metrics for SparkSQL measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "name": "spark_sql_metric",
+ "type": "metric"
+ }
+ ]
+
+ ...
+}
+ ```
+
+This will generate the metrics like below,
+
+```json
+{
+ "applicationId": "local-1623450429783",
+ "job_name": "Batch-All-Measures-Example",
+ "tmst": 1623450438754,
+ "measure_name": "spark_sql_measure",
+ "metrics": [
+ {
+ "metric_name": "total",
+ "metric_value": "4617"
+ },
+ {
+ "metric_name": "complete",
+ "metric_value": "1983"
+ },
+ {
+ "metric_name": "incomplete",
+ "metric_value": "2634"
+ }
+ ],
+ "measure_type": "SparkSQL",
+ "data_source": "crime_report_source"
+}
+```
+
+_Note:_ This output is similar to that of completeness measure as it produces the `total`, `complete` and `incomplete`
+metrics. For each record of the query resultant data set the `bad.record.definition` expression is evaluated, and the
+bad records are marked as incomplete records (`bad.record.definition` = `true`).
+
+#### Record Outputs
+
+To write records as output for SparkSQL measure, configure the measure with output section as below,
+
+```json
+{
+ ...
+
+ "out": [
+ {
+ "type": "record",
+ "name": "spark_sql_records"
+ }
+ ]
+
+ ...
+}
+ ```
+
+The above configuration will generate the records output like below,
+
+```
++-------------------+----------------------------------+-------------------------------+---------+-------+-------------+--------+
+|date_time |incident |address |city |zipcode|__tmst |__status|
++-------------------+----------------------------------+-------------------------------+---------+-------+-------------+--------+
+|2015-05-26 05:56:00|PENAL CODE/MISC (PENALMI) |3900 Block BLOCK EL CAMINO REAL|PALO ALTO|94306 |1619986534335|bad |
+|2015-05-26 05:56:00|DRUNK IN PUBLIC ADULT/MISC (647FA)|3900 Block BLOCK EL CAMINO REAL|PALO ALTO|94306 |1619986534335|bad |
+|2015-05-26 05:56:00|PENAL CODE/MISC (PENALMI) |3900 Block BLOCK EL CAMINO REAL|PALO ALTO|94306 |1619986534335|bad |
+|2015-05-26 05:56:00|PENAL CODE/MISC (PENALMI) |3900 Block BLOCK EL CAMINO REAL|PALO ALTO|94306 |1619986534335|bad |
+|2015-05-26 08:00:00|N&D/POSSESSION (11350) |WILKIE WAY & JAMES RD |PALO ALTO|94306 |1619986534335|bad |
+|2015-05-26 08:00:00|N&D/PARAPHERNALIA (11364) |WILKIE WAY & JAMES RD |PALO ALTO|94306 |1619986534335|bad |
+|2015-05-26 08:00:00|TRAFFIC/SUSPENDED LICENSE (14601) |WILKIE WAY & JAMES RD |PALO ALTO|94306 |1619986534335|bad |
+|2015-05-26 10:30:00|TRAFFIC/MISC (TRAFMISC) |EL CAMINO REAL & UNIVERSITY AV |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 11:31:00|PENAL CODE/MISC (PENALMI) |400 Block ALMA ST |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 12:04:00|B&P/MISC (B&PMISC) |700 Block URBAN LN |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 12:25:00|PENAL CODE/MISC (PENALMI) |500 Block HIGH ST |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 13:06:00|WARRANT/OTHER AGENCY (OWARRANT) |800 Block BRYANT ST |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 13:30:00|THEFT GRAND/BIKE/BIKE PARTS (487B)|1 Block UNIVERSITY AV |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 13:35:00|PENAL CODE/MISC (PENALMI) |800 Block BRYANT ST |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 14:30:00|F&W/BRANDISHING (417) |2200 Block EL CAMINO REAL |PALO ALTO|94306 |1619986534335|bad |
+|2015-05-26 14:43:00|ACCIDENT MINOR INJURY (1181) |3300 Block BLOCK EL CAMINO REAL|PALO ALTO|94306 |1619986534335|bad |
+|2015-05-26 15:22:00|THEFT PETTY/MISC (488M) |300 Block POE ST |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 16:31:00|B&P/MISC (B&PMISC) |500 Block WAVERLEY ST |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 16:48:00|MUNI CODE/MISC (1090MISC) |200 Block UNIVERSITY AV |PALO ALTO|94301 |1619986534335|good |
+|2015-05-26 16:48:00|MUNI CODE/MISC (1090MISC) |200 Block UNIVERSITY AV |PALO ALTO|94301 |1619986534335|good |
++-------------------+----------------------------------+-------------------------------+---------+-------+-------------+--------+
+only showing top 20 rows
+ ```
+
+A new column `__status` has been added to the original data set on which this measure was executed. The value of this
+column can be either `bad` or `good` which can be used to calculate the metrics/ separate data based on quality etc.
+These values for `__status` column are based on the value of user-defined key `bad.record.definition`.
+
+_Note:_ This output is for `ConsoleSink`.
+
+**Further Reading**
+
+Unlike the other measures, the record output of SparkSQL measure can be different from the source data set (in terms of
+schema and/ or content). This is because the output is dependent on a user-defined query. In the example described
+above, the query has been explicitly written in a way that the output and input data sets have the same schema.
+
+Users can do the same by explicitly defining a boolean column (like `bad.record.definition`) with
+alias `__measure_{measure_name}` directly in the SQL query and defining
+`bad.record.definition: "__measure_{measure_name}"` in the measure config.
+
+For example if the user-defined name of the measure is `spark_sql_measure`, the alias column name
+becomes `__measure_spark_sql_measure`.
\ No newline at end of file
diff --git a/measure/sbin/griffin-tool.sh b/measure/sbin/griffin-tool.sh
index bff5046..56e068d 100644
--- a/measure/sbin/griffin-tool.sh
+++ b/measure/sbin/griffin-tool.sh
@@ -26,7 +26,7 @@
echo "[ERROR] | $(date -u +"%D %T") UTC | $1"
}
-BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )"
+BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && cd .. && pwd)"
if [ ! $# -eq 2 ]; then
log_error "env file and dq file must be provided!"
@@ -34,14 +34,14 @@
fi
env_file=$1
-if [ ! -f "${env_file}" ];then
+if [ ! -f "${env_file}" ]; then
log_error "Not found env file: ${env_file}"
exit
fi
shift
dq_file=$1
-if [ ! -f "${dq_file}" ];then
+if [ ! -f "${dq_file}" ]; then
log_error "Not found dq file: ${dq_file}"
exit
fi
@@ -55,4 +55,4 @@
APP_CLASS="org.apache.griffin.measure.Application"
APP_JAR=$(ls ${BASEDIR}/lib/measure-*.jar)
-exec `which spark-submit` --class ${APP_CLASS} --jars ${LIB_JARS} ${APP_JAR} ${env_file} ${dq_file}
+exec $(which spark-submit) --class ${APP_CLASS} --jars ${LIB_JARS} ${APP_JAR} ${env_file} ${dq_file}
diff --git a/measure/src/main/resources/config-batch-all-measures.json b/measure/src/main/resources/config-batch-all-measures.json
new file mode 100644
index 0000000..520365e
--- /dev/null
+++ b/measure/src/main/resources/config-batch-all-measures.json
@@ -0,0 +1,164 @@
+{
+ "name": "Batch-All-Measures-Example",
+ "process.type": "batch",
+ "data.sources": [
+ {
+ "name": "crime_report_source",
+ "baseline": true,
+ "connector": {
+ "type": "file",
+ "config": {
+ "format": "text",
+ "paths": [
+ "measure/src/main/resources/crime_report.csv"
+ ]
+ },
+ "pre.proc": [
+ "select split(value, ',') as part from this",
+ "select part[0] as date_time, part[1] as incident, part[2] as address, part[3] as city, part[4] as zipcode_str from this",
+ "select cast(date_time as timestamp) as date_time, incident, address, city, zipcode_str, cast(zipcode_str as int) as zipcode from this"
+ ]
+ }
+ },
+ {
+ "name": "crime_report_truth",
+ "baseline": true,
+ "connector": {
+ "type": "file",
+ "config": {
+ "format": "csv",
+ "options": {
+ "header": "true"
+ },
+ "paths": [
+ "measure/src/main/resources/crime_report_truth.csv"
+ ]
+ }
+ }
+ }
+ ],
+ "measures": [
+ {
+ "name": "completeness_measure",
+ "type": "completeness",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": "zipcode is null OR city is null"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "comp_metric"
+ },
+ {
+ "type": "record",
+ "name": "comp_records"
+ }
+ ]
+ },
+ {
+ "name": "profiling_measure",
+ "type": "profiling",
+ "data.source": "crime_report_source",
+ "config": {
+ "approx.distinct.count": true,
+ "round.scale": 2,
+ "dataset.sample": 1.0
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "prof_metric"
+ }
+ ]
+ },
+ {
+ "name": "spark_sql_measure",
+ "type": "sparkSQL",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": "SELECT t.*, sq.zip IS NULL AS __measure_spark_sql_measure FROM crime_report_source AS t LEFT OUTER JOIN (SELECT zipcode as zip, COUNT(DISTINCT city) AS city_count FROM crime_report_source GROUP BY zipcode having city_count = 1) as sq ON sq.zip=t.zipcode",
+ "bad.record.definition": "__measure_spark_sql_measure"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "spark_sql_metric"
+ },
+ {
+ "type": "record",
+ "name": "spark_sql_records"
+ }
+ ]
+ },
+ {
+ "name": "duplication_measure",
+ "type": "duplication",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": "incident",
+ "bad.record.definition": "duplicate"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "duplication_metric"
+ },
+ {
+ "type": "record",
+ "name": "duplication_records"
+ }
+ ]
+ },
+ {
+ "name": "accuracy_measure",
+ "type": "accuracy",
+ "data.source": "crime_report_source",
+ "config": {
+ "ref.source": "crime_report_truth",
+ "expr": [
+ {
+ "source.col": "city",
+ "ref.col": "city_name"
+ }
+ ]
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "accuracy_metric"
+ },
+ {
+ "type": "record",
+ "name": "accuracy_records"
+ }
+ ]
+ },
+ {
+ "name": "schema_conformance_measure",
+ "type": "schemaConformance",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": [
+ {
+ "source.col": "zipcode_str",
+ "type": "int"
+ }
+ ]
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "schema_conformance_metric"
+ },
+ {
+ "type": "record",
+ "name": "schema_conformance_records"
+ }
+ ]
+ }
+ ],
+ "sinks": [
+ "consoleSink"
+ ]
+}
diff --git a/measure/src/main/resources/config-batch.json b/measure/src/main/resources/config-batch-old.json
similarity index 100%
rename from measure/src/main/resources/config-batch.json
rename to measure/src/main/resources/config-batch-old.json
diff --git a/measure/src/main/resources/config-batch-preproc.json b/measure/src/main/resources/config-batch-preproc.json
new file mode 100644
index 0000000..326d28b
--- /dev/null
+++ b/measure/src/main/resources/config-batch-preproc.json
@@ -0,0 +1,48 @@
+{
+ "name": "Batch-Preprocessing-Example",
+ "process.type": "batch",
+ "data.sources": [
+ {
+ "name": "crime_report_source",
+ "baseline": true,
+ "connector": {
+ "type": "file",
+ "config": {
+ "format": "text",
+ "paths": [
+ "measure/src/main/resources/crime_report.csv"
+ ]
+ },
+ "pre.proc": [
+ "select split(value, ',') as part from this",
+ "select part[0] as date_time, part[1] as incident, part[2] as address, part[3] as city, part[4] as zipcode from this",
+ "select cast(date_time as timestamp) as date_time, incident, address, city, cast(zipcode as int) as zipcode from this"
+ ]
+ }
+ }
+ ],
+ "measures": [
+ {
+ "name": "completeness_measure",
+ "type": "completeness",
+ "data.source": "crime_report_source",
+ "config": {
+ "expr": "zipcode is null OR city is null"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "comp_metric",
+ "flatten": "map"
+ },
+ {
+ "type": "record",
+ "name": "comp_records"
+ }
+ ]
+ }
+ ],
+ "sinks": [
+ "consoleSink"
+ ]
+}
diff --git a/measure/src/main/resources/crime_report.csv b/measure/src/main/resources/crime_report.csv
new file mode 100644
index 0000000..4fda3b5
--- /dev/null
+++ b/measure/src/main/resources/crime_report.csv
@@ -0,0 +1,4617 @@
+2015-05-26T00:26:00Z,PENAL CODE/MISC (PENALMI),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T00:26:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T00:26:00Z,PENAL CODE/MISC (PENALMI),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T00:26:00Z,PENAL CODE/MISC (PENALMI),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T02:30:00Z,N&D/POSSESSION (11350),WILKIE WAY & JAMES RD,PALO ALTO,94306
+2015-05-26T02:30:00Z,N&D/PARAPHERNALIA (11364),WILKIE WAY & JAMES RD,PALO ALTO,94306
+2015-05-26T02:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),WILKIE WAY & JAMES RD,PALO ALTO,94306
+2015-05-26T05:00:00Z,TRAFFIC/MISC (TRAFMISC),EL CAMINO REAL & UNIVERSITY AV,PALO ALTO,94301
+2015-05-26T06:01:00Z,PENAL CODE/MISC (PENALMI),400 Block ALMA ST,PALO ALTO,94301
+2015-05-26T06:34:00Z,B&P/MISC (B&PMISC),700 Block URBAN LN,PALO ALTO,94301
+2015-05-26T06:55:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-05-26T07:36:00Z,WARRANT/OTHER AGENCY (OWARRANT),800 Block BRYANT ST,PALO ALTO,94301
+2015-05-26T08:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-26T08:05:00Z,PENAL CODE/MISC (PENALMI),800 Block BRYANT ST,PALO ALTO,94301
+2015-05-26T09:00:00Z,F&W/BRANDISHING (417),2200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T09:13:00Z,ACCIDENT MINOR INJURY (1181),3300 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T09:52:00Z,THEFT PETTY/MISC (488M),300 Block POE ST,PALO ALTO,94301
+2015-05-26T11:01:00Z,B&P/MISC (B&PMISC),500 Block WAVERLEY ST,PALO ALTO,94301
+2015-05-26T11:18:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-26T11:18:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-26T13:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),LANE 11 WEST & EMERSON ST,PALO ALTO,94301
+2015-05-26T13:00:00Z,MISDEMEANOR/HIT & RUN (20002),LANE 11 WEST & EMERSON ST,PALO ALTO,94301
+2015-05-26T14:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),600 Block EMERSON ST,PALO ALTO,94301
+2015-05-26T14:00:00Z,THEFT PETTY/MISC (488M),300 Block EMERSON ST,PALO ALTO,94301
+2015-05-26T14:00:00Z,CREDIT CARDS/FRAUDULENT USE (484G),2800 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-05-26T14:45:00Z,F&W/DISPOSAL REQUEST (F&WDISPS),200 Block FOREST AV,PALO ALTO,94301
+2015-05-26T15:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-05-26T17:25:00Z,DRIVER'S LICENSE SUSPENDED/ALC (14601.2(A)VC),EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-05-26T17:25:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-05-26T18:10:00Z,BURGLARY/AUTO (459A),300 Block EMERSON ST,PALO ALTO,94301
+2015-05-26T19:00:00Z,BURGLARY/AUTO (459A),1900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T19:00:00Z,BURGLARY/AUTO (459A),1900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T19:30:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-05-26T19:30:00Z,BURGLARY/AUTO (459A),PARK AV & EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T19:45:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-05-26T19:45:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-05-26T20:00:00Z,BURGLARY/AUTO (459A),1900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T20:00:00Z,BURGLARY/AUTO (459A),1900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T20:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T22:10:00Z,BURGLARY/AUTO (459A),1900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T23:30:00Z,FOUND PROPERTY/MISC (FOUND),HAMILTON AV & WAVERLEY ST,PALO ALTO,94301
+2015-05-27T00:01:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-27T00:45:00Z,WARRANT/OTHER AGENCY (OWARRANT),EL CAMINO REAL & MARGARITA AV,PALO ALTO,94306
+2015-05-27T00:45:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & MARGARITA AV,PALO ALTO,94306
+2015-05-27T00:45:00Z,WARRANT/OTHER AGENCY (OWARRANT),EL CAMINO REAL & MARGARITA AV,PALO ALTO,94306
+2015-05-27T00:50:00Z,N&D/PARAPHERNALIA (11364),2700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-05-27T01:42:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & FRANCIS DR ST,PALO ALTO,94303
+2015-05-27T05:56:00Z,WARRANT/PALO ALTO (PWARRANT),400 Block BRYANT ST,PALO ALTO,94301
+2015-05-27T06:13:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-05-27T07:39:00Z,LOST PROPERTY/MISC (LOST),2300 Block BOWDOIN ST,PALO ALTO,94306
+2015-05-27T09:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),200 Block VENTURA AV,PALO ALTO,94306
+2015-05-27T09:13:00Z,LOST PROPERTY/MISC (LOST),600 Block EL CAMINO REAL,PALO ALTO,94301
+2015-05-27T10:15:00Z,BURGLARY/AUTO (459A),2100 Block W BAYSHORE RD,PALO ALTO,94303
+2015-05-27T10:15:00Z,BURGLARY/AUTO (459A),2100 Block W BAYSHORE RD,PALO ALTO,94303
+2015-05-27T10:15:00Z,BURGLARY/AUTO (459A),2100 Block W BAYSHORE RD,PALO ALTO,94303
+2015-05-27T12:12:00Z,B&P/MISC (B&PMISC),500 Block WAVERLEY ST,PALO ALTO,94301
+2015-05-27T12:23:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-27T12:26:00Z,B&P/MISC (B&PMISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-05-27T12:45:00Z,B&P/MISC (B&PMISC),1 Block ENCINA AV,PALO ALTO,94301
+2015-05-27T13:12:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-05-27T13:12:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-05-27T13:32:00Z,MUNI CODE/MISC (1090MISC),300 Block HOMER AV,PALO ALTO,94301
+2015-05-27T14:05:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block ARASTRADERO RD,PALO ALTO,94306
+2015-05-27T15:00:00Z,WARRANT/OTHER AGENCY (OWARRANT),1800 Block BLOCK ALMA ST,PALO ALTO,94301
+2015-05-27T15:00:00Z,WARRANT/OTHER AGENCY (OWARRANT),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-05-27T17:00:00Z,LOST PROPERTY/MISC (LOST),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-05-27T19:25:00Z,BURGLARY/AUTO (459A),1800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-27T19:30:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-05-27T20:00:00Z,LOST PROPERTY/MISC (LOST),400 Block EMERSON ST,PALO ALTO,94301
+2015-05-27T20:20:00Z,TRAFFIC/SUSPENDED LICENSE (14601),ELY PL & ALMA ST,PALO ALTO,94306
+2015-05-27T20:20:00Z,DUI ADULT/MISC (23152AM),ELY PL & ALMA ST,PALO ALTO,94306
+2015-05-27T21:00:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-05-27T21:09:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),500 Block EMERSON ST,PALO ALTO,94301
+2015-05-27T21:22:00Z,BURGLARY/AUTO (459A),2200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-27T21:26:00Z,BURGLARY/AUTO (459A),400 Block TASSO ST,PALO ALTO,94301
+2015-05-27T21:26:00Z,BURGLARY/AUTO (459A),400 Block TASSO ST,PALO ALTO,94301
+2015-05-27T23:36:00Z,DUI ADULT/MISC (23152AM),4300 Block BLOCK FOOTHILL EXPY,PALO ALTO,94304
+2015-05-28T00:01:00Z,IDENTITY THEFT/CREDIT CARDS (530C),3900 Block GROVE AV,PALO ALTO,94303
+2015-05-28T00:01:00Z,IDENTITY THEFT/INTERNET (530I),3900 Block GROVE AV,PALO ALTO,94303
+2015-05-28T00:01:00Z,IDENTITY THEFT/CREDIT CARDS (530C),3900 Block GROVE AV,PALO ALTO,94303
+2015-05-28T00:01:00Z,IDENTITY THEFT/INTERNET (530I),3900 Block GROVE AV,PALO ALTO,94303
+2015-05-28T03:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),400 Block FULTON ST,PALO ALTO,94301
+2015-05-28T06:05:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-05-28T06:05:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-05-28T06:50:00Z,B&P/MISC (B&PMISC),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-28T07:00:00Z,B&P/MISC (B&PMISC),ENCINA AV,PALO ALTO,94301
+2015-05-28T10:35:00Z,PENAL CODE/MISC (PENALMI),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-28T10:40:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),600 Block ARASTRADERO RD,PALO ALTO,94306
+2015-05-28T11:30:00Z,THEFT PETTY/MISC (488M),4200 Block PARK BLVD,PALO ALTO,94306
+2015-05-28T12:42:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY AV & EL CAMINO REAL,PALO ALTO,94301
+2015-05-28T12:48:00Z,PSYCH SUBJECT (5150),200 Block HAMILTON AV,PALO ALTO,94301
+2015-05-28T12:50:00Z,VEHICLE/IMPOUNDED (22651),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-05-28T13:10:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),200 Block CALIFORNIA AV,PALO ALTO,94301
+2015-05-28T13:55:00Z,PENAL CODE/TERRORIST THREATS (422),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-28T15:00:00Z,PSYCH SUBJECT (5150),300 Block VICTORIA PL,PALO ALTO,94306
+2015-05-29T12:00:00Z,IDENTITY THEFT/OUTSIDE INVEST (530OI),1200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-29T14:30:00Z,VEHICLE/STORED (22651T),200 Block EMERSON ST,PALO ALTO,94301
+2015-05-29T15:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block GREER RD,PALO ALTO,94303
+2015-05-29T15:10:00Z,TRAFFIC/SUSPENDED LICENSE (14601),3800 Block BLOCK W BAYSHORE RD,PALO ALTO,94303
+2015-05-29T16:00:00Z,IDENTITY THEFT/MISC. (530M),700 Block HOMER AV,PALO ALTO,94301
+2015-05-29T17:00:00Z,VANDALISM/MISDEMEANOR (594M),800 Block BRYANT ST,PALO ALTO,94301
+2015-05-29T17:30:00Z,PSYCH SUBJECT (5150),1900 Block BRYANT ST,PALO ALTO,94301
+2015-05-29T17:30:00Z,ELDER ABUSE/SELF NEGLECT (368SN),1900 Block BRYANT ST,PALO ALTO,94301
+2015-05-29T17:30:00Z,PSYCH SUBJECT (5150),1900 Block BRYANT ST,PALO ALTO,94301
+2015-05-29T19:00:00Z,VANDALISM/MISDEMEANOR (594M),3000 Block EMERSON ST,PALO ALTO,94306
+2015-05-29T19:09:00Z,ACCIDENT MINOR INJURY (1181),HAMILTON AV & ALMA ST,PALO ALTO,94301
+2015-05-29T20:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-29T20:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-29T21:30:00Z,BURGLARY/AUTO (459A),2500 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-29T21:30:00Z,BURGLARY/AUTO (459A),2500 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-29T22:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-29T22:30:00Z,N&D/PARAPHERNALIA (11364),300 Block PASTEUR DR,PALO ALTO,94304
+2015-05-29T22:30:00Z,N&D/POSSESS/TRANSPORT (11379),300 Block PASTEUR DR,PALO ALTO,94304
+2015-05-29T22:30:00Z,PSYCH SUBJECT (5150),300 Block PASTEUR DR,PALO ALTO,94304
+2015-05-29T22:30:00Z,WARRANT/PALO ALTO (PWARRANT),300 Block PASTEUR DR,PALO ALTO,94304
+2015-05-30T10:30:00Z,BURGLARY/AUTO (459A),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-30T12:19:00Z,DUI ADULT/MISC (23152AM),3200 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-05-30T13:29:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-30T13:58:00Z,SICK & CARED FOR/MISC (1053M),100 Block LOIS LN,PALO ALTO,94303
+2015-05-30T14:00:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-05-30T15:20:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-05-30T15:24:00Z,BURGLARY/AUTO (459A),400 Block E OKEEFE ST,"",94303
+2015-05-30T15:24:00Z,BURGLARY/AUTO (459A),400 Block E OKEEFE ST,"",94303
+2015-05-30T15:47:00Z,BURGLARY/AUTO (459A),2000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-30T15:47:00Z,CREDIT CARDS/FRAUDULENT USE (484G),2000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-30T15:47:00Z,BURGLARY/AUTO (459A),2000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-30T17:20:00Z,FOUND PROPERTY/MISC (FOUND),600 Block GUINDA ST,PALO ALTO,94301
+2015-05-30T19:30:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-05-30T20:45:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block MATADERO AV,PALO ALTO,94306
+2015-05-30T21:30:00Z,BURGLARY/AUTO (459A),4300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-05-30T22:06:00Z,WARRANT/OTHER AGENCY (OWARRANT),1500 Block BLOCK WALNUT ST,PALO ALTO,94303
+2015-05-31T01:57:00Z,THEFT PETTY ATT/FROM AUTO (488FAA),2000 Block EMERSON ST,PALO ALTO,94301
+2015-05-31T01:57:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),2000 Block EMERSON ST,PALO ALTO,94301
+2015-05-31T06:35:00Z,B&P/MISC (B&PMISC),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-05-31T13:00:00Z,THEFT PETTY/FROM AUTO (488FA),3500 Block LOUIS RD,PALO ALTO,94303
+2015-05-31T13:28:00Z,ACCIDENT MINOR INJURY (1181),SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2015-05-31T13:46:00Z,DUI ADULT/MISC (23152AM),300 Block WAVERLEY ST,PALO ALTO,94301
+2015-05-31T13:46:00Z,VEHICLE/MISC (VEHMISC),300 Block WAVERLEY ST,PALO ALTO,94301
+2015-05-31T13:50:00Z,LOST PROPERTY/MISC (LOST),1000 Block TANLAND DR,PALO ALTO,94303
+2015-05-31T14:00:00Z,BURGLARY/AUTO (459A),3500 Block LOUIS RD,PALO ALTO,94303
+2015-05-31T16:00:00Z,VANDALISM/MISDEMEANOR (594M),1 Block CRESCENT DR,PALO ALTO,94301
+2015-05-31T19:00:00Z,VEHICLE/TAMPERING (10852),100 Block CHURCHILL AV,PALO ALTO,94301
+2015-05-31T19:00:00Z,VEHICLE/TAMPERING (10852),100 Block CHURCHILL AV,PALO ALTO,94301
+2015-05-31T20:11:00Z,DRIVING WITH A SUSPENDED OR RE (14601.1(A)VC),QUARRY RD & ARBORETUM RD,PALO ALTO,94304
+2015-05-31T20:11:00Z,TRAFFIC/SUSPENDED LICENSE (14601),QUARRY RD & ARBORETUM RD,PALO ALTO,94304
+2015-05-31T21:19:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2000 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-05-31T21:43:00Z,DRIVING WITH A SUSPENDED OR RE (14601.1(A)VC),100 Block SAN ANTONIO RD,PALO ALTO,""
+2015-05-31T21:43:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block SAN ANTONIO RD,PALO ALTO,""
+2015-05-31T21:43:00Z,WARRANT/PALO ALTO (PWARRANT),100 Block SAN ANTONIO RD,PALO ALTO,""
+2015-05-31T22:55:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),1300 Block MARTIN AV,PALO ALTO,94301
+2015-05-31T22:55:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),1300 Block MARTIN AV,PALO ALTO,94301
+2015-06-01T00:00:00Z,LOST PROPERTY/MISC (LOST),3200 Block WAVERLEY ST,PALO ALTO,94306
+2015-06-01T00:44:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & QUARRY RD,PALO ALTO,94301
+2015-06-01T05:16:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block SAN ANTONIO AV,PALO ALTO,94306
+2015-06-01T07:51:00Z,VEHICLE/STOLEN (10851S),3300 Block HILLVIEW AV,PALO ALTO,94304
+2015-06-01T08:00:00Z,IDENTITY THEFT/MISC. (530M),500 Block CENTER DR,PALO ALTO,94301
+2015-06-01T09:07:00Z,VEHICLE/STOLEN (10851S),4200 Block BLOCK PARK BLVD,PALO ALTO,94306
+2015-06-01T09:50:00Z,VEHICLE/STOLEN (10851S),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-01T10:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),3100 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-01T10:30:00Z,BURGLARY/AUTO (459A),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-01T10:50:00Z,BURGLARY ATTEMPT/AUTO (459AA),300 Block LOWELL AV,PALO ALTO,94301
+2015-06-01T11:00:00Z,BURGLARY/AUTO (459A),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-01T11:00:00Z,ASSAULT WITH DEADLY WEAPON (245),1100 Block N RENGSTORFF AV,MOUNTAIN VIEW,""
+2015-06-01T11:00:00Z,BURGLARY/AUTO (459A),2000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-01T11:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1100 Block N RENGSTORFF AV,MOUNTAIN VIEW,""
+2015-06-01T11:00:00Z,PENAL CODE/RESISTING ARREST (148RA),1100 Block N RENGSTORFF AV,MOUNTAIN VIEW,""
+2015-06-01T11:00:00Z,BURGLARY/AUTO (459A),1100 Block N RENGSTORFF AV,MOUNTAIN VIEW,""
+2015-06-01T11:00:00Z,ASSAULT WITH DEADLY WEAPON (245),1100 Block N RENGSTORFF AV,MOUNTAIN VIEW,""
+2015-06-01T12:00:00Z,IDENTITY THEFT/MISC. (530M),300 Block CREEKSIDE DR,PALO ALTO,94306
+2015-06-01T12:00:00Z,PENAL CODE/TERRORIST THREATS (422),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-06-01T12:35:00Z,ACCIDENT PROPERTY DAMAGE (1182),2700 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-01T13:00:00Z,FOUND PROPERTY/MISC (FOUND),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-01T13:45:00Z,MISSING ADULT/MISC (1065A),300 Block PASTEUR DR,PALO ALTO,94304
+2015-06-01T14:40:00Z,B&P/MISC (B&PMISC),HOMER AV,PALO ALTO,94301
+2015-06-01T14:57:00Z,ACCIDENT MINOR INJURY (1181),EMBARCADERO RD,PALO ALTO,""
+2015-06-01T15:01:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-01T15:57:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block WEBSTER ST,PALO ALTO,94301
+2015-06-01T16:14:00Z,ACCIDENT PROPERTY DAMAGE (1182),2600 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-01T17:00:00Z,FOUND PROPERTY/MISC (FOUND),300 Block HOMER AV,PALO ALTO,94301
+2015-06-01T19:30:00Z,B&P/MISC (B&PMISC),700 Block URBAN LN,PALO ALTO,94301
+2015-06-01T19:55:00Z,B&P/MISC (B&PMISC),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-01T20:16:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block HAMILTON AV,PALO ALTO,94301
+2015-06-01T20:27:00Z,ACCIDENT MINOR INJURY (1181),800 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-06-02T01:23:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-02T01:37:00Z,WARRANT/OTHER AGENCY (OWARRANT),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-02T02:26:00Z,TRAFFIC/MISC (TRAFMISC),EL CAMINO REAL & PORTAGE AV,PALO ALTO,94306
+2015-06-02T06:02:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-02T08:33:00Z,B&P/MISC (B&PMISC),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-02T09:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block OREGON EXPY,PALO ALTO,94306
+2015-06-02T09:35:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),UNIVERSITY AV & ALMA ST,PALO ALTO,94301
+2015-06-02T09:50:00Z,ACCIDENT MINOR INJURY (1181),300 Block BRYANT ST,PALO ALTO,94301
+2015-06-02T10:25:00Z,FOUND PROPERTY/MISC (FOUND),300 Block EMERSON ST,PALO ALTO,94301
+2015-06-02T10:30:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),700 Block CEREZA DR,PALO ALTO,94306
+2015-06-02T10:30:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),700 Block CEREZA DR,PALO ALTO,94306
+2015-06-02T10:30:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),700 Block CEREZA DR,PALO ALTO,94306
+2015-06-02T10:42:00Z,B&P/MISC (B&PMISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-02T11:37:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-06-02T12:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),KIPLING ST & LYTTON AV,PALO ALTO,94301
+2015-06-02T13:59:00Z,ACCIDENT PROPERTY DAMAGE (1182),2300 Block BIRCH ST,PALO ALTO,94306
+2015-06-02T15:48:00Z,ACCIDENT MINOR INJURY (1181),ARASTRADERO RD,PALO ALTO,""
+2015-06-02T19:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block RAMONA ST,PALO ALTO,94301
+2015-06-02T20:25:00Z,ACCIDENT MINOR INJURY (1181),2600 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-02T20:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-06-02T20:50:00Z,TRAFFIC/MISC (TRAFMISC),EMBARCADERO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-06-02T22:34:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-02T22:34:00Z,WARRANT/OTHER AGENCY (OWARRANT),2900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-03T00:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),300 Block HOMER AV,PALO ALTO,94301
+2015-06-03T01:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3100 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-03T01:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3100 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-03T04:45:00Z,BURGLARY/COMMERCIAL (459C),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-03T07:59:00Z,ACCIDENT MINOR INJURY (1181),& ALMA ST,PALO ALTO,94301
+2015-06-03T08:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),3000 Block COWPER ST,PALO ALTO,94306
+2015-06-03T09:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),HANOVER ST & PAGE MILL RD,PALO ALTO,94304
+2015-06-03T09:49:00Z,VEHICLE/STORED (22651T),3900 Block PARK BLVD,PALO ALTO,94306
+2015-06-03T12:00:00Z,CREDIT CARDS/INTERNET FRAUD (484GI),3700 Block NATHAN WAY,PALO ALTO,94303
+2015-06-03T12:17:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block SHERMAN AV,PALO ALTO,94306
+2015-06-03T14:15:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3400 Block ALMA ST,PALO ALTO,94306
+2015-06-03T15:30:00Z,F&W/DISPOSAL REQUEST (F&WDISPS),200 Block FOREST AV,PALO ALTO,94301
+2015-06-03T15:40:00Z,ACCIDENT PROPERTY DAMAGE (1182),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-03T16:18:00Z,THEFT GRAND/SCAM (487SCAM),500 Block FOREST AV,PALO ALTO,94301
+2015-06-03T16:56:00Z,DISTURB PEACE/MISC (415),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-03T17:40:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-03T18:30:00Z,WARRANT/OTHER AGENCY (OWARRANT),600 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-03T19:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),KIPLING ST & LYTTON AV,PALO ALTO,94301
+2015-06-03T22:15:00Z,BURGLARY/AUTO (459A),2300 Block BIRCH ST,PALO ALTO,94306
+2015-06-04T00:31:00Z,N&D/POSSESSION (11350),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-06-04T00:31:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-06-04T00:31:00Z,PENAL CODE/MISC (PENALMI),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-06-04T00:36:00Z,MUNI CODE/MISC (1090MISC),400 Block MITCHELL LN,PALO ALTO,94301
+2015-06-04T01:00:00Z,PENAL CODE/DISOBEY COURT ORDER (66),2800 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-04T01:00:00Z,N&D/POSSESS/TRANSPORT (11379),2800 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-04T01:00:00Z,PENAL CODE/DISOBEY COURT ORDER (66),2800 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-04T06:30:00Z,PENAL CODE/MISC (PENALMI),200 Block HOMER AV,PALO ALTO,94301
+2015-06-04T06:45:00Z,TRAFFIC/MISC (TRAFMISC),COWPER ST & COLORADO AV,PALO ALTO,94306
+2015-06-04T07:30:00Z,BATTERY/SIMPLE (242SB),300 Block PASTEUR DR,PALO ALTO,94304
+2015-06-04T08:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block HOMER AV,PALO ALTO,94301
+2015-06-04T10:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block MELVILLE AV,PALO ALTO,94301
+2015-06-04T15:09:00Z,THEFT PETTY/MISC (488M),300 Block PASTEUR DR,PALO ALTO,94304
+2015-06-04T16:00:00Z,IDENTITY THEFT/MISC. (530M),1300 Block DANA AV,PALO ALTO,94301
+2015-06-04T16:00:00Z,IDENTITY THEFT/MISC. (530M),1300 Block DANA AV,PALO ALTO,94301
+2015-06-04T16:30:00Z,THEFT PETTY/FROM AUTO (488FA),600 Block BARRON AV,PALO ALTO,94306
+2015-06-04T17:10:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),3000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-04T19:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3000 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-04T19:31:00Z,MUNI CODE/MISC (1090MISC),400 Block LYTTON AV,PALO ALTO,94301
+2015-06-04T19:45:00Z,WARRANT/OTHER AGENCY (OWARRANT),400 Block LYTTON AV,PALO ALTO,94301
+2015-06-04T22:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),400 Block WEBSTER ST,PALO ALTO,94301
+2015-06-05T00:11:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block RAMONA ST,PALO ALTO,94301
+2015-06-05T07:15:00Z,PENAL CODE/TERRORIST THREATS (422),500 Block BRYANT ST,PALO ALTO,94301
+2015-06-05T08:48:00Z,MISDEMEANOR/HIT & RUN (20002),2700 Block SOUTH CT,PALO ALTO,94306
+2015-06-05T09:00:00Z,TRAFFIC/MISC (TRAFMISC),200 Block QUARRY RD,PALO ALTO,94304
+2015-06-05T09:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),600 Block COWPER ST,PALO ALTO,94301
+2015-06-05T09:54:00Z,N&D/MISC (N&DMISC),3400 Block MURDOCH DR,PALO ALTO,94306
+2015-06-05T10:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block OREGON EXPY,PALO ALTO,94303
+2015-06-05T13:42:00Z,TRAFFIC/MISC (TRAFMISC),HAMILTON AV & WAVERLEY ST,PALO ALTO,94301
+2015-06-05T14:10:00Z,ACCIDENT MINOR INJURY (1181),1500 Block BLOCK ARASTRADERO RD,PALO ALTO,94304
+2015-06-05T15:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),400 Block PORTAGE AV,PALO ALTO,94306
+2015-06-05T15:25:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-05T16:00:00Z,THEFT GRAND/MISC (487M),300 Block GRANT AV,PALO ALTO,94306
+2015-06-05T16:15:00Z,N&D/UNDER INFLUENCE (11550),500 Block HILBAR LN,PALO ALTO,94303
+2015-06-05T16:15:00Z,N&D/UNDER INFLUENCE (11550),500 Block HILBAR LN,PALO ALTO,94303
+2015-06-05T16:15:00Z,POSSESS STOLEN PROP/MISC (496),500 Block HILBAR LN,PALO ALTO,94303
+2015-06-05T16:15:00Z,PROWLER/MISC (647G),500 Block HILBAR LN,PALO ALTO,94303
+2015-06-05T17:00:00Z,POSSESS STOLEN PROP/MISC (496),500 Block HILBAR LN,PALO ALTO,94303
+2015-06-05T17:00:00Z,PROWLER/MISC (647G),500 Block HILBAR LN,PALO ALTO,94303
+2015-06-05T19:00:00Z,THEFT GRAND/PERSON (487P),1800 Block SAND HILL RD,PALO ALTO,94304
+2015-06-05T19:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),900 Block OREGON EXPY,PALO ALTO,94303
+2015-06-05T19:21:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2100 Block FRANCIS DR ST,PALO ALTO,94303
+2015-06-05T21:30:00Z,THEFT PETTY/AUTO ACCESSORY (488A),3400 Block JANICE WAY,PALO ALTO,94303
+2015-06-06T00:36:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-06T05:22:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-06-06T09:19:00Z,PENAL CODE/DISOBEY COURT ORDER (66),500 Block RAMONA ST,PALO ALTO,94301
+2015-06-06T12:30:00Z,IDENTITY THEFT/CREDIT CARDS (530C),2200 Block SANTA ANA ST,PALO ALTO,94303
+2015-06-06T14:58:00Z,IDENTITY THEFT/MISC. (530M),3400 Block CORK OAK WAY,PALO ALTO,94303
+2015-06-06T15:53:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block EL CAMINO REAL,PALO ALTO,""
+2015-06-06T20:10:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),900 Block PARADISE WAY,PALO ALTO,94306
+2015-06-07T00:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),EMBARCADERO RD & EL CAMINO REAL,PALO ALTO,94306
+2015-06-07T01:44:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-07T03:00:00Z,FOUND PROPERTY/MISC (FOUND),500 Block HIGH ST,PALO ALTO,94301
+2015-06-07T03:54:00Z,N&D/UNDER INFLUENCE (11550),3500 Block ALMA VILLAGE CIR,PALO ALTO,94306
+2015-06-07T09:30:00Z,TRAFFIC/MISC (TRAFMISC),WAVERLEY ST & UNIVERSITY AV,PALO ALTO,94301
+2015-06-07T09:59:00Z,TRAFFIC/MISC (TRAFMISC),2300 Block UNIVERSITY AV,"",94303
+2015-06-07T12:15:00Z,BICYCLE/ABANDONED (ABANBIKE),1500 Block HAMILTON AV,PALO ALTO,94303
+2015-06-07T13:22:00Z,TRAFFIC/MISC (TRAFMISC),EDGEWOOD DR & NEWELL RD,PALO ALTO,94303
+2015-06-07T13:51:00Z,ACCIDENT PROPERTY DAMAGE (1182),EL CAMINO REAL & SAND HILL RD,PALO ALTO,94304
+2015-06-07T15:00:00Z,VANDALISM/FELONY (594F),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-06-07T15:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),100 Block BRYANT ST,PALO ALTO,94301
+2015-06-07T15:00:00Z,VANDALISM/FELONY (594F),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-06-07T17:00:00Z,VANDALISM/FELONY (594F),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-07T18:28:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block FOREST AV,PALO ALTO,94301
+2015-06-07T18:33:00Z,BATTERY/SIMPLE (242SB),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-07T18:33:00Z,BURGLARY/COMMERCIAL (459C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-07T18:33:00Z,PENAL CODE/POSSESS BURG TOOLS (466),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-07T20:16:00Z,BICYCLE/ABANDONED (ABANBIKE),3500 Block EMERSON ST,PALO ALTO,94306
+2015-06-07T20:16:00Z,VEHICLE/ABANDONED (1124),3500 Block EMERSON ST,PALO ALTO,94306
+2015-06-07T21:00:00Z,VANDALISM/MISDEMEANOR (594M),300 Block GUINDA ST,PALO ALTO,94301
+2015-06-07T21:30:00Z,VANDALISM/MISDEMEANOR (594M),700 Block LYTTON AV,PALO ALTO,94301
+2015-06-07T22:25:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T03:16:00Z,VEHICLE/RECOVERED (10851R),E MEADOW DR & E MEADOW CIR,PALO ALTO,94303
+2015-06-08T03:16:00Z,VEHICLE/RECOVERED (10851R),E MEADOW DR & E MEADOW CIR,PALO ALTO,94303
+2015-06-08T04:01:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),4000 Block BEN LOMOND DR,PALO ALTO,94306
+2015-06-08T07:45:00Z,VEHICLE/STORED (22651T),1400 Block EDGEWOOD DR,PALO ALTO,94301
+2015-06-08T08:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),BRYANT ST & CHANNING AV,PALO ALTO,94301
+2015-06-08T09:03:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),LYTTON AV & WAVERLEY ST,PALO ALTO,94301
+2015-06-08T09:30:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-08T09:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-08T09:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-08T10:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T10:05:00Z,ACCIDENT PROPERTY DAMAGE (1182),900 Block OREGON EXPY,PALO ALTO,94303
+2015-06-08T11:15:00Z,TRAFFIC/SUSPENDED LICENSE (14601),HAMILTON AV & RAMONA ST,PALO ALTO,94301
+2015-06-08T11:15:00Z,WARRANT/PALO ALTO (PWARRANT),HAMILTON AV & RAMONA ST,PALO ALTO,94301
+2015-06-08T11:25:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-08T12:10:00Z,ACCIDENT PROPERTY DAMAGE (1182),WAVERLEY ST & HAMILTON AV,PALO ALTO,94301
+2015-06-08T12:30:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-08T12:30:00Z,BURGLARY/RESIDENTIAL (459R),400 Block MARGARITA AV,PALO ALTO,94306
+2015-06-08T12:30:00Z,BURGLARY/RESIDENTIAL (459R),400 Block MARGARITA AV,PALO ALTO,94306
+2015-06-08T12:30:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-08T12:30:00Z,BURGLARY/COMMERCIAL (459C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-08T12:30:00Z,POSSESS STOLEN PROP/MISC (496),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-08T12:30:00Z,IDENTITY THEFT/CREDIT CARDS (530C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-08T14:06:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T14:08:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T14:08:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T15:03:00Z,THEFT GRAND/SHOPLIFT (487S),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T15:57:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3000 Block ALMA ST,PALO ALTO,94306
+2015-06-08T16:00:00Z,BURGLARY/RESIDENTIAL (459R),4300 Block SILVA AV,PALO ALTO,94306
+2015-06-08T16:01:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T18:50:00Z,BURGLARY/SHOPLIFT (459S),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T18:50:00Z,BURGLARY/SHOPLIFT (459S),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T19:00:00Z,PSYCH SUBJECT (5150),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-08T19:45:00Z,BURGLARY/AUTO (459A),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-08T19:45:00Z,BURGLARY/AUTO (459A),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-08T19:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LYTTON AV & WAVERLEY ST,PALO ALTO,94301
+2015-06-09T00:17:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MACKAY DR & SAN ANTONIO RD,PALO ALTO,94306
+2015-06-09T02:29:00Z,N&D/PARAPHERNALIA (11364),600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-06-09T02:29:00Z,N&D/POSSESS/TRANSPORT (11379),600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-06-09T02:29:00Z,PENAL CODE/RESISTING ARREST (148RA),600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-06-09T02:29:00Z,PENAL CODE/MISC (PENALMI),600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-06-09T07:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),OREGON EXPY & ALMA ST,PALO ALTO,94301
+2015-06-09T07:52:00Z,ROBBERY/ARMED (211A),900 Block HAMILTON AV,PALO ALTO,94301
+2015-06-09T07:52:00Z,BURGLARY/RESIDENTIAL (459R),900 Block HAMILTON AV,PALO ALTO,94301
+2015-06-09T10:00:00Z,IDENTITY THEFT/MISC. (530M),1500 Block HAMILTON AV,PALO ALTO,94303
+2015-06-09T10:00:00Z,ELDER ABUSE/FINANCIAL (368EF),1500 Block HAMILTON AV,PALO ALTO,94303
+2015-06-09T10:00:00Z,IDENTITY THEFT/MISC. (530M),1500 Block HAMILTON AV,PALO ALTO,94303
+2015-06-09T10:15:00Z,THEFT PETTY/MISC (488M),300 Block ADDISON AV,PALO ALTO,94301
+2015-06-09T12:00:00Z,THEFT PETTY/MISC (488M),1000 Block PARKINSON AV,PALO ALTO,94301
+2015-06-09T12:14:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-09T12:44:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-09T14:13:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-09T14:38:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),1800 Block PARK BLVD,PALO ALTO,94306
+2015-06-09T15:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),2300 Block HIGH ST,PALO ALTO,94301
+2015-06-09T15:04:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),2300 Block HIGH ST,PALO ALTO,94301
+2015-06-09T15:36:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-09T15:43:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-09T16:00:00Z,MISDEMEANOR/HIT & RUN (20002),1000 Block BLOCK SAN ANTONIO RD,PALO ALTO,94303
+2015-06-09T16:30:00Z,BURGLARY/COMMERCIAL (459C),1500 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-09T19:00:00Z,VEHICLE/STOLEN (10851S),600 Block OREGON AV,PALO ALTO,94301
+2015-06-09T19:07:00Z,IDENTITY THEFT/CREDIT CARDS (530C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-09T19:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-09T19:48:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-09T20:26:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-09T20:30:00Z,VANDALISM/FELONY (594F),2700 Block MIDTOWN CT,PALO ALTO,94303
+2015-06-09T21:00:00Z,BURGLARY/COMMERCIAL (459C),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-09T21:00:00Z,VANDALISM/MISDEMEANOR (594M),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-09T21:42:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),UNIVERSITY AV & SENECA ST,PALO ALTO,94301
+2015-06-09T23:05:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block HIGH ST,PALO ALTO,94301
+2015-06-10T00:10:00Z,MUNI CODE/MISC (1090MISC),400 Block MITCHELL LN,PALO ALTO,94301
+2015-06-10T03:10:00Z,VEHICLE/STORED (22651T),100 Block MONROE DR,PALO ALTO,94306
+2015-06-10T03:39:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),DEL MEDIO AV & EL CAMINO REAL,MOUNTAIN VIEW,""
+2015-06-10T09:00:00Z,N&D/POSSESS/SALES (11378),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-10T09:00:00Z,PENAL CODE/TRESPASS (602),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-10T09:00:00Z,PENAL CODE/MISC (PENALMI),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-10T09:20:00Z,PENAL CODE/TRESPASS (602),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-10T10:25:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3300 Block ALMA ST,PALO ALTO,94306
+2015-06-10T10:57:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1800 Block SAND HILL RD,PALO ALTO,94304
+2015-06-10T12:25:00Z,THEFT PETTY/AUTO ACCESSORY (488A),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-10T12:25:00Z,THEFT PETTY/FROM AUTO (488FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-10T12:26:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-10T12:56:00Z,PENAL CODE/DISOBEY COURT ORDER (66),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-10T14:28:00Z,BURGLARY/RESIDENTIAL (459R),3900 Block ALMA ST,PALO ALTO,94306
+2015-06-10T14:28:00Z,BURGLARY/RESIDENTIAL (459R),3900 Block ALMA ST,PALO ALTO,94306
+2015-06-10T15:56:00Z,THEFT PETTY/MISC (488M),2400 Block W BAYSHORE RD,PALO ALTO,94303
+2015-06-10T15:56:00Z,THEFT PETTY/MISC (488M),2400 Block W BAYSHORE RD,PALO ALTO,94303
+2015-06-10T23:59:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1700 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-06-11T00:35:00Z,BATTERY/SIMPLE (242SB),3100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-11T00:35:00Z,F&W/BRANDISHING (417),3100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-11T00:35:00Z,PENAL CODE/TERRORIST THREATS (422),3100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-11T00:35:00Z,PENAL CODE/DISOBEY COURT ORDER (66),3100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-11T03:25:00Z,TRAFFIC/MISC (TRAFMISC),LINCOLN AV & UNIVERSITY AV,PALO ALTO,94301
+2015-06-11T05:56:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-06-11T05:56:00Z,WARRANT/PALO ALTO (PWARRANT),500 Block HIGH ST,PALO ALTO,94301
+2015-06-11T06:30:00Z,THEFT GRAND/MISC (487M),3700 Block LINDERO DR,PALO ALTO,94306
+2015-06-11T06:30:00Z,VANDALISM/MISDEMEANOR (594M),3000 Block HANOVER ST,PALO ALTO,94304
+2015-06-11T06:31:00Z,ACCIDENT PROPERTY DAMAGE (1182),31000 Block PAGE MILL RD,PALO ALTO,""
+2015-06-11T06:35:00Z,PENAL CODE/MISC (PENALMI),HOMER AV,PALO ALTO,94301
+2015-06-11T07:00:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-11T10:45:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-11T11:22:00Z,LOST PROPERTY/MISC (LOST),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-11T11:22:00Z,LOST PROPERTY/MISC (LOST),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-11T11:43:00Z,ACCIDENT PROPERTY DAMAGE (1182),CAMBRIDGE AV & BIRCH ST,PALO ALTO,94306
+2015-06-11T12:00:00Z,CHECKS/MISC (475M),1800 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-11T13:36:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),900 Block ALMA ST,PALO ALTO,94301
+2015-06-11T13:36:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),900 Block ALMA ST,PALO ALTO,94301
+2015-06-11T15:10:00Z,ACCIDENT MINOR INJURY (1181),3200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-11T17:10:00Z,ACCIDENT MINOR INJURY (1181),1100 Block BLOCK UNIVERSITY AV,PALO ALTO,94301
+2015-06-11T18:16:00Z,PENAL CODE/MISC (PENALMI),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-11T19:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LYTTON AV & KIPLING ST,PALO ALTO,94301
+2015-06-11T19:25:00Z,WARRANT/OTHER AGENCY (OWARRANT),LYTTON AV & ALMA ST,PALO ALTO,94301
+2015-06-11T21:32:00Z,TRAFFIC/SUSPENDED LICENSE (14601),SAN ANTONIO RD & NITA AV,PALO ALTO,94306
+2015-06-11T22:00:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-12T00:00:00Z,RESTRAINING ORDER (RESTRAIN),200 Block FOREST AV,PALO ALTO,94301
+2015-06-12T00:55:00Z,WARRANT/OTHER AGENCY (OWARRANT),LYTTON AV & EMERSON ST,PALO ALTO,94301
+2015-06-12T01:59:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),600 Block BLOCK HAWTHORNE AV,PALO ALTO,94301
+2015-06-12T02:06:00Z,TRAFFIC/SUSPENDED LICENSE (14601),COLORADO AV & COWPER ST,PALO ALTO,94306
+2015-06-12T05:21:00Z,FOUND PROPERTY/MISC (FOUND),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-12T08:00:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),600 Block TYRELLA AVE,MOUNTAIN VIEW,""
+2015-06-12T10:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-06-12T15:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),4300 Block EL CAMINO REAL,PALO ALTO,""
+2015-06-12T16:00:00Z,BURGLARY/COMMERCIAL (459C),2400 Block EMBARCADERO WAY,PALO ALTO,94303
+2015-06-12T17:00:00Z,THEFT PETTY/MISC (488M),2400 Block EMBARCADERO WAY,PALO ALTO,94303
+2015-06-12T19:00:00Z,ROBBERY/STRONG ARM (211SA),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-12T21:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-06-12T21:05:00Z,ACCIDENT MINOR INJURY (1181),2000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-12T21:36:00Z,MUNI CODE/MISC (1090MISC),URBAN LN & UNIVERSITY AV,PALO ALTO,94301
+2015-06-12T21:55:00Z,PROWLER/MISC (647G),300 Block OLIVE AV,PALO ALTO,94306
+2015-06-13T02:17:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-13T08:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-13T08:37:00Z,TRAFFIC/SUSPENDED LICENSE (14601),NEWELL RD & EDGEWOOD DR,PALO ALTO,94303
+2015-06-13T09:19:00Z,ACCIDENT MINOR INJURY (1181),3700 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94303
+2015-06-13T10:30:00Z,B&P/MISC (B&PMISC),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-13T12:46:00Z,ACCIDENT PROPERTY DAMAGE (1182),SAND HILL RD,PALO ALTO,""
+2015-06-13T12:46:00Z,TRAFFIC/MISC (TRAFMISC),SAND HILL RD,PALO ALTO,""
+2015-06-13T12:54:00Z,WARRANT/OTHER AGENCY (OWARRANT),100 Block MONROE DR,PALO ALTO,94306
+2015-06-13T13:35:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),100 Block PARK AV,PALO ALTO,94306
+2015-06-13T14:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-06-13T16:00:00Z,LOST PROPERTY/MISC (LOST),300 Block COLLEGE AV,PALO ALTO,94306
+2015-06-13T16:45:00Z,VANDALISM/MISDEMEANOR (594M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-13T16:54:00Z,TRAFFIC/MISC (TRAFMISC),LOMA VERDE AV & ALMA ST,PALO ALTO,94306
+2015-06-13T20:10:00Z,TRAFFIC/SUSPENDED LICENSE (14601),900 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-13T21:11:00Z,ACCIDENT PROPERTY DAMAGE (1182),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-13T22:10:00Z,B&P/MISC (B&PMISC),EL CAMINO REAL & PALO ALTO AV,PALO ALTO,94301
+2015-06-14T01:10:00Z,DUI ADULT/MISC (23152AM),HIGH ST & CHANNING AV,PALO ALTO,94301
+2015-06-14T01:35:00Z,PENAL CODE/MISC (PENALMI),3000 Block COWPER ST,PALO ALTO,94306
+2015-06-14T01:35:00Z,WARRANT/PALO ALTO (PWARRANT),3000 Block COWPER ST,PALO ALTO,94306
+2015-06-14T01:40:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),CARMEL DR & OREGON AV,PALO ALTO,94303
+2015-06-14T02:00:00Z,VEHICLE/STORED (22651T),3000 Block COWPER ST,PALO ALTO,94306
+2015-06-14T02:56:00Z,F&W/MISC (F&WMISC),EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-06-14T03:07:00Z,DUI ADULT/MISC (23152AM),HAMILTON AV & EMERSON ST,PALO ALTO,94301
+2015-06-14T08:31:00Z,WARRANT/OTHER AGENCY (OWARRANT),2700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-14T11:00:00Z,THEFT PETTY/MISC (488M),2800 Block W BAYSHORE RD,PALO ALTO,94303
+2015-06-14T12:00:00Z,THEFT PETTY/MISC (488M),CALIFORNIA AV & ASH ST,PALO ALTO,94306
+2015-06-14T12:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),1400 Block WEBSTER ST,PALO ALTO,94301
+2015-06-14T12:30:00Z,BURGLARY/AUTO (459A),1000 Block AMARILLO AV,PALO ALTO,94303
+2015-06-14T13:00:00Z,LOST PROPERTY/MISC (LOST),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-14T13:37:00Z,VEHICLE/STORED (22651T),600 Block ALGER DR,PALO ALTO,94306
+2015-06-14T17:48:00Z,TRAFFIC/MISC (TRAFMISC),EMERSON ST & LYTTON AV,PALO ALTO,94301
+2015-06-14T18:00:00Z,BURGLARY/AUTO (459A),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-14T18:15:00Z,TRAFFIC/MISC (TRAFMISC),HIGH ST & UNIVERSITY AV,PALO ALTO,94301
+2015-06-14T19:00:00Z,BURGLARY/AUTO (459A),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-14T19:00:00Z,BURGLARY/AUTO (459A),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-14T19:46:00Z,BURGLARY/AUTO (459A),200 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-06-14T20:04:00Z,FOUND PROPERTY/MISC (FOUND),HAWTHORNE AV & WEBSTER ST,PALO ALTO,94301
+2015-06-14T20:15:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-15T01:44:00Z,TRAFFIC/SUSPENDED LICENSE (14601),800 Block OREGON AV,PALO ALTO,94303
+2015-06-15T09:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),3400 Block ROSS RD,PALO ALTO,94303
+2015-06-15T09:38:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block SHERIDAN AV,PALO ALTO,94306
+2015-06-15T10:02:00Z,ACCIDENT MINOR INJURY (1181),PLUM LN & SAND HILL RD,PALO ALTO,94304
+2015-06-15T12:30:00Z,TRAFFIC/MISC (TRAFMISC),COLORADO AV & ROSS RD,PALO ALTO,94303
+2015-06-15T13:28:00Z,TRAFFIC/SUSPENDED LICENSE (14601),COLORADO AV & ROSS RD,PALO ALTO,94303
+2015-06-15T14:03:00Z,WARRANT/OTHER AGENCY (OWARRANT),800 Block COLORADO AV,PALO ALTO,94303
+2015-06-15T14:55:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block LYTTON AV,PALO ALTO,94301
+2015-06-15T15:11:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-15T15:36:00Z,TRAFFIC/SUSPENDED LICENSE (14601),DINAHS CT & EL CAMINO REAL,PALO ALTO,94306
+2015-06-15T16:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-15T17:07:00Z,VEHICLE/STORED (22651T),E MEADOW DR & EMERSON ST,PALO ALTO,94306
+2015-06-15T18:05:00Z,B&P/MISC (B&PMISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-15T18:30:00Z,N&D/POSSESSION (11350),E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-06-15T18:35:00Z,N&D/POSSESSION (11350),E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-06-15T20:20:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-15T20:25:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),2400 Block PARK BLVD,PALO ALTO,94306
+2015-06-15T20:52:00Z,DUI ADULT/ACCIDENT (23152AA),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-15T23:19:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & MORTON ST,PALO ALTO,94303
+2015-06-16T00:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),EMBARCADERO RD & ALMA ST,PALO ALTO,94301
+2015-06-16T02:30:00Z,N&D/PARAPHERNALIA (11364),1100 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-16T06:02:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-16T06:28:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-06-16T06:28:00Z,WARRANT/PALO ALTO (PWARRANT),500 Block HIGH ST,PALO ALTO,94301
+2015-06-16T06:45:00Z,B&P/MISC (B&PMISC),ENCINA AV,PALO ALTO,94301
+2015-06-16T06:52:00Z,B&P/MISC (B&PMISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-16T08:12:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-16T08:41:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),3900 Block FABIAN WAY,PALO ALTO,94303
+2015-06-16T09:00:00Z,BATTERY/SIMPLE (242SB),1100 Block WELCH RD,PALO ALTO,94304
+2015-06-16T09:27:00Z,TRAFFIC/SUSPENDED LICENSE (14601),NEWELL RD & DANA AV,PALO ALTO,94301
+2015-06-16T10:00:00Z,LOST PROPERTY/MISC (LOST),3900 Block FABIAN WAY,PALO ALTO,94303
+2015-06-16T10:30:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-16T10:31:00Z,VEHICLE/STORED (22651T),4200 Block MCKELLAR LN,PALO ALTO,94306
+2015-06-16T10:32:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-16T10:38:00Z,ACCIDENT MINOR INJURY (1181),1100 Block BLOCK UNIVERSITY AV,PALO ALTO,94301
+2015-06-16T10:40:00Z,PENAL CODE/MISC (PENALMI),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-16T11:37:00Z,INTERNET/HACKING (INT-H),200 Block FOREST AV,PALO ALTO,94301
+2015-06-16T12:10:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-06-16T15:00:00Z,THEFT GRAND/MISC (487M),400 Block EMBARCADERO RD,PALO ALTO,94301
+2015-06-16T16:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block PAGE MILL RD,PALO ALTO,94306
+2015-06-16T18:03:00Z,ACCIDENT PROPERTY DAMAGE (1182),2700 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-16T20:41:00Z,WARRANT/OTHER AGENCY (OWARRANT),UNIVERSITY AVE & HWY 101,"",94303
+2015-06-16T21:50:00Z,PSYCH SUBJECT (5150),1 Block CHURCHILL AV,PALO ALTO,94306
+2015-06-17T03:38:00Z,BURGLARY/COMMERCIAL (459C),200 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-06-17T05:00:00Z,BURGLARY/COMMERCIAL (459C),400 Block EMERSON ST,PALO ALTO,94301
+2015-06-17T08:39:00Z,ACCIDENT PROPERTY DAMAGE (1182),1000 Block GUINDA ST,PALO ALTO,94301
+2015-06-17T09:56:00Z,ACCIDENT PROPERTY DAMAGE (1182),2600 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-17T10:32:00Z,ACCIDENT PROPERTY DAMAGE (1182),200 Block HAMILTON AV,PALO ALTO,94301
+2015-06-17T10:35:00Z,SEX CRIME/INDECENT EXPOSURE (314),500 Block HALE ST,PALO ALTO,94301
+2015-06-17T10:57:00Z,CREDIT CARDS/FRAUDULENT USE (484G),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-17T12:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-17T12:07:00Z,ACCIDENT MINOR INJURY (1181),500 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-17T12:30:00Z,CREDIT CARDS/FRAUDULENT USE (484G),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-17T14:20:00Z,B&P/MISC (B&PMISC),400 Block LYTTON AV,PALO ALTO,94301
+2015-06-17T14:30:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-17T15:26:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-17T15:50:00Z,ACCIDENT MINOR INJURY (1181),2400 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-17T16:00:00Z,B&P/MISC (B&PMISC),500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-17T16:08:00Z,WARRANT/OTHER AGENCY (OWARRANT),EL CAMINO REAL & MEDICAL FOUNDATION WAY,PALO ALTO,94301
+2015-06-17T16:15:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),400 Block STIERLIN RD,MOUNTAIN VIEW,""
+2015-06-17T17:00:00Z,LOST PROPERTY/MISC (LOST),800 Block CENTER DR,PALO ALTO,94301
+2015-06-17T17:15:00Z,PSYCH SUBJECT (5150),200 Block QUARRY RD,PALO ALTO,94304
+2015-06-17T18:53:00Z,WARRANT/OTHER AGENCY (OWARRANT),STANFORD AV & WILLIAMS ST,PALO ALTO,94306
+2015-06-17T18:53:00Z,ACCIDENT PROPERTY DAMAGE (1182),STANFORD AV & WILLIAMS ST,PALO ALTO,94306
+2015-06-17T18:53:00Z,DUI ADULT/ACCIDENT (23152AA),STANFORD AV & WILLIAMS ST,PALO ALTO,94306
+2015-06-17T19:00:00Z,FOUND PROPERTY/MISC (FOUND),200 Block FOREST AV,PALO ALTO,94301
+2015-06-17T19:40:00Z,N&D/POSSESSION (11350),700 Block STANFORD AV,PALO ALTO,""
+2015-06-17T23:20:00Z,TRAFFIC/MISC (TRAFMISC),SAN ANTONIO RD & HWY 101,PALO ALTO,94303
+2015-06-18T08:00:00Z,IDENTITY THEFT/MISC. (530M),2100 Block AMHERST ST,PALO ALTO,94306
+2015-06-18T09:44:00Z,THEFT PETTY/MISC (488M),100 Block EMBARCADERO RD,PALO ALTO,94301
+2015-06-18T10:10:00Z,ACCIDENT MINOR INJURY (1181),CENTRAL EXPY,MOUNTAIN VIEW,""
+2015-06-18T10:41:00Z,ACCIDENT PROPERTY DAMAGE (1182),200 Block PASTEUR DR,PALO ALTO,94304
+2015-06-18T12:00:00Z,IDENTITY THEFT/MISC. (530M),200 Block FOREST AV,PALO ALTO,94301
+2015-06-18T12:41:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & BRYANT ST,PALO ALTO,94301
+2015-06-18T13:10:00Z,CREDIT CARDS/FRAUDULENT USE (484G),2900 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-18T13:10:00Z,CREDIT CARDS/POSSESS STOLEN (484EB),2900 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-18T13:10:00Z,CREDIT CARDS/FRAUDULENT USE (484G),2900 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-18T13:10:00Z,THEFT PETTY/MISC (488M),2900 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-18T13:22:00Z,ACCIDENT PROPERTY DAMAGE (1182),900 Block EL CAMINO REAL,PALO ALTO,""
+2015-06-18T14:18:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-18T15:18:00Z,TRAFFIC/SUSPENDED LICENSE (14601),500 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-18T15:44:00Z,TRAFFIC/SUSPENDED LICENSE (14601),FOREST AV & CENTER DR,PALO ALTO,94301
+2015-06-18T15:46:00Z,ACCIDENT PROPERTY DAMAGE (1182),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-06-18T17:38:00Z,ACCIDENT MINOR INJURY (1181),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-18T18:41:00Z,BURGLARY/COMMERCIAL (459C),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-18T20:45:00Z,MISSING ADULT/MISC (1065A),23500 Block CRISTO RAY DR,"",""
+2015-06-18T21:41:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2000 Block E BAYSHORE RD,PALO ALTO,94303
+2015-06-18T21:41:00Z,WARRANT/OTHER AGENCY (OWARRANT),2000 Block E BAYSHORE RD,PALO ALTO,94303
+2015-06-18T22:45:00Z,VEHICLE/STORED (22651T),3300 Block ALMA ST,PALO ALTO,94306
+2015-06-19T03:08:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block EMBARCADERO RD,PALO ALTO,94301
+2015-06-19T07:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block QUARRY RD,PALO ALTO,94304
+2015-06-19T07:53:00Z,TRAFFIC/MISC (TRAFMISC),LYTTON AV & WAVERLEY ST,PALO ALTO,94301
+2015-06-19T07:53:00Z,VEHICLE/STORED (22651T),MIDDLEFIELD RD & LYTTON AV,PALO ALTO,94301
+2015-06-19T07:53:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & LYTTON AV,PALO ALTO,94301
+2015-06-19T08:53:00Z,ACCIDENT MINOR INJURY (1181),700 Block GUINDA ST,PALO ALTO,94301
+2015-06-19T09:36:00Z,WARRANT/OTHER AGENCY (OWARRANT),GUINDA ST & HOMER AV,PALO ALTO,94301
+2015-06-19T11:25:00Z,VEHICLE/IMPOUNDED (22651),400 Block ACACIA AV,PALO ALTO,94306
+2015-06-19T11:30:00Z,VEHICLE/IMPOUNDED (22651),400 Block ACACIA AV,PALO ALTO,94306
+2015-06-19T11:55:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-19T12:38:00Z,TRAFFIC/MISC (TRAFMISC),EVERETT AV & WAVERLEY ST,PALO ALTO,94301
+2015-06-19T16:00:00Z,EMBEZZLEMENT/MISC (503M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-19T16:00:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-19T16:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),400 Block QUARRY RD,PALO ALTO,94304
+2015-06-19T16:15:00Z,B&P/MISC (B&PMISC),300 Block LYTTON AV,PALO ALTO,94301
+2015-06-19T16:44:00Z,ACCIDENT PROPERTY DAMAGE (1182),ALMA ST & OREGON AV,PALO ALTO,94301
+2015-06-19T17:00:00Z,THEFT GRAND/MISC (487M),2800 Block PARK BLVD,PALO ALTO,94306
+2015-06-19T17:25:00Z,ACCIDENT PROPERTY DAMAGE (1182),MIDDLEFIELD RD & KINGSLEY AV,PALO ALTO,94301
+2015-06-19T18:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block LYTTON AV,PALO ALTO,94301
+2015-06-19T18:52:00Z,PSYCH SUBJECT (5150),EMERSON ST & FOREST AV,PALO ALTO,94301
+2015-06-19T19:30:00Z,BURGLARY/AUTO (459A),200 Block SHERMAN AV,PALO ALTO,94306
+2015-06-19T19:50:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-19T19:50:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-19T19:55:00Z,BURGLARY ATTEMPT/AUTO (459AA),200 Block SHERMAN AV,PALO ALTO,94306
+2015-06-19T20:30:00Z,BURGLARY/AUTO (459A),200 Block SHERMAN AV,PALO ALTO,94306
+2015-06-19T20:30:00Z,BURGLARY/AUTO (459A),200 Block SHERMAN AV,PALO ALTO,94306
+2015-06-19T21:00:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-19T21:00:00Z,BURGLARY/AUTO (459A),1900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-19T22:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1500 Block SAND HILL RD,PALO ALTO,94304
+2015-06-19T22:22:00Z,WARRANT/OTHER AGENCY (OWARRANT),2300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-19T22:22:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-19T22:22:00Z,WARRANT/OTHER AGENCY (OWARRANT),2300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-19T22:22:00Z,TRAFFIC/MISC (TRAFMISC),2300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-19T23:55:00Z,PENAL CODE/DISOBEY COURT ORDER (66),LYTTON AV & WAVERLEY ST,PALO ALTO,94301
+2015-06-19T23:55:00Z,PENAL CODE/DISOBEY COURT ORDER (66),LYTTON AV & WAVERLEY ST,PALO ALTO,94301
+2015-06-20T08:00:00Z,IDENTITY THEFT/OUTSIDE INVEST (530OI),200 Block STANFORD AV,PALO ALTO,94306
+2015-06-20T13:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),300 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-20T13:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),300 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-20T14:30:00Z,IDENTITY THEFT/CREDIT CARDS (530C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-20T17:20:00Z,DUI ADULT/ACCIDENT (23152AA),GRANT AV & EL CAMINO REAL,PALO ALTO,94306
+2015-06-20T22:54:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY AV & EL CAMINO REAL,PALO ALTO,94301
+2015-06-21T01:49:00Z,N&D/POSSESS/SALES (11378),400 Block EMERSON ST,PALO ALTO,94301
+2015-06-21T01:49:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block EMERSON ST,PALO ALTO,94301
+2015-06-21T02:41:00Z,BATTERY/PEACE OFFICER (243P),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-21T02:41:00Z,PENAL CODE/RESISTING ARREST (148RA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-21T02:41:00Z,BATTERY/PEACE OFFICER (243P),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-21T05:04:00Z,PENAL CODE/RESISTING ARREST (148RA),1000 Block AMARILLO AV,PALO ALTO,94303
+2015-06-21T08:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),4000 Block SUTHERLAND DR,PALO ALTO,94303
+2015-06-21T11:00:00Z,THEFT PETTY/MISC (488M),4200 Block WILKIE WAY,PALO ALTO,94306
+2015-06-21T11:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-06-21T11:30:00Z,TRAFFIC/MISC (TRAFMISC),ALMA ST & SAN ANTONIO RD,PALO ALTO,94306
+2015-06-21T11:36:00Z,ACCIDENT MINOR INJURY (1181),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-06-21T11:36:00Z,FELONY HIT & RUN (20001),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-06-21T12:53:00Z,VEHICLE/STORED (22651T),500 Block BRYANT ST,PALO ALTO,94301
+2015-06-21T13:04:00Z,VEHICLE/STORED (22651T),200 Block HAMILTON AV,PALO ALTO,94301
+2015-06-21T15:30:00Z,IDENTITY THEFT/CREDIT CARDS (530C),800 Block MIRANDA GREEN,PALO ALTO,94306
+2015-06-21T16:37:00Z,THEFT PETTY/MISC (488M),200 Block WHITCLEM DR,PALO ALTO,94306
+2015-06-21T16:37:00Z,THEFT PETTY/MISC (488M),200 Block WHITCLEM DR,PALO ALTO,94306
+2015-06-21T16:50:00Z,TRAFFIC/MISC (TRAFMISC),700 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-21T17:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),600 Block URBAN LN,PALO ALTO,94301
+2015-06-21T17:55:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-21T22:30:00Z,LOST PROPERTY/MISC (LOST),800 Block CHIMALUS DR,PALO ALTO,94306
+2015-06-21T23:00:00Z,VEHICLE/STORED (22651T),EMBARCADERO RD,PALO ALTO,""
+2015-06-21T23:20:00Z,TRAFFIC/SUSPENDED LICENSE (14601),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-06-21T23:27:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block LYTTON AV,PALO ALTO,94301
+2015-06-22T00:00:00Z,CHECKS/FORGERY (470),300 Block CURTNER AV,PALO ALTO,94306
+2015-06-22T00:00:00Z,IDENTITY THEFT/FRAUD (530F),300 Block CURTNER AV,PALO ALTO,94306
+2015-06-22T00:35:00Z,DUI ADULT/MISC (23152AM),EL CAMINO REAL & EL CAMINO WAY,PALO ALTO,94306
+2015-06-22T07:15:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LYTTON AV & WEBSTER ST,PALO ALTO,94301
+2015-06-22T09:56:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block LINCOLN AV,PALO ALTO,94301
+2015-06-22T10:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY AV & LINCOLN AV,"",""
+2015-06-22T11:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),EL CAMINO REAL & PAGE MILL RD,PALO ALTO,94306
+2015-06-22T12:00:00Z,IDENTITY THEFT/OUTSIDE INVEST (530OI),1800 Block 11TH AVE,"",""
+2015-06-22T12:43:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3300 Block ALMA ST,PALO ALTO,94306
+2015-06-22T12:50:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-22T14:15:00Z,SEX CRIME/LEWD & LASCIVIOUS (288B),500 Block HIGH ST,PALO ALTO,94301
+2015-06-22T15:00:00Z,BURGLARY/AUTO (459A),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-22T16:40:00Z,N&D/PARAPHERNALIA (11364),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-22T16:40:00Z,N&D/PARAPHERNALIA (11364),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-22T16:43:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-22T16:43:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-22T16:43:00Z,TRAFFIC/EVADE (2800),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-22T16:43:00Z,H&S/MISC (H&SMISC),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-22T16:43:00Z,WARRANT/OTHER AGENCY (OWARRANT),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-22T17:00:00Z,BURGLARY/AUTO (459A),400 Block HIGH ST,PALO ALTO,94301
+2015-06-22T17:00:00Z,BURGLARY/AUTO (459A),400 Block HIGH ST,PALO ALTO,94301
+2015-06-22T17:31:00Z,ACCIDENT PROPERTY DAMAGE (1182),UNIVERSITY AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-22T18:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-22T20:30:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-06-22T21:15:00Z,BURGLARY/AUTO (459A),2500 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-22T22:00:00Z,BURGLARY/AUTO (459A),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-22T22:00:00Z,BURGLARY/AUTO (459A),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-22T23:57:00Z,N&D/PARAPHERNALIA (11364),3300 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-06-22T23:57:00Z,SEX CRIME/PROSTITUTION (647B),3300 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-06-22T23:57:00Z,PENAL CODE/MISC (PENALMI),3300 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-06-23T00:00:00Z,LOST PROPERTY/MISC (LOST),3300 Block RAMONA ST,PALO ALTO,94306
+2015-06-23T00:10:00Z,TRAFFIC/SUSPENDED LICENSE (14601),COWPER ST & UNIVERSITY AV,PALO ALTO,94301
+2015-06-23T01:11:00Z,TRAFFIC/SUSPENDED LICENSE (14601),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-23T07:15:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-06-23T08:45:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LYTTON AV & BRYANT ST,PALO ALTO,94301
+2015-06-23T08:48:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-23T10:44:00Z,LOST PROPERTY/MISC (LOST),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-23T10:48:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & UNIVERSITY AV,PALO ALTO,94301
+2015-06-23T10:54:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-23T12:00:00Z,IDENTITY THEFT/MISC. (530M),1200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-23T13:00:00Z,THEFT PETTY/MISC (488M),4200 Block JUNIPER LN,PALO ALTO,94306
+2015-06-23T13:15:00Z,VANDALISM/MISDEMEANOR (594M),300 Block CURTNER AV,PALO ALTO,94306
+2015-06-23T14:11:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT AV,MOUNTAIN VIEW,""
+2015-06-23T14:14:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-23T14:14:00Z,WARRANT/PALO ALTO (PWARRANT),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-23T14:44:00Z,B&P/MISC (B&PMISC),1 Block ENCINA AV,PALO ALTO,94301
+2015-06-23T15:00:00Z,THEFT PETTY/MISC (488M),2700 Block LOUIS RD,PALO ALTO,94303
+2015-06-23T15:35:00Z,PENAL CODE/MISC (PENALMI),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-23T16:05:00Z,VEHICLE/STOLEN (10851S),300 Block GUINDA ST,PALO ALTO,94301
+2015-06-23T17:00:00Z,SUSP CIRC/BURGLARY RESIDENTIAL (1066459R),600 Block LYTTON AV,PALO ALTO,94301
+2015-06-23T18:00:00Z,BURGLARY/AUTO (459A),500 Block WEBSTER ST,PALO ALTO,94301
+2015-06-23T18:28:00Z,MUNI CODE/MISC (1090MISC),SAND HILL RD & EL CAMINO REAL,PALO ALTO,94304
+2015-06-23T18:30:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-06-23T18:32:00Z,VEHICLE/STOLEN (10851S),2300 Block SANTA CATALINA ST,PALO ALTO,94303
+2015-06-23T19:00:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-06-23T19:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),OREGON EXPY,PALO ALTO,""
+2015-06-23T19:18:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block RAMONA ST,PALO ALTO,94301
+2015-06-23T19:30:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-06-23T19:30:00Z,THEFT PETTY/FROM AUTO (488FA),2900 Block GREER RD,PALO ALTO,94303
+2015-06-23T20:06:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-23T20:30:00Z,BURGLARY/AUTO (459A),2300 Block BIRCH ST,PALO ALTO,94306
+2015-06-23T20:41:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-23T21:00:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-23T21:00:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-23T21:10:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-06-24T05:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),800 Block ALTAIRE WK,PALO ALTO,94303
+2015-06-24T06:13:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-24T07:27:00Z,SICK & CARED FOR/MISC (1053M),100 Block ALMA ST,PALO ALTO,94301
+2015-06-24T08:43:00Z,BATTERY/SIMPLE (242SB),500 Block LOMA VERDE AV,PALO ALTO,94306
+2015-06-24T09:15:00Z,VEHICLE/ABANDONED (1124),300 Block CHESTNUT AV,PALO ALTO,94306
+2015-06-24T09:45:00Z,THEFT PETTY/MISC (488M),100 Block HAMILTON AV,PALO ALTO,94301
+2015-06-24T10:00:00Z,BURGLARY/COMMERCIAL (459C),4000 Block FABIAN ST,PALO ALTO,94303
+2015-06-24T10:26:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-24T11:50:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block LYTTON AV,PALO ALTO,94301
+2015-06-24T12:29:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-24T12:36:00Z,TRAFFIC/MISC (TRAFMISC),EMBARCADERO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-06-24T13:16:00Z,MISDEMEANOR/HIT & RUN (20002),UNIVERSITY AV,PALO ALTO,""
+2015-06-24T13:27:00Z,ACCIDENT MINOR INJURY (1181),SAND HILL RD,PALO ALTO,""
+2015-06-24T14:30:00Z,N&D/PARAPHERNALIA (11364),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-24T14:30:00Z,PENAL CODE/POSSESS BURG TOOLS (466),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-24T14:30:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-24T15:07:00Z,CREDIT CARDS/FRAUDULENT USE (484G),2100 Block YALE ST,PALO ALTO,94306
+2015-06-24T15:41:00Z,MISDEMEANOR/HIT & RUN (20002),1300 Block BLOCK BRYANT ST,PALO ALTO,94301
+2015-06-24T16:09:00Z,THEFT PETTY/MISC (488M),400 Block EMERSON ST,PALO ALTO,94301
+2015-06-24T18:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-24T19:30:00Z,BURGLARY/AUTO (459A),300 Block EMERSON ST,PALO ALTO,94301
+2015-06-24T20:00:00Z,BURGLARY/AUTO (459A),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-24T20:00:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3800 Block BLOCK FABIAN WAY,PALO ALTO,94303
+2015-06-24T20:00:00Z,THEFT PETTY/AUTO ACCESSORY (488A),2300 Block WELLESLEY ST,PALO ALTO,94306
+2015-06-24T21:40:00Z,BURGLARY/AUTO (459A),200 Block N CALIFORNIA AV,PALO ALTO,94301
+2015-06-25T00:17:00Z,N&D/PARAPHERNALIA (11364),2500 Block BLOCK ROSS RD,PALO ALTO,94303
+2015-06-25T00:17:00Z,B&P/MISC (B&PMISC),2500 Block BLOCK ROSS RD,PALO ALTO,94303
+2015-06-25T00:17:00Z,PENAL CODE/MISC (PENALMI),2500 Block BLOCK ROSS RD,PALO ALTO,94303
+2015-06-25T08:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),700 Block ARASTRADERO RD,PALO ALTO,94306
+2015-06-25T08:50:00Z,THEFT PETTY/MISC (488M),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-25T09:53:00Z,PENAL CODE/MISC (PENALMI),400 Block HIGH ST,PALO ALTO,94301
+2015-06-25T11:50:00Z,TRAFFIC/MISC (TRAFMISC),2600 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-25T12:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),2600 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-25T12:30:00Z,ACCIDENT MINOR INJURY (1181),E CHARLESTON RD & MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-25T12:52:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-25T12:53:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-25T12:53:00Z,WARRANT/PALO ALTO (PWARRANT),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-25T14:28:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block HAMILTON AV,PALO ALTO,94301
+2015-06-25T14:28:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block HAMILTON AV,PALO ALTO,94301
+2015-06-25T14:28:00Z,VEHICLE/MISC (VEHMISC),300 Block HAMILTON AV,PALO ALTO,94301
+2015-06-25T15:42:00Z,FOUND PROPERTY/MISC (FOUND),1000 Block ARROWHEAD WAY,PALO ALTO,94303
+2015-06-25T17:00:00Z,FOUND PROPERTY/MISC (FOUND),400 Block DEODAR ST,PALO ALTO,94306
+2015-06-25T17:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),PAGE MILL RD & ALTAMONT RD,"",""
+2015-06-25T17:15:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-25T17:45:00Z,BURGLARY/AUTO (459A),400 Block LYTTON AV,PALO ALTO,94301
+2015-06-25T18:40:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-25T19:00:00Z,THEFT PETTY/FROM AUTO (488FA),3800 Block LA DONNA AV,PALO ALTO,94306
+2015-06-25T20:35:00Z,N&D/POSSESSION (11350),4200 Block RICKEYS WAY,PALO ALTO,94306
+2015-06-25T20:35:00Z,N&D/UNDER INFLUENCE (11550),4200 Block RICKEYS WAY,PALO ALTO,94306
+2015-06-25T20:35:00Z,TRAFFIC/MISC (TRAFMISC),4200 Block RICKEYS WAY,PALO ALTO,94306
+2015-06-25T22:15:00Z,BURGLARY/AUTO (459A),500 Block HIGH ST,PALO ALTO,94301
+2015-06-25T22:40:00Z,TRAFFIC/MISC (TRAFMISC),EMBARCADERO RD & HWY 101,PALO ALTO,94303
+2015-06-26T00:03:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),600 Block EMERSON ST,PALO ALTO,94301
+2015-06-26T00:42:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-26T01:13:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),700 Block COLORADO AV,PALO ALTO,94303
+2015-06-26T02:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),2400 Block HANOVER ST,PALO ALTO,94304
+2015-06-26T08:35:00Z,VEHICLE/IMPOUNDED (22651),600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-06-26T08:55:00Z,THEFT PETTY ATT/ AUTO ACCESSOR (488AA),500 Block BARRON AV,PALO ALTO,94306
+2015-06-26T09:14:00Z,TRAFFIC/MISC (TRAFMISC),3500 Block BLOCK LAGUNA AV,PALO ALTO,94306
+2015-06-26T11:00:00Z,THEFT PETTY/AUTO ACCESSORY (488A),600 Block SENECA ST,PALO ALTO,94301
+2015-06-26T12:25:00Z,TRAFFIC/SUSPENDED LICENSE (14601),NEWELL RD & EDGEWOOD DR,PALO ALTO,94303
+2015-06-26T12:32:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block SAN ANTONIO RD,PALO ALTO,""
+2015-06-26T13:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block E MEADOW DR,PALO ALTO,94303
+2015-06-26T14:10:00Z,PSYCH SUBJECT (5150),2700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-26T14:10:00Z,PSYCH SUBJECT (5150),2700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-26T14:50:00Z,ACCIDENT MINOR INJURY (1181),1700 Block BLOCK ALMA ST,PALO ALTO,""
+2015-06-26T16:00:00Z,THEFT PETTY/MISC (488M),1100 Block EMERSON ST,PALO ALTO,94301
+2015-06-26T16:30:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-26T17:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),500 Block EVERETT AV,PALO ALTO,94301
+2015-06-26T17:00:00Z,BURGLARY/COMMERCIAL (459C),1700 Block EMERSON ST,PALO ALTO,94301
+2015-06-26T19:00:00Z,THEFT PETTY/FROM AUTO (488FA),1000 Block MC GREGOR WAY,PALO ALTO,94306
+2015-06-26T19:00:00Z,BURGLARY/COMMERCIAL (459C),1000 Block MC GREGOR WAY,PALO ALTO,94306
+2015-06-26T19:00:00Z,THEFT PETTY/FROM AUTO (488FA),1000 Block MC GREGOR WAY,PALO ALTO,94306
+2015-06-26T19:00:00Z,POSSESS STOLEN PROP/MISC (496),1000 Block MC GREGOR WAY,PALO ALTO,94306
+2015-06-26T19:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),1000 Block MC GREGOR WAY,PALO ALTO,94306
+2015-06-26T20:30:00Z,THEFT GRAND/AUTO ACCESSORY (487A),500 Block BARRON AV,PALO ALTO,94306
+2015-06-26T20:45:00Z,VEHICLE/STORED (22651T),200 Block EVERETT AV,PALO ALTO,94301
+2015-06-26T21:41:00Z,TRAFFIC/SUSPENDED LICENSE (14601),800 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-26T22:00:00Z,ANIMAL/MISC (ANIMALMI),200 Block FOREST AV,PALO ALTO,94301
+2015-06-26T22:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-26T23:10:00Z,WARRANT/OTHER AGENCY (OWARRANT),EVERETT AV & HIGH ST,PALO ALTO,94301
+2015-06-27T01:00:00Z,THEFT PETTY/FROM AUTO (488FA),800 Block BARRON AV,PALO ALTO,94306
+2015-06-27T01:00:00Z,BURGLARY/COMMERCIAL (459C),800 Block BARRON AV,PALO ALTO,94306
+2015-06-27T01:00:00Z,THEFT PETTY/FROM AUTO (488FA),800 Block BARRON AV,PALO ALTO,94306
+2015-06-27T01:00:00Z,POSSESS STOLEN PROP/MISC (496),800 Block BARRON AV,PALO ALTO,94306
+2015-06-27T01:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),800 Block BARRON AV,PALO ALTO,94306
+2015-06-27T02:31:00Z,DUI ADULT/MISC (23152AM),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-27T03:00:00Z,DUI ADULT/MISC (23152AM),100 Block LOMA VERDE AV,PALO ALTO,94306
+2015-06-27T08:21:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-27T08:30:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-27T10:40:00Z,VEHICLE/IMPOUNDED (22651),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-27T11:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block WEBSTER ST,PALO ALTO,94301
+2015-06-27T12:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),200 Block HAMILTON AV,PALO ALTO,94301
+2015-06-27T12:56:00Z,ACCIDENT MINOR INJURY (1181),200 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-27T13:27:00Z,FOUND PROPERTY/MISC (FOUND),2200 Block WILLIAMS ST,PALO ALTO,94306
+2015-06-27T14:35:00Z,IDENTITY THEFT/OUTSIDE INVEST (530OI),700 Block ELLSWORTH PL,PALO ALTO,94306
+2015-06-27T16:03:00Z,VEHICLE/IMPOUNDED (22651),1000 Block EL CAMINO REAL,PALO ALTO,""
+2015-06-27T16:05:00Z,VEHICLE/IMPOUNDED (22651),900 Block EL CAMINO REAL,PALO ALTO,""
+2015-06-27T16:17:00Z,VEHICLE/IMPOUNDED (22651),1700 Block BLOCK EL CAMINO REAL,PALO ALTO,""
+2015-06-27T16:30:00Z,VEHICLE/IMPOUNDED (22651),1800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-27T16:30:00Z,VEHICLE/IMPOUNDED (22651),1500 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-27T16:55:00Z,VEHICLE/IMPOUNDED (22651),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-27T17:00:00Z,THEFT PETTY/MISC (488M),200 Block COLERIDGE AV,PALO ALTO,94301
+2015-06-27T17:04:00Z,VEHICLE/IMPOUNDED (22651),1900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-27T18:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),1100 Block HARKER AV,PALO ALTO,94301
+2015-06-27T19:00:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),400 Block AVENIDA ARBOLES,"",""
+2015-06-27T19:00:00Z,FOUND PROPERTY/MISC (FOUND),2900 Block COWPER ST,PALO ALTO,94306
+2015-06-27T20:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-27T22:07:00Z,ACCIDENT MINOR INJURY (1181),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-27T22:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & EMBARCADERO RD,PALO ALTO,94301
+2015-06-27T23:05:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-28T00:02:00Z,WARRANT/OTHER AGENCY (OWARRANT),1100 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-28T00:41:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block EMERSON ST,PALO ALTO,94301
+2015-06-28T00:41:00Z,DUI ADULT/MISC (23152AM),300 Block EMERSON ST,PALO ALTO,94301
+2015-06-28T00:41:00Z,TRAFFIC/MISC (TRAFMISC),300 Block EMERSON ST,PALO ALTO,94301
+2015-06-28T02:00:00Z,N&D/POSSESS/SALES (11378),E CHARLESTON RD & RENGSTORFF ST,MOUNTAIN VIEW,""
+2015-06-28T02:00:00Z,N&D/MISC (N&DMISC),E CHARLESTON RD & RENGSTORFF ST,MOUNTAIN VIEW,""
+2015-06-28T02:30:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block LYTTON AV,PALO ALTO,94301
+2015-06-28T03:40:00Z,PENAL CODE/RESISTING ARREST (148RA),600 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-28T03:40:00Z,N&D/PARAPHERNALIA (11364),600 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-28T03:40:00Z,PENAL CODE/RESISTING ARREST (148RA),600 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-28T03:40:00Z,PENAL CODE/POSSESS BURG TOOLS (466),600 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-06-28T05:37:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-28T05:37:00Z,WARRANT/PALO ALTO (PWARRANT),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-28T06:24:00Z,PENAL CODE/MISC (PENALMI),UNIVERSITY AV & WAVERLEY ST,PALO ALTO,94301
+2015-06-28T08:00:00Z,IDENTITY THEFT/MISC. (530M),1000 Block MOFFETT CIR,PALO ALTO,94303
+2015-06-28T10:00:00Z,LOST PROPERTY/MISC (LOST),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-06-28T12:00:00Z,MISSING ADULT/MISC (1065A),700 Block 4TH ST,"",""
+2015-06-28T12:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),2300 Block BIRCH ST,PALO ALTO,94306
+2015-06-28T13:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),4000 Block EL CAMINO WAY,PALO ALTO,94306
+2015-06-28T15:34:00Z,TRAFFIC/SUSPENDED LICENSE (14601),500 Block FOREST AV,PALO ALTO,94301
+2015-06-28T18:41:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block EMERSON ST,PALO ALTO,94301
+2015-06-28T18:41:00Z,PENAL CODE/RESISTING ARREST (148RA),500 Block EMERSON ST,PALO ALTO,94301
+2015-06-28T18:41:00Z,PENAL CODE/MISC (PENALMI),500 Block EMERSON ST,PALO ALTO,94301
+2015-06-28T20:00:00Z,THEFT PETTY/FROM AUTO (488FA),3700 Block LA DONNA AV,PALO ALTO,94306
+2015-06-28T20:00:00Z,THEFT PETTY/FROM AUTO (488FA),3700 Block LA DONNA AV,PALO ALTO,94306
+2015-06-28T20:00:00Z,THEFT PETTY/FROM AUTO (488FA),3700 Block LA DONNA AV,PALO ALTO,94306
+2015-06-28T22:49:00Z,DUI ADULT/MISC (23152AM),200 Block E CHARLESTON RD,PALO ALTO,94306
+2015-06-28T23:01:00Z,PENAL CODE/MISC (PENALMI),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-28T23:01:00Z,PSYCH SUBJECT (5150),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-28T23:01:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-28T23:01:00Z,PENAL CODE/MISC (PENALMI),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-06-29T00:00:00Z,LOST PROPERTY/MISC (LOST),100 Block ALMA ST,PALO ALTO,94301
+2015-06-29T00:00:00Z,THEFT PETTY/MISC (488M),1500 Block PAGE MILL RD,PALO ALTO,94304
+2015-06-29T00:50:00Z,N&D/POSSESSION (11350),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-06-29T00:50:00Z,N&D/PARAPHERNALIA (11364),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-06-29T00:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-06-29T01:59:00Z,TRAFFIC/MISC (TRAFMISC),400 Block LYTTON AV,PALO ALTO,94301
+2015-06-29T04:00:00Z,BURGLARY/AUTO (459A),1500 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-29T06:15:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-06-29T06:40:00Z,B&P/MISC (B&PMISC),HOMER AV,PALO ALTO,94301
+2015-06-29T06:50:00Z,PENAL CODE/MISC (PENALMI),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-29T08:58:00Z,IDENTITY THEFT/MISC. (530M),100 Block BRYANT ST,PALO ALTO,94301
+2015-06-29T08:58:00Z,IDENTITY THEFT/MISC. (530M),100 Block BRYANT ST,PALO ALTO,94301
+2015-06-29T09:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3000 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-06-29T09:26:00Z,ACCIDENT MINOR INJURY (1181),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-29T10:02:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-06-29T10:26:00Z,ACCIDENT MINOR INJURY (1181),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-06-29T10:38:00Z,VEHICLE/STORED (22651T),4200 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94303
+2015-06-29T11:47:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),PARK BLVD & CALIFORNIA AV,PALO ALTO,94306
+2015-06-29T12:49:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-06-29T13:00:00Z,THEFT GRAND/MISC (487M),3000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-06-29T13:25:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-29T13:28:00Z,BURGLARY/SHOPLIFT (459S),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-29T13:45:00Z,TRAFFIC/MISC (TRAFMISC),FOREST AV & WAVERLEY ST,PALO ALTO,94301
+2015-06-29T13:45:00Z,FOUND PROPERTY/MISC (FOUND),200 Block PALO ALTO AV,PALO ALTO,94301
+2015-06-29T13:52:00Z,LOST PROPERTY/MISC (LOST),UNIVERSITY AV & EMERSON ST,PALO ALTO,94301
+2015-06-29T14:20:00Z,MISDEMEANOR/HIT & RUN (20002),NEWELL RD & HOPKINS AV,PALO ALTO,94303
+2015-06-29T18:09:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block ARASTRADERO RD,PALO ALTO,94304
+2015-06-29T18:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),ADDISON AV,PALO ALTO,""
+2015-06-29T19:02:00Z,TRAFFIC/MISC (TRAFMISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-29T19:30:00Z,LOST PROPERTY/MISC (LOST),500 Block BRYANT ST,PALO ALTO,94301
+2015-06-29T20:18:00Z,B&P/MISC (B&PMISC),500 Block WEBSTER ST,PALO ALTO,94301
+2015-06-29T20:40:00Z,THEFT PETTY/MISC (488M),100 Block S CALIFORNIA AV,PALO ALTO,94306
+2015-06-29T20:40:00Z,THEFT PETTY/MISC (488M),100 Block S CALIFORNIA AV,PALO ALTO,94306
+2015-06-29T20:40:00Z,THEFT PETTY/MISC (488M),100 Block S CALIFORNIA AV,PALO ALTO,94306
+2015-06-29T20:40:00Z,THEFT PETTY/MISC (488M),100 Block S CALIFORNIA AV,PALO ALTO,94306
+2015-06-29T20:40:00Z,THEFT PETTY/MISC (488M),100 Block S CALIFORNIA AV,PALO ALTO,94306
+2015-06-29T21:23:00Z,ACCIDENT MINOR INJURY (1181),700 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-29T21:40:00Z,BURGLARY/AUTO (459A),500 Block BRYANT ST,PALO ALTO,94301
+2015-06-29T21:40:00Z,BURGLARY/AUTO (459A),500 Block BRYANT ST,PALO ALTO,94301
+2015-06-29T22:55:00Z,VEHICLE/STORED (22651T),300 Block CURTNER AV,PALO ALTO,94306
+2015-06-30T01:46:00Z,TRAFFIC/MISC (TRAFMISC),2100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-30T02:45:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),2400 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-06-30T05:35:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-30T05:50:00Z,PENAL CODE/POSSESS BURG TOOLS (466),500 Block HIGH ST,PALO ALTO,94301
+2015-06-30T05:50:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),500 Block HIGH ST,PALO ALTO,94301
+2015-06-30T05:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block HIGH ST,PALO ALTO,94301
+2015-06-30T06:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),3800 Block PARK BLVD,PALO ALTO,94306
+2015-06-30T08:57:00Z,VEHICLE/STORED (22651T),E MEADOW DR & ALMA ST,PALO ALTO,94306
+2015-06-30T09:45:00Z,VEHICLE/IMPOUNDED (22651),W BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-06-30T09:45:00Z,TRAFFIC/MISC (TRAFMISC),W BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-06-30T10:29:00Z,PENAL CODE/MISC (PENALMI),600 Block HOWE AVE,"",""
+2015-06-30T11:20:00Z,TRAFFIC/MISC (TRAFMISC),LAURA LN & E BAYSHORE RD,PALO ALTO,94303
+2015-06-30T12:50:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-06-30T13:20:00Z,ASSAULT WITH DEADLY WEAPON (245),3500 Block LAGUNA AV,PALO ALTO,94306
+2015-06-30T13:20:00Z,BURGLARY/RESIDENTIAL (459R),3500 Block LAGUNA AV,PALO ALTO,94306
+2015-06-30T13:20:00Z,VANDALISM/FELONY (594F),3500 Block LAGUNA AV,PALO ALTO,94306
+2015-06-30T13:20:00Z,PROWLER/MISC (647G),3500 Block LAGUNA AV,PALO ALTO,94306
+2015-06-30T13:26:00Z,BURGLARY/COMMERCIAL (459C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-30T14:55:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-30T15:15:00Z,VEHICLE/STORED (22651T),CHANNING AV & FRANCIS DR ST,PALO ALTO,94303
+2015-06-30T16:53:00Z,N&D/POSSESSION (11350),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-06-30T18:00:00Z,VANDALISM/MISDEMEANOR (594M),200 Block HAMILTON AV,PALO ALTO,94301
+2015-06-30T18:43:00Z,THEFT GRAND/SHOPLIFT (487S),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-30T19:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block COWPER ST,PALO ALTO,94301
+2015-06-30T19:22:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-06-30T20:00:00Z,N&D/POSSESSION (11350),ALMA ST & UNIVERSITY AV,PALO ALTO,94301
+2015-06-30T21:14:00Z,ROBBERY/ARMED (211A),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-06-30T21:47:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),300 Block VENTURA AV,PALO ALTO,94306
+2015-06-30T23:00:00Z,BURGLARY/AUTO (459A),HIGH ST & HAMILTON AV,PALO ALTO,94301
+2015-07-01T01:05:00Z,TRAFFIC/EVADE (2800),3300 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-01T06:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),900 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-01T08:00:00Z,IDENTITY THEFT/MISC. (530M),1000 Block COWPER ST,PALO ALTO,94301
+2015-07-01T08:00:00Z,IDENTITY THEFT/OUTSIDE INVEST (530OI),1800 Block EMBARCADERO RD,PALO ALTO,94303
+2015-07-01T08:43:00Z,ACCIDENT PROPERTY DAMAGE (1182),1800 Block BLOCK UNIVERSITY AV,PALO ALTO,94301
+2015-07-01T09:20:00Z,B&P/MISC (B&PMISC),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-01T09:43:00Z,ACCIDENT MINOR INJURY (1181),3900 Block FABIAN WAY,PALO ALTO,94303
+2015-07-01T10:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1000 Block CALIFORNIA AV,PALO ALTO,94306
+2015-07-01T10:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-01T10:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),800 Block BRUCE DR,PALO ALTO,94303
+2015-07-01T10:50:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),100 Block CHARLES MARX WAY,PALO ALTO,94304
+2015-07-01T11:30:00Z,THEFT PETTY/MISC (488M),400 Block PORTAGE AV,PALO ALTO,94306
+2015-07-01T11:30:00Z,IDENTITY THEFT/CREDIT CARDS (530C),400 Block PORTAGE AV,PALO ALTO,94306
+2015-07-01T11:30:00Z,THEFT GRAND/MISC (487M),400 Block PORTAGE AV,PALO ALTO,94306
+2015-07-01T14:00:00Z,THEFT GRAND/PERSON (487P),300 Block HAMILTON AV,PALO ALTO,94301
+2015-07-01T15:21:00Z,ACCIDENT MINOR INJURY (1181),1000 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-07-01T16:56:00Z,MUNI CODE/MISC (1090MISC),500 Block EMERSON ST,PALO ALTO,94301
+2015-07-01T17:21:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-07-01T19:00:00Z,BURGLARY/AUTO (459A),2400 Block ASH ST,PALO ALTO,94306
+2015-07-01T19:39:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-01T19:42:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-01T19:55:00Z,N&D/MISC (N&DMISC),SAND HILL RD & EL CAMINO REAL,PALO ALTO,94304
+2015-07-01T20:05:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-01T20:35:00Z,UNATTENDED DEATH/MISC (UNATTDEA),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-07-01T20:42:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block HAMILTON AV,PALO ALTO,94301
+2015-07-01T21:53:00Z,B&P/MISC (B&PMISC),600 Block LYTTON AV,PALO ALTO,94301
+2015-07-02T00:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),400 Block GRANT AV,PALO ALTO,94306
+2015-07-02T00:01:00Z,IDENTITY THEFT/MISC. (530M),200 Block FOREST AV,PALO ALTO,94301
+2015-07-02T07:43:00Z,BICYCLE/ABANDONED (ABANBIKE),500 Block HIGH ST,PALO ALTO,94301
+2015-07-02T08:00:00Z,VANDALISM/FELONY (594F),500 Block HIGH ST,PALO ALTO,94301
+2015-07-02T08:00:00Z,THEFT GRAND/MISC (487M),3300 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-07-02T08:57:00Z,ACCIDENT PROPERTY DAMAGE (1182),PAGE MILL RD & EL CAMINO REAL,PALO ALTO,94306
+2015-07-02T09:10:00Z,VANDALISM/MISDEMEANOR (594M),500 Block HIGH ST,PALO ALTO,94301
+2015-07-02T09:15:00Z,VANDALISM/MISDEMEANOR (594M),1 Block ENCINA AV,PALO ALTO,94301
+2015-07-02T09:22:00Z,LOST PROPERTY/MISC (LOST),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-02T10:59:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY DR & MIDDLE AV,MENLO PARK,""
+2015-07-02T11:30:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),300 Block OREGON AV,PALO ALTO,94301
+2015-07-02T13:01:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),500 Block E MEADOW DR,PALO ALTO,94306
+2015-07-02T13:07:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MIDDLEFIELD RD & UNIVERSITY AV,PALO ALTO,94301
+2015-07-02T13:53:00Z,LOST PROPERTY/MISC (LOST),700 Block WELCH RD,PALO ALTO,94304
+2015-07-02T14:00:00Z,THEFT GRAND/MISC (487M),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-02T14:53:00Z,DRUNK IN PUBLIC (647(F)PC),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-02T15:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-02T20:30:00Z,BURGLARY/AUTO (459A),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-02T20:32:00Z,WARRANT/OTHER AGENCY (OWARRANT),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-02T22:25:00Z,TRAFFIC/SUSPENDED LICENSE (14601),800 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-07-02T23:27:00Z,TRAFFIC/SUSPENDED LICENSE (14601),OREGON AV & COWPER ST,PALO ALTO,94301
+2015-07-03T02:26:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-03T02:26:00Z,PENAL CODE/RESISTING ARREST (148RA),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-03T09:19:00Z,ACCIDENT MINOR INJURY (1181),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-03T10:00:00Z,FOUND PROPERTY/MISC (FOUND),3100 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-07-03T10:30:00Z,BICYCLE/ABANDONED (ABANBIKE),EL CAMINO REAL & CAMBRIDGE AV,PALO ALTO,94306
+2015-07-03T11:45:00Z,THEFT PETTY/MISC (488M),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-03T11:45:00Z,IDENTITY THEFT/CREDIT CARDS (530C),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-03T14:07:00Z,IDENTITY THEFT/MISC. (530M),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-03T14:37:00Z,THEFT GRAND/SHOPLIFT (487S),700 Block EMERSON ST,PALO ALTO,94301
+2015-07-03T14:55:00Z,TRAFFIC/SUSPENDED LICENSE (14601),800 Block COLORADO AV,PALO ALTO,94303
+2015-07-03T16:00:00Z,BURGLARY/AUTO (459A),3400 Block ROSS RD,PALO ALTO,94303
+2015-07-03T17:31:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-03T19:46:00Z,DUI ADULT/ACCIDENT (23152AA),WEBSTER ST & HAMILTON AV,PALO ALTO,94301
+2015-07-03T19:50:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block BYRON ST,PALO ALTO,94301
+2015-07-03T20:00:00Z,PENAL CODE/MISC (PENALMI),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-03T20:15:00Z,BURGLARY/AUTO (459A),2500 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-03T20:52:00Z,BURGLARY/AUTO (459A),1900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-03T22:05:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block LYTTON AV,PALO ALTO,94301
+2015-07-03T22:30:00Z,PENAL CODE/MISC (PENALMI),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-03T22:36:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-04T00:25:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-04T00:36:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block EMERSON ST,PALO ALTO,94301
+2015-07-04T01:39:00Z,DUI ADULT/MISC (23152AM),UNIVERSITY AV & EL CAMINO REAL,PALO ALTO,94301
+2015-07-04T01:56:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block FLORENCE ST,PALO ALTO,94301
+2015-07-04T03:55:00Z,PENAL CODE/MISC (PENALMI),700 Block CAMBRIDGE AV,MENLO PARK,""
+2015-07-04T10:40:00Z,ACCIDENT MINOR INJURY (1181),1600 Block BLOCK ALMA ST,PALO ALTO,94301
+2015-07-04T11:42:00Z,LOST PROPERTY/MISC (LOST),400 Block SHERIDAN AV,PALO ALTO,94306
+2015-07-04T12:10:00Z,WARRANT/OTHER AGENCY (OWARRANT),W MEADOW DR & EL CAMINO WAY,PALO ALTO,94306
+2015-07-04T13:29:00Z,CASUALTY/FALL (CASUALFA),900 Block E CHARLESTON RD,PALO ALTO,94303
+2015-07-04T13:30:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-04T16:00:00Z,THEFT GRAND/MISC (487M),600 Block E MEADOW DR,PALO ALTO,94306
+2015-07-04T18:33:00Z,BATTERY/SIMPLE (242SB),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-04T20:07:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),400 Block EMERSON ST,PALO ALTO,94301
+2015-07-04T22:04:00Z,TRAFFIC/SUSPENDED LICENSE (14601),500 Block HAMILTON AV,PALO ALTO,94301
+2015-07-04T22:45:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-04T23:41:00Z,TRAFFIC/SUSPENDED LICENSE (14601),500 Block LYTTON AV,PALO ALTO,94301
+2015-07-05T01:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MIDDLEFIELD RD & OREGON EXPY,PALO ALTO,94301
+2015-07-05T02:39:00Z,DUI ADULT/MISC (23152AM),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-07-05T06:30:00Z,N&D/POSSESSION (11350),EL CAMINO REAL & VENTURA AV,PALO ALTO,94306
+2015-07-05T10:25:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-05T11:48:00Z,ACCIDENT MINOR INJURY (1181),900 Block EL CAMINO REAL,PALO ALTO,""
+2015-07-05T12:30:00Z,VANDALISM/MISDEMEANOR (594M),500 Block HIGH ST,PALO ALTO,94301
+2015-07-05T12:30:00Z,VANDALISM/MISDEMEANOR (594M),500 Block HIGH ST,PALO ALTO,94301
+2015-07-05T13:26:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-05T14:00:00Z,VANDALISM/MISDEMEANOR (594M),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-05T14:05:00Z,ACCIDENT MINOR INJURY (1181),2700 Block BLOCK GREER RD,PALO ALTO,94303
+2015-07-05T17:17:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),1200 Block WILLOW RD,MENLO PARK,94303
+2015-07-05T18:30:00Z,BURGLARY/AUTO (459A),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-07-05T18:30:00Z,BURGLARY ATTEMPT/AUTO (459AA),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-07-05T18:55:00Z,WARRANT/OTHER AGENCY (OWARRANT),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-05T19:00:00Z,BURGLARY/RESIDENTIAL (459R),700 Block GAILEN AV,PALO ALTO,94303
+2015-07-05T19:00:00Z,BURGLARY/COMMERCIAL (459C),700 Block GAILEN AV,PALO ALTO,94303
+2015-07-05T19:11:00Z,WARRANT/OTHER AGENCY (OWARRANT),900 Block SAN ANTONIO AV,PALO ALTO,94306
+2015-07-05T20:00:00Z,N&D/POSSESSION (11350),3200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-07-05T22:18:00Z,N&D/PARAPHERNALIA (11364),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-07-05T22:46:00Z,VEHICLE/STOLEN (10851S),700 Block TENNYSON AV,PALO ALTO,94303
+2015-07-05T22:50:00Z,VEHICLE/STOLEN (10851S),700 Block TENNYSON AV,PALO ALTO,94303
+2015-07-05T23:23:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-06T00:13:00Z,TRAFFIC/SUSPENDED LICENSE (14601),INDEPENDENCE AV & E CHARLESTON RD,MOUNTAIN VIEW,""
+2015-07-06T01:09:00Z,PSYCH SUBJECT (5150),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-06T01:52:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-07-06T03:40:00Z,N&D/PARAPHERNALIA (11364),1700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-07-06T05:24:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & MATADERO AV,PALO ALTO,94306
+2015-07-06T05:35:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block E CHARLESTON RD,PALO ALTO,94306
+2015-07-06T07:45:00Z,N&D/MISC (N&DMISC),UNIVERSITY AV & EMERSON ST,PALO ALTO,94301
+2015-07-06T07:50:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),600 Block HIGH ST,PALO ALTO,94301
+2015-07-06T08:00:00Z,TRAFFIC/MISC (TRAFMISC),600 Block HIGH ST,PALO ALTO,94301
+2015-07-06T08:21:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-06T08:53:00Z,ACCIDENT PROPERTY DAMAGE (1182),1100 Block ALMA ST,PALO ALTO,94301
+2015-07-06T09:39:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),2500 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-07-06T09:48:00Z,ACCIDENT MINOR INJURY (1181),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-06T12:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),1500 Block SAND HILL RD,PALO ALTO,94304
+2015-07-06T12:17:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block FOREST AV,PALO ALTO,94301
+2015-07-06T13:00:00Z,LOST PROPERTY/MISC (LOST),800 Block BRUCE DR,PALO ALTO,94303
+2015-07-06T14:16:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-06T14:22:00Z,IDENTITY THEFT/MISC. (530M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-06T14:38:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block ALMA ST,PALO ALTO,94301
+2015-07-06T15:25:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-06T15:40:00Z,ACCIDENT MINOR INJURY (1181),200 Block BRYANT ST,PALO ALTO,94301
+2015-07-06T15:55:00Z,MUNI CODE/MISC (1090MISC),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-07-06T16:41:00Z,ACCIDENT MINOR INJURY (1181),1300 Block BLOCK SAND HILL RD,PALO ALTO,94304
+2015-07-06T16:50:00Z,MUNI CODE/MISC (1090MISC),EL CAMINO REAL & SAND HILL RD,PALO ALTO,94304
+2015-07-06T17:29:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-06T18:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-07-06T19:03:00Z,MISSING ADULT/MISC (1065A),600 Block LYTTON AV,PALO ALTO,94301
+2015-07-06T19:15:00Z,BURGLARY/AUTO (459A),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-07-06T19:20:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-06T20:10:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-06T20:41:00Z,IDENTITY THEFT/CREDIT CARDS (530C),2700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-06T20:41:00Z,LOST PROPERTY/MISC (LOST),2700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-06T21:00:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-07-06T21:39:00Z,N&D/UNDER INFLUENCE (11550),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-06T21:39:00Z,PSYCH SUBJECT (5150),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-06T21:43:00Z,MUNI CODE/MISC (1090MISC),500 Block EMERSON ST,PALO ALTO,94301
+2015-07-06T21:58:00Z,TRAFFIC/MISC (TRAFMISC),SAN ANTONIO CT & SAN ANTONIO RD,PALO ALTO,94306
+2015-07-06T23:20:00Z,TRAFFIC/SUSPENDED LICENSE (14601),ROSS RD & LOUIS RD,PALO ALTO,94303
+2015-07-07T02:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E CHARLESTON RD & INDEPENDENCE AV,MOUNTAIN VIEW,""
+2015-07-07T02:30:00Z,WARRANT/OTHER AGENCY (OWARRANT),E CHARLESTON RD & INDEPENDENCE AV,MOUNTAIN VIEW,""
+2015-07-07T06:33:00Z,B&P/MISC (B&PMISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-07T06:39:00Z,PENAL CODE/MISC (PENALMI),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-07T08:29:00Z,ACCIDENT PROPERTY DAMAGE (1182),3200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-07T09:00:00Z,PENAL CODE/TERRORIST THREATS (422),1300 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-07T12:15:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-07T12:15:00Z,PENAL CODE/MISC (PENALMI),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-07T12:31:00Z,ACCIDENT MINOR INJURY (1181),E MEADOW DR & MIDDLEFIELD RD,PALO ALTO,94306
+2015-07-07T13:20:00Z,ROBBERY/ARMED (211A),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-07T13:55:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-07T14:43:00Z,ACCIDENT MINOR INJURY (1181),900 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-07-07T15:45:00Z,FOUND PROPERTY/MISC (FOUND),500 Block JACKSON DR,PALO ALTO,94303
+2015-07-07T15:57:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),700 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-07T16:07:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),LYTTON AV & BRYANT ST,PALO ALTO,94301
+2015-07-07T17:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block RAMONA ST,PALO ALTO,94301
+2015-07-07T17:51:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),1 Block ENCINA AV,PALO ALTO,94301
+2015-07-07T18:00:00Z,THEFT PETTY/FROM AUTO (488FA),800 Block BOYCE AV,PALO ALTO,94301
+2015-07-07T18:00:00Z,CREDIT CARDS/FRAUDULENT USE (484G),2700 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-07-07T18:00:00Z,CREDIT CARDS/FRAUDULENT USE (484G),2700 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-07-07T18:00:00Z,THEFT PETTY/AUTO ACCESSORY (488A),2700 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-07-07T18:30:00Z,BURGLARY/AUTO (459A),200 Block SHERIDAN AV,PALO ALTO,94306
+2015-07-07T18:30:00Z,BURGLARY/AUTO (459A),200 Block SHERIDAN AV,PALO ALTO,94306
+2015-07-07T19:46:00Z,B&P/MISC (B&PMISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-07T20:28:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block HAMILTON AV,PALO ALTO,94301
+2015-07-07T21:30:00Z,THEFT PETTY/FROM AUTO (488FA),900 Block ADDISON AV,PALO ALTO,94301
+2015-07-07T21:33:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-07T22:05:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-08T01:35:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & HWY 101,PALO ALTO,94303
+2015-07-08T03:09:00Z,WARRANT/OTHER AGENCY (OWARRANT),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-07-08T06:03:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-07-08T09:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),400 Block SHERIDAN AV,PALO ALTO,94306
+2015-07-08T09:14:00Z,ACCIDENT MINOR INJURY (1181),UNIVERSITY AV,PALO ALTO,""
+2015-07-08T10:03:00Z,IDENTITY THEFT/CREDIT CARDS (530C),700 Block TORREYA CT,PALO ALTO,94303
+2015-07-08T11:23:00Z,ACCIDENT PROPERTY DAMAGE (1182),ALMA ST & OREGON EXPY,PALO ALTO,94301
+2015-07-08T12:11:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),2700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-07-08T12:11:00Z,B&P/MISC (B&PMISC),2700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-07-08T13:14:00Z,IDENTITY THEFT/FRAUD (530F),800 Block RAMONA ST,PALO ALTO,94301
+2015-07-08T13:35:00Z,ACCIDENT MINOR INJURY (1181),100 Block OREGON EXPY,PALO ALTO,94306
+2015-07-08T14:33:00Z,CASUALTY/FALL (CASUALFA),500 Block COWPER ST,PALO ALTO,94301
+2015-07-08T15:34:00Z,PENAL CODE/RESISTING ARREST (148RA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-08T16:13:00Z,TRAFFIC/MISC (TRAFMISC),EMBARCADERO RD & NEWELL RD,PALO ALTO,94303
+2015-07-08T17:50:00Z,VANDALISM/FELONY (594F),800 Block E CHARLESTON RD,PALO ALTO,94303
+2015-07-08T18:43:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-08T18:49:00Z,ACCIDENT MINOR INJURY (1181),500 Block LYTTON AV,PALO ALTO,94301
+2015-07-08T20:05:00Z,N&D/POSSESSION (11350),500 Block HIGH ST,PALO ALTO,94301
+2015-07-08T20:05:00Z,N&D/UNDER INFLUENCE (11550),500 Block HIGH ST,PALO ALTO,94301
+2015-07-08T20:05:00Z,PSYCH SUBJECT (5150),500 Block HIGH ST,PALO ALTO,94301
+2015-07-08T20:05:00Z,N&D/MISC (N&DMISC),500 Block HIGH ST,PALO ALTO,94301
+2015-07-08T20:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),600 Block OREGON EXPY,PALO ALTO,94306
+2015-07-08T20:30:00Z,FOUND PROPERTY/MISC (FOUND),600 Block ARASTRADERO RD,PALO ALTO,94306
+2015-07-08T21:23:00Z,TRAFFIC/SUSPENDED LICENSE (14601),400 Block MONROE DR,PALO ALTO,94306
+2015-07-08T22:31:00Z,WARRANT/OTHER AGENCY (OWARRANT),SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2015-07-08T23:20:00Z,PROWLER/MISC (647G),1000 Block MOFFETT CIR,PALO ALTO,94303
+2015-07-09T00:00:00Z,VANDALISM/MISDEMEANOR (594M),4000 Block VERDOSA DR,PALO ALTO,94306
+2015-07-09T02:49:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-09T03:16:00Z,N&D/PARAPHERNALIA (11364),BRYANT ST & HOMER AV,PALO ALTO,94301
+2015-07-09T05:00:00Z,ARSON/MISC (451M),500 Block HIGH ST,PALO ALTO,94301
+2015-07-09T08:42:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block ARASTRADERO RD,PALO ALTO,94306
+2015-07-09T09:00:00Z,PSYCH SUBJECT (5150),2700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-09T09:26:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MIDDLEFIELD RD & HAWTHORNE AV,PALO ALTO,94301
+2015-07-09T09:44:00Z,TRAFFIC/SUSPENDED LICENSE (14601),700 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-09T10:35:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),N CALIFORNIA AV & ALMA ST,PALO ALTO,94301
+2015-07-09T11:06:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block PASTEUR DR,PALO ALTO,94304
+2015-07-09T11:07:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),800 Block MELVILLE AV,PALO ALTO,94301
+2015-07-09T11:12:00Z,VEHICLE/RECOVERED (10851R),2200 Block RAMONA ST,PALO ALTO,94301
+2015-07-09T12:14:00Z,IDENTITY THEFT/CREDIT CARDS (530C),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-09T12:40:00Z,ACCIDENT PROPERTY DAMAGE (1182),3800 Block BLOCK PAGE MILL RD,PALO ALTO,""
+2015-07-09T12:53:00Z,WARRANT/OTHER AGENCY (OWARRANT),2200 Block RAMONA ST,PALO ALTO,94301
+2015-07-09T13:00:00Z,ACCIDENT MINOR INJURY (1181),3600 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-09T14:03:00Z,VANDALISM/MISDEMEANOR (594M),2200 Block YALE ST,PALO ALTO,94306
+2015-07-09T15:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & GRANT AV,PALO ALTO,94306
+2015-07-09T15:26:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),500 Block EMERSON ST,PALO ALTO,94301
+2015-07-09T15:42:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),800 Block ALTAIRE WK,PALO ALTO,94303
+2015-07-09T15:54:00Z,PENAL CODE/MISC (PENALMI),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-09T16:15:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-09T16:41:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),500 Block EMERSON ST,PALO ALTO,94301
+2015-07-09T16:55:00Z,TRAFFIC/MISC (TRAFMISC),EL CAMINO REAL & MIRAMONTE AV,PALO ALTO,94306
+2015-07-09T18:00:00Z,THEFT PETTY/MISC (488M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-09T18:00:00Z,CREDIT CARDS/FRAUDULENT USE (484G),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-09T18:44:00Z,ACCIDENT PROPERTY DAMAGE (1182),3700 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-09T19:15:00Z,N&D/POSSESSION (11350),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-09T19:15:00Z,N&D/MISC (N&DMISC),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-09T21:00:00Z,THEFT PETTY/MISC (488M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-09T21:30:00Z,THEFT PETTY/MISC (488M),600 Block EMERSON ST,PALO ALTO,94301
+2015-07-09T21:30:00Z,WARRANT/PALO ALTO (PWARRANT),600 Block EMERSON ST,PALO ALTO,94301
+2015-07-09T21:58:00Z,H&S/MISC (H&SMISC),ALMA ST & UNIVERSITY AV,PALO ALTO,94301
+2015-07-09T22:12:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-10T00:01:00Z,CHECKS/FORGERY (470),400 Block COWPER ST,PALO ALTO,94301
+2015-07-10T00:01:00Z,CHECKS/FORGERY (470),400 Block COWPER ST,PALO ALTO,94301
+2015-07-10T00:01:00Z,THEFT PETTY/MISC (488M),400 Block COWPER ST,PALO ALTO,94301
+2015-07-10T00:06:00Z,DUI ADULT/ACCIDENT (23152AA),PAGE MILL RD & MOODY RD,"",""
+2015-07-10T09:00:00Z,VEHICLE/STORED (22651T),LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2015-07-10T09:37:00Z,BURGLARY ATTEMPT/RESIDENTIAL (459RA),100 Block RINCONADA AV,PALO ALTO,94301
+2015-07-10T09:37:00Z,RESIST/OBSTRUCTING PUB OFFICER (148(A)(1)PC),100 Block RINCONADA AV,PALO ALTO,94301
+2015-07-10T09:37:00Z,BURGLARY ATTEMPT/RESIDENTIAL (459RA),100 Block RINCONADA AV,PALO ALTO,94301
+2015-07-10T10:00:00Z,CHECKS/FORGERY (470),3700 Block LINDERO DR,PALO ALTO,94306
+2015-07-10T10:45:00Z,BURGLARY/AUTO (459A),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-10T14:00:00Z,UNATTENDED DEATH/MISC (UNATTDEA),500 Block E MEADOW DR,PALO ALTO,94306
+2015-07-10T14:00:00Z,ACCIDENT MINOR INJURY (1181),2400 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-10T15:18:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LYTTON AV & ALMA ST,PALO ALTO,94301
+2015-07-10T15:45:00Z,THEFT GRAND/MISC (487M),700 Block NEWELL RD,PALO ALTO,94303
+2015-07-10T16:20:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),1600 Block BLOCK CASTILLEJA AV,PALO ALTO,94306
+2015-07-10T19:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-07-10T20:00:00Z,THEFT PETTY/FROM AUTO (488FA),700 Block JOSINA AV,PALO ALTO,94306
+2015-07-10T20:10:00Z,THEFT PETTY/FROM AUTO (488FA),2000 Block WILLIAMS ST,PALO ALTO,94306
+2015-07-10T22:20:00Z,PENAL CODE/TERRORIST THREATS (422),3000 Block EMERSON ST,PALO ALTO,94306
+2015-07-11T01:20:00Z,VEHICLE ATTEMPT/STOLEN (10851SA),3800 Block CORINA WAY,PALO ALTO,94303
+2015-07-11T02:27:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),RAMONA ST & HAMILTON AV,PALO ALTO,94301
+2015-07-11T06:30:00Z,VEHICLE/STOLEN (10851S),2000 Block WILLIAMS ST,PALO ALTO,94306
+2015-07-11T08:30:00Z,VANDALISM/FELONY (594F),900 Block WEBSTER ST,PALO ALTO,94301
+2015-07-11T08:30:00Z,VANDALISM/FELONY (594F),900 Block WEBSTER ST,PALO ALTO,94301
+2015-07-11T09:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),HWY 101 N & SAN ANTONIO RD,MOUNTAIN VIEW,""
+2015-07-11T10:30:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),1700 Block OAK CREEK DR,PALO ALTO,94304
+2015-07-11T11:00:00Z,BURGLARY/COMMERCIAL (459C),1900 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-11T12:20:00Z,ACCIDENT PROPERTY DAMAGE (1182),W CHARLESTON RD & EL CAMINO REAL,PALO ALTO,94306
+2015-07-11T14:00:00Z,FOUND PROPERTY/MISC (FOUND),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-11T16:26:00Z,FELONY HIT & RUN (20001),3500 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-11T16:26:00Z,POSSESS STOLEN PROP/MISC (496),3600 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-11T16:26:00Z,OUTSIDE WARRANT (O/W-MISD),3500 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-11T17:18:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block COWPER ST,PALO ALTO,94301
+2015-07-11T17:30:00Z,THEFT GRAND/FROM AUTO (487FA),800 Block RICHARDSON CT,PALO ALTO,94303
+2015-07-11T19:07:00Z,VANDALISM/MISDEMEANOR (594M),500 Block WEBSTER ST,PALO ALTO,94301
+2015-07-11T20:00:00Z,BURGLARY/RESIDENTIAL (459R),400 Block OXFORD AV,PALO ALTO,94306
+2015-07-11T21:37:00Z,PENAL CODE/DISOBEY COURT ORDER (66),900 Block WEBSTER ST,PALO ALTO,94301
+2015-07-11T22:11:00Z,VEHICLE/STORED (22651T),3000 Block EMERSON ST,PALO ALTO,94306
+2015-07-12T00:28:00Z,VEHICLE/IMPOUNDED (22651),4500 Block EL CAMINO REAL,"",""
+2015-07-12T00:30:00Z,SICK & CARED FOR/MISC (1053M),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-12T01:56:00Z,FOUND PROPERTY/MISC (FOUND),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-12T02:54:00Z,DUI ADULT/MISC (23152AM),400 Block CHANNING AV,PALO ALTO,94301
+2015-07-12T08:15:00Z,VANDALISM/MISDEMEANOR (594M),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-12T08:15:00Z,VANDALISM/MISDEMEANOR (594M),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-12T09:00:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),YOSEMITE NATIONAL PARK,"",""
+2015-07-12T10:37:00Z,POSSESS STOLEN PROP/MISC (496),400 Block LYTTON AV,PALO ALTO,94301
+2015-07-12T10:37:00Z,PENAL CODE/MISC (PENALMI),400 Block LYTTON AV,PALO ALTO,94301
+2015-07-12T11:10:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block PASTEUR DR,PALO ALTO,94304
+2015-07-12T16:54:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block KIPLING ST,PALO ALTO,94301
+2015-07-12T17:36:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-12T20:40:00Z,ANIMAL/MISC (ANIMALMI),500 Block GREER RD,PALO ALTO,94303
+2015-07-12T22:30:00Z,VANDALISM/MISDEMEANOR (594M),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-12T22:38:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-12T23:24:00Z,DUI ADULT/ACCIDENT (23152AA),4300 Block PAGE MILL RD,PALO ALTO,""
+2015-07-13T07:47:00Z,VANDALISM/MISDEMEANOR (594M),2200 Block YALE ST,PALO ALTO,94306
+2015-07-13T08:00:00Z,IDENTITY THEFT/FRAUD (530F),4100 Block PARK BLVD,PALO ALTO,94306
+2015-07-13T09:28:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-13T10:15:00Z,TRAFFIC/SUSPENDED LICENSE (14601),PAGE MILL RD & ASH ST,PALO ALTO,94306
+2015-07-13T10:15:00Z,BURGLARY/AUTO (459A),2000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-13T10:15:00Z,BURGLARY/AUTO (459A),500 Block STANFORD AV,PALO ALTO,94306
+2015-07-13T10:22:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),600 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-13T10:28:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-13T11:21:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),1000 Block PAGE MILL RD,PALO ALTO,94304
+2015-07-13T11:25:00Z,ARSON/STRUCTURE (451S),100 Block HAWTHORNE AV,PALO ALTO,94301
+2015-07-13T11:58:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),800 Block ALTAIRE WK,PALO ALTO,94303
+2015-07-13T13:41:00Z,TRAFFIC/EVADE (2800),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-13T13:41:00Z,TRAFFIC/MISC (TRAFMISC),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-13T14:25:00Z,THEFT PETTY/MISC (488M),3400 Block HILLVIEW AV,PALO ALTO,94304
+2015-07-13T14:25:00Z,THEFT GRAND/MISC (487M),3400 Block HILLVIEW AV,PALO ALTO,94304
+2015-07-13T16:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),800 Block CHANNING AV,PALO ALTO,94301
+2015-07-13T16:49:00Z,N&D/PARAPHERNALIA (11364),SAND HILL RD & EL CAMINO REAL,PALO ALTO,94304
+2015-07-13T17:18:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-13T17:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-13T18:00:00Z,MUNI CODE/MISC (1090MISC),700 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-13T18:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-13T18:30:00Z,VEHICLE/STORED (22651T),300 Block CURTNER AV,PALO ALTO,94306
+2015-07-13T21:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),900 Block EMBARCADERO RD,PALO ALTO,94303
+2015-07-13T21:03:00Z,TRAFFIC/SUSPENDED LICENSE (14601),PAGE MILL RD & EL CAMINO REAL,PALO ALTO,94306
+2015-07-13T21:39:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),500 Block EMERSON ST,PALO ALTO,94301
+2015-07-13T21:40:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-13T21:42:00Z,N&D/UNDER INFLUENCE (11550),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-14T00:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-07-14T00:24:00Z,F&W/CONCEALED WEAPON (12020),UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-07-14T00:24:00Z,PSYCH SUBJECT (5150),UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-07-14T01:05:00Z,PROWLER/MISC (647G),200 Block EMERSON ST,PALO ALTO,94301
+2015-07-14T09:10:00Z,ACCIDENT MINOR INJURY (1181),500 Block COWPER ST,PALO ALTO,94301
+2015-07-14T09:54:00Z,THEFT PETTY/SHOPLIFT (488S),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-14T10:33:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block LYTTON AV,PALO ALTO,94301
+2015-07-14T10:44:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),2300 Block WILLIAMS ST,PALO ALTO,94306
+2015-07-14T10:46:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),2300 Block WILLIAMS ST,PALO ALTO,94306
+2015-07-14T13:35:00Z,VEHICLE/STORED (22651T),4100 Block COULOMBE DR,PALO ALTO,94306
+2015-07-14T14:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block HIGH ST,PALO ALTO,94301
+2015-07-14T15:41:00Z,IDENTITY THEFT/FRAUD (530F),1300 Block EMERSON ST,PALO ALTO,94301
+2015-07-14T15:42:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),700 Block ALMA ST,PALO ALTO,94301
+2015-07-14T16:43:00Z,ACCIDENT PROPERTY DAMAGE (1182),200 Block FOREST AV,PALO ALTO,94301
+2015-07-14T17:22:00Z,ACCIDENT MINOR INJURY (1181),CHANNING AV & EMERSON ST,PALO ALTO,94301
+2015-07-14T17:34:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),UNIVERSITY AV & WAVERLEY ST,PALO ALTO,94301
+2015-07-14T17:47:00Z,N&D/POSSESSION (11350),UNIVERSITY AV & ALMA ST,PALO ALTO,94301
+2015-07-14T17:47:00Z,VANDALISM/MISDEMEANOR (594M),UNIVERSITY AV & ALMA ST,PALO ALTO,94301
+2015-07-14T17:47:00Z,N&D/PARAPHERNALIA (11364),UNIVERSITY AV & ALMA ST,PALO ALTO,94301
+2015-07-14T17:47:00Z,N&D/UNDER INFLUENCE (11550),UNIVERSITY AV & ALMA ST,PALO ALTO,94301
+2015-07-14T17:47:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-14T17:49:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-14T18:00:00Z,VEHICLE/STOLEN (10851S),900 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-14T18:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-14T18:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-14T19:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-14T19:32:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-14T20:56:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-14T21:34:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY AV & WOODLAND AV,"",94303
+2015-07-14T21:34:00Z,WARRANT/OTHER AGENCY (OWARRANT),UNIVERSITY AV & WOODLAND AV,"",94303
+2015-07-14T21:38:00Z,N&D/PARAPHERNALIA (11364),500 Block HIGH ST,PALO ALTO,94301
+2015-07-14T21:38:00Z,N&D/UNDER INFLUENCE (11550),500 Block HIGH ST,PALO ALTO,94301
+2015-07-14T21:38:00Z,PENAL CODE/MISC (PENALMI),500 Block HIGH ST,PALO ALTO,94301
+2015-07-14T23:00:00Z,WARRANT/OTHER AGENCY (OWARRANT),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-07-14T23:00:00Z,N&D/POSSESSION (11350),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-07-14T23:00:00Z,WARRANT/OTHER AGENCY (OWARRANT),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-07-15T01:32:00Z,WARRANT/OTHER AGENCY (OWARRANT),SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2015-07-15T02:45:00Z,N&D/POSSESSION (11350),LAGUNA AV & LAGUNA CT,PALO ALTO,94306
+2015-07-15T09:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),300 Block COLLEGE AV,PALO ALTO,94306
+2015-07-15T09:14:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-07-15T10:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),ALMA ST & N CALIFORNIA AV,PALO ALTO,94301
+2015-07-15T10:57:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-15T12:00:00Z,IDENTITY THEFT/FRAUD (530F),100 Block COLERIDGE AV,PALO ALTO,94301
+2015-07-15T12:37:00Z,FALSE PERSONATION (529PC),3400 Block CORK OAK WAY,PALO ALTO,94303
+2015-07-15T12:37:00Z,THEFT PETTY/MISC (488M),3400 Block CORK OAK WAY,PALO ALTO,94303
+2015-07-15T12:37:00Z,FALSE PERSONATION (529PC),3400 Block CORK OAK WAY,PALO ALTO,94303
+2015-07-15T12:44:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),700 Block LOMA VERDE AV,PALO ALTO,94303
+2015-07-15T12:55:00Z,VEHICLE/STORED (22651T),2200 Block WILLIAMS ST,PALO ALTO,94306
+2015-07-15T13:50:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block COWPER ST,PALO ALTO,94301
+2015-07-15T14:31:00Z,BICYCLE/SAFEKEEPING (IMPOBIKE),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-15T14:40:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-15T17:00:00Z,BURGLARY/RESIDENTIAL (459R),2800 Block SOUTH CT,PALO ALTO,94306
+2015-07-15T18:09:00Z,BURGLARY/AUTO (459A),3600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-15T18:40:00Z,BURGLARY/AUTO (459A),1900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-15T19:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-15T19:10:00Z,ACCIDENT PROPERTY DAMAGE (1182),200 Block CURTNER AV,PALO ALTO,94306
+2015-07-15T19:10:00Z,MISDEMEANOR/HIT & RUN (20002),200 Block CURTNER AV,PALO ALTO,94306
+2015-07-15T22:27:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-15T22:52:00Z,N&D/PARAPHERNALIA (11364),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-15T22:52:00Z,N&D/POSSESS/SALES (11378),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-15T22:52:00Z,N&D/UNDER INFLUENCE (11550),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-16T00:00:00Z,CREDIT CARDS/FRAUDULENT USE (484G),700 Block TORREYA CT,PALO ALTO,94303
+2015-07-16T00:00:00Z,CREDIT CARDS/FRAUDULENT USE (484G),700 Block TORREYA CT,PALO ALTO,94303
+2015-07-16T00:00:00Z,THEFT PETTY/MISC (488M),700 Block TORREYA CT,PALO ALTO,94303
+2015-07-16T00:46:00Z,TRAFFIC/SUSPENDED LICENSE (14601),CHAUCER ST & UNIVERSITY AV,PALO ALTO,94301
+2015-07-16T01:54:00Z,DUI ADULT/MISC (23152AM),200 Block LOMA VERDE AV,PALO ALTO,94306
+2015-07-16T06:30:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-16T06:55:00Z,PENAL CODE/MISC (PENALMI),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-16T07:01:00Z,PENAL CODE/MISC (PENALMI),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-16T07:20:00Z,TRAFFIC/MISC (TRAFMISC),2600 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-16T08:25:00Z,B&P/MISC (B&PMISC),RYAN LN & MONROE DR,PALO ALTO,94306
+2015-07-16T08:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),WEBSTER ST & EMBARCADERO RD,PALO ALTO,94301
+2015-07-16T09:21:00Z,ACCIDENT PROPERTY DAMAGE (1182),1900 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94301
+2015-07-16T10:07:00Z,ACCIDENT MINOR INJURY (1181),4200 Block BLOCK ALMA ST,PALO ALTO,94306
+2015-07-16T10:28:00Z,ACCIDENT PROPERTY DAMAGE (1182),2200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-07-16T10:28:00Z,MISDEMEANOR/HIT & RUN (20002),2200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-07-16T10:37:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block E CHARLESTON RD,PALO ALTO,94306
+2015-07-16T11:05:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1800 Block OAK CREEK DR,PALO ALTO,94304
+2015-07-16T12:15:00Z,N&D/POSSESSION (11350),500 Block FOREST AV,PALO ALTO,94301
+2015-07-16T12:15:00Z,H&S/MISC (H&SMISC),500 Block FOREST AV,PALO ALTO,94301
+2015-07-16T13:45:00Z,THEFT PETTY/MISC (488M),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-16T13:50:00Z,MUNI CODE/SOLICIT W/O PERMIT (1090SWOP),EL CAMINO REAL & SAND HILL RD,PALO ALTO,94304
+2015-07-16T16:15:00Z,CREDIT CARDS/FRAUDULENT USE (484G),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-16T16:20:00Z,BURGLARY/AUTO (459A),1500 Block WEBSTER ST,PALO ALTO,94301
+2015-07-16T17:40:00Z,WARRANT/OTHER AGENCY (OWARRANT),COWPER ST & LYTTON AV,PALO ALTO,94301
+2015-07-16T19:00:00Z,BURGLARY/AUTO (459A),500 Block WEBSTER ST,PALO ALTO,94301
+2015-07-16T20:00:00Z,N&D/POSSESS/TRANSPORT (11379),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-16T20:00:00Z,N&D/UNDER INFLUENCE (11550),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-16T20:00:00Z,PENAL CODE/RESISTING ARREST (148RA),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-16T20:00:00Z,B&P/MISC (B&PMISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-16T20:00:00Z,N&D/POSSESSION (11350),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-16T21:00:00Z,THEFT PETTY/FROM AUTO (488FA),1200 Block EMERSON ST,PALO ALTO,94301
+2015-07-16T21:26:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-17T03:45:00Z,PSYCH SUBJECT (5150),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-17T05:11:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1600 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-07-17T06:47:00Z,FOUND PROPERTY/MISC (FOUND),2100 Block BARBARA DR,PALO ALTO,94303
+2015-07-17T07:18:00Z,ACCIDENT MINOR INJURY (1181),3500 Block BLOCK PAGE MILL RD,PALO ALTO,""
+2015-07-17T09:46:00Z,ACCIDENT MINOR INJURY (1181),1500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-17T09:46:00Z,FELONY HIT & RUN (20001),1500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-17T10:06:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),700 Block EMERSON ST,PALO ALTO,94301
+2015-07-17T10:40:00Z,ACCIDENT PROPERTY DAMAGE (1182),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-07-17T10:45:00Z,VANDALISM/MISDEMEANOR (594M),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-07-17T10:45:00Z,VANDALISM/MISDEMEANOR (594M),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-07-17T11:23:00Z,VEHICLE/STORED (22651T),200 Block ADDISON AV,PALO ALTO,94301
+2015-07-17T12:36:00Z,BURGLARY/SHOPLIFT (459S),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-17T12:36:00Z,BURGLARY/SHOPLIFT (459S),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-17T12:50:00Z,THEFT GRAND/SHOPLIFT (487S),500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-17T14:08:00Z,TRAFFIC/MISC (TRAFMISC),400 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-07-17T15:00:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),1900 Block W BAYSHORE RD,PALO ALTO,94303
+2015-07-17T16:10:00Z,ACCIDENT MINOR INJURY (1181),HAMILTON AV & LINCOLN AV,PALO ALTO,94301
+2015-07-17T16:23:00Z,TRAFFIC/SUSPENDED LICENSE (14601),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-17T16:35:00Z,WARRANT/OTHER AGENCY (OWARRANT),3800 Block MIRANDA AV,PALO ALTO,94304
+2015-07-17T17:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-07-17T17:18:00Z,SICK & CARED FOR/MISC (1053M),200 Block QUARRY RD,PALO ALTO,94304
+2015-07-17T19:11:00Z,FOUND PROPERTY/MISC (FOUND),ALMA ST & SAN ANTONIO RD,PALO ALTO,94306
+2015-07-17T21:35:00Z,TRAFFIC/SUSPENDED LICENSE (14601),W BAYSHORE RD & OREGON EXPY,PALO ALTO,94303
+2015-07-17T22:30:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),2900 Block BRYANT ST,PALO ALTO,94306
+2015-07-18T00:28:00Z,WARRANT/OTHER AGENCY (OWARRANT),700 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-18T00:46:00Z,BATTERY/SIMPLE (242SB),500 Block RAMONA ST,PALO ALTO,94301
+2015-07-18T02:48:00Z,DUI ADULT/MISC (23152AM),200 Block HAMILTON AV,PALO ALTO,94301
+2015-07-18T04:05:00Z,DUI ADULT/MISC (23152AM),HWY 101 S & SAN ANTONIO RD,MOUNTAIN VIEW,""
+2015-07-18T04:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),HWY 101 S & SAN ANTONIO RD,MOUNTAIN VIEW,""
+2015-07-18T07:20:00Z,ACCIDENT MINOR INJURY (1181),100 Block EL CAMINO REAL,PALO ALTO,""
+2015-07-18T09:30:00Z,THEFT GRAND/FROM AUTO (487FA),300 Block HAMILTON AV,PALO ALTO,94301
+2015-07-18T09:49:00Z,ACCIDENT MINOR INJURY (1181),EL CAMINO REAL & PORTAGE AV,PALO ALTO,94306
+2015-07-18T10:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2300 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94301
+2015-07-18T11:00:00Z,BURGLARY ATTEMPT/AUTO (459AA),500 Block COWPER ST,PALO ALTO,94301
+2015-07-18T12:20:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-07-18T14:29:00Z,TRAFFIC/MISC (TRAFMISC),ALMA ST & WASHINGTON AV,PALO ALTO,94301
+2015-07-18T14:45:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-18T15:25:00Z,N&D/UNDER INFLUENCE (11550),3200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-18T15:25:00Z,N&D/PARAPHERNALIA (11364),3200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-18T15:46:00Z,ACCIDENT MINOR INJURY (1181),100 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-07-18T17:00:00Z,THEFT PETTY/AUTO ACCESSORY (488A),3600 Block LUPINE AV,PALO ALTO,94303
+2015-07-18T19:12:00Z,TRAFFIC/SUSPENDED LICENSE (14601),HIGH ST & HOMER AV,PALO ALTO,94301
+2015-07-18T20:20:00Z,BURGLARY ATTEMPT/AUTO (459AA),300 Block SHERMAN AV,PALO ALTO,94306
+2015-07-18T20:29:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1700 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-07-18T20:30:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-18T20:30:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-18T21:00:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-07-18T21:00:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-07-18T21:24:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1100 Block EMBARCADERO RD,PALO ALTO,94303
+2015-07-18T21:30:00Z,THEFT PETTY/AUTO ACCESSORY (488A),3600 Block LUPINE AV,PALO ALTO,94303
+2015-07-18T21:30:00Z,THEFT PETTY ATT/ AUTO ACCESSOR (488AA),3600 Block LUPINE AV,PALO ALTO,94303
+2015-07-18T21:45:00Z,ACCIDENT MINOR INJURY (1181),200 Block QUARRY RD,PALO ALTO,94304
+2015-07-18T23:15:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3200 Block MIRANDA AV,PALO ALTO,94304
+2015-07-18T23:30:00Z,PSYCH SUBJECT (5150),100 Block ECR,PALO ALTO,94304
+2015-07-19T00:47:00Z,WARRANT/OTHER AGENCY (OWARRANT),1400 Block BLOCK HAMILTON AV,PALO ALTO,94301
+2015-07-19T02:11:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-19T02:26:00Z,DUI ADULT/MISC (23152AM),ALMA ST & E MEADOW DR,PALO ALTO,94306
+2015-07-19T02:45:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-19T03:17:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-19T08:18:00Z,DUI ADULT/ACCIDENT (23152AA),2800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-19T08:18:00Z,MISDEMEANOR/HIT & RUN (20002),2800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-19T08:18:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),2800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-19T09:00:00Z,FOUND PROPERTY/MISC (FOUND),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-19T12:00:00Z,F&W/MISC (F&WMISC),700 Block PALO ALTO AV,PALO ALTO,94301
+2015-07-19T12:00:00Z,IDENTITY THEFT/MISC. (530M),2500 Block GREER RD,PALO ALTO,94303
+2015-07-19T13:10:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & ARASTRADERO RD,PALO ALTO,94306
+2015-07-19T14:00:00Z,BICYCLE/SAFEKEEPING (IMPOBIKE),200 Block EVERETT AV,PALO ALTO,94301
+2015-07-19T15:12:00Z,N&D/POSSESSION (11350),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-19T15:12:00Z,PENAL CODE/MISC (PENALMI),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-19T16:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),200 Block EVERETT AV,PALO ALTO,94301
+2015-07-19T16:00:00Z,POSSESS STOLEN PROP/MISC (496),200 Block EVERETT AV,PALO ALTO,94301
+2015-07-19T16:40:00Z,BATTERY/SIMPLE (242SB),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-19T17:00:00Z,BURGLARY/AUTO (459A),2300 Block GREER RD,PALO ALTO,94303
+2015-07-19T17:15:00Z,VEHICLE/STORED (22651T),1400 Block EDGEWOOD DR,PALO ALTO,94301
+2015-07-19T18:31:00Z,N&D/UNDER INFLUENCE (11550),500 Block HIGH ST,PALO ALTO,94301
+2015-07-19T22:30:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-20T00:00:00Z,LOST PROPERTY/MISC (LOST),600 Block COLLEGE AV,PALO ALTO,94306
+2015-07-20T00:01:00Z,IDENTITY THEFT/FRAUD (530F),600 Block CENTER DR,PALO ALTO,94301
+2015-07-20T02:10:00Z,WARRANT/OTHER AGENCY (OWARRANT),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-20T03:41:00Z,PENAL CODE/MISC (PENALMI),4100 Block CLEMO AV,PALO ALTO,94306
+2015-07-20T06:10:00Z,N&D/POSSESS/SALES (11378),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-20T06:10:00Z,N&D/PARAPHERNALIA (11364),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-20T08:45:00Z,TRAFFIC/SUSPENDED LICENSE (14601),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-20T08:50:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),700 Block DE SOTO DR,PALO ALTO,94303
+2015-07-20T09:40:00Z,VEHICLE/STORED (22651T),3000 Block EMERSON ST,PALO ALTO,94306
+2015-07-20T09:50:00Z,UNLICENSED DRIVER (12500(A)VC),UNIVERSITY AV & FLORENCE ST,PALO ALTO,94301
+2015-07-20T10:30:00Z,F&W/DISPOSAL REQUEST (F&WDISPS),200 Block FOREST AV,PALO ALTO,94301
+2015-07-20T10:44:00Z,TRAFFIC/SUSPENDED LICENSE (14601),200 Block FOREST AV,PALO ALTO,94301
+2015-07-20T12:00:00Z,IDENTITY THEFT/MISC. (530M),1800 Block CHANNING AV,PALO ALTO,94303
+2015-07-20T12:00:00Z,IDENTITY THEFT/MISC. (530M),1800 Block CHANNING AV,PALO ALTO,94303
+2015-07-20T12:35:00Z,VEHICLE/STORED (22651T),4100 Block GEORGIA AV,PALO ALTO,94306
+2015-07-20T13:20:00Z,VEHICLE/STORED (22651T),4100 Block GEORGIA AV,PALO ALTO,94306
+2015-07-20T13:21:00Z,VEHICLE/STOLEN (10851S),800 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-07-20T13:21:00Z,VEHICLE/STOLEN (10851S),800 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-07-20T15:10:00Z,VEHICLE/STORED (22651T),600 Block MELVILLE AV,PALO ALTO,94301
+2015-07-20T16:43:00Z,POSSESS STOLEN PROP/MISC (496),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-07-20T17:44:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-20T17:45:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-20T18:30:00Z,BURGLARY ATTEMPT/AUTO (459AA),400 Block LYTTON AV,PALO ALTO,94301
+2015-07-20T18:30:00Z,VANDALISM/FELONY (594F),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-20T20:15:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-20T20:15:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-20T20:15:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-20T20:33:00Z,F&W/BRANDISHING (417),600 Block SAND HILL RD,PALO ALTO,94304
+2015-07-20T20:33:00Z,PENAL CODE/RESISTING ARREST (148RA),600 Block SAND HILL RD,PALO ALTO,94304
+2015-07-20T20:33:00Z,PSYCH SUBJECT (5150),600 Block SAND HILL RD,PALO ALTO,94304
+2015-07-20T20:33:00Z,PENAL CODE/MISC (PENALMI),600 Block SAND HILL RD,PALO ALTO,94304
+2015-07-20T20:50:00Z,BURGLARY/AUTO (459A),400 Block LYTTON AV,PALO ALTO,94301
+2015-07-20T20:50:00Z,BURGLARY/AUTO (459A),400 Block LYTTON AV,PALO ALTO,94301
+2015-07-20T21:00:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-20T21:00:00Z,PENAL CODE/MISC (PENALMI),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-20T21:09:00Z,ANIMAL/MISC (ANIMALMI),1000 Block AMARILLO AV,PALO ALTO,94303
+2015-07-20T21:24:00Z,VANDALISM/FELONY (594F),400 Block LYTTON AV,PALO ALTO,94301
+2015-07-21T09:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),MARION AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-07-21T09:45:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & EVERETT AV,PALO ALTO,94301
+2015-07-21T12:57:00Z,BURGLARY/COMMERCIAL (459C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-21T13:20:00Z,BURGLARY/COMMERCIAL (459C),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-21T13:21:00Z,TRAFFIC/MISC (TRAFMISC),MCKELLAR LN & ARASTRADERO RD,PALO ALTO,94306
+2015-07-21T13:30:00Z,THEFT PETTY/MISC (488M),400 Block WEBSTER ST,PALO ALTO,94301
+2015-07-21T14:15:00Z,THEFT PETTY/FROM AUTO (488FA),300 Block ELY PL,PALO ALTO,94306
+2015-07-21T14:15:00Z,MISDEMEANOR/HIT & RUN (20002),400 Block PAGE MILL RD,PALO ALTO,94306
+2015-07-21T15:07:00Z,ACCIDENT MINOR INJURY (1181),300 Block BYRON ST,PALO ALTO,94301
+2015-07-21T15:21:00Z,ACCIDENT MINOR INJURY (1181),2000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-21T15:30:00Z,BURGLARY ATTEMPT/RESIDENTIAL (459RA),3800 Block CARLSON CT,PALO ALTO,94306
+2015-07-21T16:05:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-21T16:20:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-21T17:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),500 Block RAMONA ST,PALO ALTO,94301
+2015-07-21T17:24:00Z,THEFT GRAND/SCAM (487SCAM),2700 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-07-21T17:40:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-21T18:30:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-22T00:35:00Z,N&D/POSSESSION (11350),4300 Block CESANO CT,MOUNTAIN VIEW,94306
+2015-07-22T00:35:00Z,PENAL CODE/MISC (PENALMI),4300 Block CESANO CT,MOUNTAIN VIEW,94306
+2015-07-22T01:39:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & EMBARCADERO RD,PALO ALTO,94303
+2015-07-22T02:14:00Z,DUI ADULT/MISC (23152AM),EMERSON ST & UNIVERSITY AV,PALO ALTO,94301
+2015-07-22T02:53:00Z,FOUND PROPERTY/MISC (FOUND),500 Block HIGH ST,PALO ALTO,94301
+2015-07-22T08:00:00Z,BURGLARY/RESIDENTIAL (459R),3100 Block GENEVIEVE CT,PALO ALTO,94303
+2015-07-22T08:10:00Z,CASUALTY/FALL (CASUALFA),800 Block E CHARLESTON RD,PALO ALTO,94303
+2015-07-22T09:29:00Z,ACCIDENT MINOR INJURY (1181),QUARRY RD & VINEYARD LN,PALO ALTO,94304
+2015-07-22T09:57:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),300 Block PASTEUR DR,PALO ALTO,94304
+2015-07-22T10:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3700 Block REDWOOD CIR,PALO ALTO,94306
+2015-07-22T11:30:00Z,THEFT GRAND/MISC (487M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-22T11:52:00Z,LOST PROPERTY/MISC (LOST),200 Block FOREST AV,PALO ALTO,94301
+2015-07-22T14:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1000 Block TANLAND DR,PALO ALTO,94303
+2015-07-22T15:45:00Z,THEFT PETTY/MISC (488M),100 Block FOREST AV,PALO ALTO,94301
+2015-07-22T15:45:00Z,CREDIT CARDS/FRAUDULENT USE (484G),100 Block FOREST AV,PALO ALTO,94301
+2015-07-22T15:45:00Z,IDENTITY THEFT/CREDIT CARDS (530C),100 Block FOREST AV,PALO ALTO,94301
+2015-07-22T15:45:00Z,THEFT PETTY/MISC (488M),100 Block FOREST AV,PALO ALTO,94301
+2015-07-22T16:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-22T16:34:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY AV & FLORENCE ST,PALO ALTO,94301
+2015-07-22T16:38:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-22T19:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-07-22T19:06:00Z,ACCIDENT MINOR INJURY (1181),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-22T20:07:00Z,N&D/POSSESSION (11350),NEWELL RD & EDGEWOOD DR,PALO ALTO,94303
+2015-07-22T22:30:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),2300 Block WILLIAMS ST,PALO ALTO,94306
+2015-07-22T23:20:00Z,DUI ADULT/MISC (23152AM),SAN ANTONIO RD & MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-23T02:54:00Z,WARRANT/OTHER AGENCY (OWARRANT),SAN ANTONIO RD & FAYETTE DR,MOUNTAIN VIEW,""
+2015-07-23T04:47:00Z,PROWLER/MISC (647G),500 Block VISTA AV,PALO ALTO,94306
+2015-07-23T05:30:00Z,PENAL CODE/RESISTING ARREST (148RA),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-23T05:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-23T05:30:00Z,PROWLER/MISC (647G),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-23T06:45:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),2100 Block WELLESLEY ST,PALO ALTO,94306
+2015-07-23T07:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),200 Block COLLEGE AV,PALO ALTO,94306
+2015-07-23T07:30:00Z,EMBEZZLEMENT/MISC (503M),800 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-07-23T09:00:00Z,SICK & CARED FOR/MISC (1053M),1700 Block FULTON ST,PALO ALTO,94303
+2015-07-23T11:00:00Z,THEFT PETTY/FROM AUTO (488FA),1300 Block HARKER AV,PALO ALTO,94301
+2015-07-23T13:42:00Z,TRAFFIC/MISC (TRAFMISC),W MEADOW DR & WILKIE WAY,PALO ALTO,94306
+2015-07-23T14:30:00Z,LOST PROPERTY/MISC (LOST),700 Block EMERSON ST,PALO ALTO,94301
+2015-07-23T14:30:00Z,THEFT GRAND/MISC (487M),700 Block EMERSON ST,PALO ALTO,94301
+2015-07-23T17:35:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-23T17:36:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),LYTTON AV & EMERSON ST,PALO ALTO,94301
+2015-07-23T18:05:00Z,PENAL CODE/MISC (PENALMI),200 Block LYTTON AV,PALO ALTO,94301
+2015-07-23T19:00:00Z,BURGLARY/RESIDENTIAL (459R),3800 Block MAGNOLIA DR,PALO ALTO,94306
+2015-07-23T19:32:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-23T19:37:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-23T19:53:00Z,MUNI CODE/MISC (1090MISC),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-23T20:15:00Z,BURGLARY/COMMERCIAL (459C),100 Block PARK AV,PALO ALTO,94306
+2015-07-23T20:15:00Z,THEFT GRAND/AUTO ACCESSORY (487A),3100 Block PARK BLVD,PALO ALTO,94306
+2015-07-23T20:53:00Z,ROBBERY/STRONG ARM (211SA),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-23T21:07:00Z,PSYCH SUBJECT (5150),500 Block LYTTON AV,PALO ALTO,94301
+2015-07-23T21:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),3900 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-07-23T23:06:00Z,TRAFFIC/SUSPENDED LICENSE (14601),900 Block E CHARLESTON RD,PALO ALTO,94303
+2015-07-23T23:14:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),700 Block N CALIFORNIA AV,PALO ALTO,94303
+2015-07-24T00:13:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-24T00:30:00Z,N&D/UNDER INFLUENCE (11550),3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-24T00:30:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-24T00:30:00Z,PENAL CODE/RESISTING ARREST (148RA),3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-24T03:34:00Z,DUI ADULT/MISC (23152AM),JUNIPERO SERRA BLVD & PAGE MILL RD,STANFORD,94304
+2015-07-24T06:16:00Z,TRAFFIC/SUSPENDED LICENSE (14601),NEWELL RD & EMBARCADERO RD,PALO ALTO,94303
+2015-07-24T06:45:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block LYTTON AV,PALO ALTO,94301
+2015-07-24T08:45:00Z,PENAL CODE/MISC (PENALMI),1300 Block NEWELL RD,PALO ALTO,94303
+2015-07-24T10:00:00Z,LOST PROPERTY/MISC (LOST),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-24T11:36:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-24T12:27:00Z,ACCIDENT PROPERTY DAMAGE (1182),ENCINA AV,PALO ALTO,94301
+2015-07-24T13:20:00Z,BURGLARY/SHOPLIFT (459S),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-24T13:20:00Z,BURGLARY/SHOPLIFT (459S),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-24T14:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),300 Block PASTEUR DR,PALO ALTO,94304
+2015-07-24T14:44:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-24T16:13:00Z,MISDEMEANOR/HIT & RUN (20002),600 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-07-24T16:13:00Z,MISDEMEANOR/HIT & RUN (20002),600 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-07-24T16:14:00Z,ACCIDENT MINOR INJURY (1181),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-24T16:30:00Z,BURGLARY/COMMERCIAL (459C),3200 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-07-24T16:42:00Z,ACCIDENT MINOR INJURY (1181),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-24T17:00:00Z,MISSING ADULT/MISC (1065A),200 Block COLORADO AV,PALO ALTO,94301
+2015-07-24T17:00:00Z,MISDEMEANOR/HIT & RUN (20002),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-24T17:00:00Z,PSYCH SUBJECT (5150),200 Block COLORADO AV,PALO ALTO,94301
+2015-07-24T19:00:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-07-24T19:00:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-07-24T20:00:00Z,BURGLARY/AUTO (459A),BIRCH ST & SHERMAN AV,PALO ALTO,94306
+2015-07-24T20:15:00Z,BURGLARY/AUTO (459A),3700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-24T20:15:00Z,BURGLARY/AUTO (459A),3200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-24T20:30:00Z,BURGLARY/AUTO (459A),200 Block SHERMAN AV,PALO ALTO,94306
+2015-07-24T21:00:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-07-24T21:07:00Z,TRAFFIC/SUSPENDED LICENSE (14601),OREGON EXPY & HWY 101,PALO ALTO,94303
+2015-07-24T21:49:00Z,FOUND PROPERTY/MISC (FOUND),500 Block BRYANT ST,PALO ALTO,94301
+2015-07-24T23:00:00Z,DISTURB PEACE/MISC (415),3400 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-25T00:00:00Z,CREDIT CARDS/FRAUDULENT USE (484G),400 Block EMERSON ST,PALO ALTO,94301
+2015-07-25T00:00:00Z,CREDIT CARDS/FRAUDULENT USE (484G),400 Block EMERSON ST,PALO ALTO,94301
+2015-07-25T00:00:00Z,THEFT PETTY/MISC (488M),400 Block EMERSON ST,PALO ALTO,94301
+2015-07-25T02:47:00Z,DUI ADULT/MISC (23152AM),CENTER DR & UNIVERSITY AV,PALO ALTO,94301
+2015-07-25T02:58:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),UNIVERSITY AV & CENTER DR,PALO ALTO,94301
+2015-07-25T07:15:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-25T10:58:00Z,TRAFFIC/MISC (TRAFMISC),ALMA ST & N CALIFORNIA AV,PALO ALTO,94301
+2015-07-25T11:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),N CALIFORNIA AV & ALMA ST,PALO ALTO,94301
+2015-07-25T13:22:00Z,IDENTITY THEFT/CREDIT CARDS (530C),3400 Block WAVERLEY ST,PALO ALTO,94306
+2015-07-25T14:38:00Z,ACCIDENT MINOR INJURY (1181),1700 Block BLOCK UNIVERSITY AV,PALO ALTO,94301
+2015-07-25T15:31:00Z,N&D/PARAPHERNALIA (11364),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-25T18:00:00Z,THEFT PETTY/FROM AUTO (488FA),1100 Block AMARILLO AV,PALO ALTO,94303
+2015-07-25T20:23:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-25T20:29:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-07-25T20:50:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block FERNANDO AV,PALO ALTO,94306
+2015-07-25T21:30:00Z,BURGLARY/AUTO (459A),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-25T21:30:00Z,THEFT PETTY/FROM AUTO (488FA),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-25T22:15:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-25T22:38:00Z,N&D/UNDER INFLUENCE (11550),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-26T00:00:00Z,THEFT PETTY/FROM AUTO (488FA),1100 Block AMARILLO AV,PALO ALTO,94303
+2015-07-26T00:01:00Z,BURGLARY/AUTO (459A),3600 Block BRYANT ST,PALO ALTO,94306
+2015-07-26T00:01:00Z,THEFT PETTY/FROM AUTO (488FA),3600 Block BRYANT ST,PALO ALTO,94306
+2015-07-26T00:13:00Z,DUI ADULT/MISC (23152AM),1 Block CHURCHILL AV,PALO ALTO,94306
+2015-07-26T01:10:00Z,DUI ADULT/MISC (23152AM),2200 Block CALIFORNIA ST,MOUNTAIN VIEW,""
+2015-07-26T01:10:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),2200 Block CALIFORNIA ST,MOUNTAIN VIEW,""
+2015-07-26T02:00:00Z,THEFT GRAND/AUTO ACCESSORY (487A),1000 Block TANLAND DR,PALO ALTO,94303
+2015-07-26T02:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),1000 Block TANLAND DR,PALO ALTO,94303
+2015-07-26T02:09:00Z,TRAFFIC/SUSPENDED LICENSE (14601),500 Block RAMONA ST,PALO ALTO,94301
+2015-07-26T02:55:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block SENECA ST,PALO ALTO,94301
+2015-07-26T03:33:00Z,DUI ADULT/MISC (23152AM),SENECA ST & UNIVERSITY AV,PALO ALTO,94301
+2015-07-26T08:44:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-26T08:44:00Z,BICYCLE/RECOVERED (RECOBIKE),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-26T10:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),2200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-26T10:45:00Z,LOST PROPERTY/MISC (LOST),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-26T13:32:00Z,VEHICLE/STORED (22651T),3100 Block MORRIS DR,PALO ALTO,94303
+2015-07-26T17:18:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block EMERSON ST,PALO ALTO,94301
+2015-07-26T18:36:00Z,MUNI CODE/MISC (1090MISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-26T18:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-26T19:01:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-26T21:12:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-07-27T00:34:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),OREGON EXPY & HWY 101,PALO ALTO,94303
+2015-07-27T01:59:00Z,DUI ADULT/MISC (23152AM),JUNIPERO SERRA BLVD & PAGE MILL RD,STANFORD,94304
+2015-07-27T02:36:00Z,TRAFFIC/SUSPENDED LICENSE (14601),HANSEN WAY & EL CAMINO REAL,PALO ALTO,94306
+2015-07-27T03:31:00Z,MUNI CODE/MISC (1090MISC),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-27T08:10:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-07-27T08:11:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),500 Block HIGH ST,PALO ALTO,94301
+2015-07-27T08:43:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-27T09:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),UNIVERSITY AV & HIGH ST,PALO ALTO,94301
+2015-07-27T09:05:00Z,N&D/PARAPHERNALIA (11364),500 Block HIGH ST,PALO ALTO,94301
+2015-07-27T10:00:00Z,VEHICLE/STOLEN (10851S),700 Block WEBSTER ST,PALO ALTO,94301
+2015-07-27T11:00:00Z,BICYCLE/ABANDONED (ABANBIKE),400 Block PORTAGE AV,PALO ALTO,94306
+2015-07-27T14:16:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-07-27T15:00:00Z,THEFT PETTY/FROM AUTO (488FA),1200 Block PARKINSON AV,PALO ALTO,94301
+2015-07-27T15:00:00Z,IDENTITY THEFT/FRAUD (530F),1400 Block KINGS LN,PALO ALTO,94303
+2015-07-27T15:37:00Z,THEFT PETTY/MISC (488M),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-27T16:26:00Z,IDENTITY THEFT/FRAUD (530F),300 Block PARKSIDE DR,PALO ALTO,94306
+2015-07-27T17:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-07-27T19:40:00Z,BICYCLE/ABANDONED (ABANBIKE),600 Block HOMER AV,PALO ALTO,94301
+2015-07-27T20:00:00Z,BURGLARY/COMMERCIAL (459C),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-27T20:30:00Z,BURGLARY/AUTO (459A),700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-07-27T21:00:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-27T22:09:00Z,WARRANT/OTHER AGENCY (OWARRANT),LOS TRANCOS OPEN SPACE PRESERVE,PALO ALTO,""
+2015-07-27T22:30:00Z,THEFT PETTY/FROM AUTO (488FA),4000 Block BEN LOMOND DR,PALO ALTO,94306
+2015-07-28T00:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),300 Block SHERIDAN AV,PALO ALTO,94306
+2015-07-28T00:00:00Z,CREDIT CARDS/INTERNET FRAUD (484GI),200 Block FOREST AV,PALO ALTO,94301
+2015-07-28T01:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-28T02:33:00Z,MUNI CODE/MISC (1090MISC),100 Block PALO ALTO AV,PALO ALTO,94301
+2015-07-28T02:34:00Z,N&D/UNDER INFLUENCE (11550),4500 Block EL CAMINO REAL,"",""
+2015-07-28T07:20:00Z,F&W/MISC (F&WMISC),400 Block WEBSTER ST,PALO ALTO,94301
+2015-07-28T09:10:00Z,ACCIDENT PROPERTY DAMAGE (1182),3500 Block ALMA ST,PALO ALTO,94306
+2015-07-28T10:14:00Z,BATTERY/SIMPLE (242SB),500 Block HIGH ST,PALO ALTO,94301
+2015-07-28T10:28:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-28T10:41:00Z,MISSING ADULT/MISC (1065A),200 Block FOREST AV,PALO ALTO,94301
+2015-07-28T10:49:00Z,THEFT PETTY/AUTO ACCESSORY (488A),200 Block SCRIPPS CT,PALO ALTO,94306
+2015-07-28T10:49:00Z,LOST PROPERTY/MISC (LOST),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-28T11:48:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block LYTTON AV,PALO ALTO,94301
+2015-07-28T12:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),100 Block HAMILTON AV,PALO ALTO,94301
+2015-07-28T12:00:00Z,BURGLARY/AUTO (459A),700 Block E MEADOW DR,PALO ALTO,94303
+2015-07-28T12:00:00Z,BURGLARY/AUTO (459A),700 Block E MEADOW DR,PALO ALTO,94303
+2015-07-28T12:00:00Z,BURGLARY/AUTO (459A),700 Block E MEADOW DR,PALO ALTO,94303
+2015-07-28T12:20:00Z,VEHICLE/STORED (22651T),1800 Block EMBARCADERO RD,PALO ALTO,94303
+2015-07-28T12:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-07-28T15:19:00Z,ACCIDENT MINOR INJURY (1181),3900 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-28T16:32:00Z,BURGLARY/COMMERCIAL (459C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-28T18:20:00Z,BURGLARY/AUTO (459A),1800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-28T18:30:00Z,ACCIDENT MINOR INJURY (1181),MIDDLEFIELD RD & FOREST AV,PALO ALTO,94301
+2015-07-28T19:00:00Z,BURGLARY/AUTO (459A),1800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-07-28T19:00:00Z,BURGLARY/COMMERCIAL (459C),200 Block ALMA ST,PALO ALTO,94301
+2015-07-29T00:10:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-29T00:20:00Z,TRAFFIC/MISC (TRAFMISC),LYTTON AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-07-29T00:36:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-07-29T05:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-07-29T08:30:00Z,VEHICLE/STOLEN (10851S),100 Block WALTER HAYS DR,PALO ALTO,94303
+2015-07-29T09:15:00Z,MISDEMEANOR/HIT & RUN (20002),3500 Block BLOCK ALMA ST,PALO ALTO,94306
+2015-07-29T10:31:00Z,THEFT PETTY/MISC (488M),1 Block ENCINA AV,PALO ALTO,94301
+2015-07-29T10:45:00Z,ACCIDENT MINOR INJURY (1181),1500 Block PAGE MILL RD,PALO ALTO,94304
+2015-07-29T13:30:00Z,THEFT PETTY/MISC (488M),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-29T14:01:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),500 Block COLLEGE AV,PALO ALTO,94306
+2015-07-29T14:10:00Z,BATTERY/SIMPLE (242SB),700 Block WELCH RD,PALO ALTO,94304
+2015-07-29T15:02:00Z,FOUND PROPERTY/MISC (FOUND),3600 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-07-29T15:55:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-29T16:00:00Z,LOST PROPERTY/MISC (LOST),200 Block FOREST AV,PALO ALTO,94301
+2015-07-29T16:09:00Z,MUNI CODE/MISC (1090MISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-29T16:30:00Z,THEFT PETTY/MISC (488M),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-29T17:00:00Z,BURGLARY/COMMERCIAL (459C),200 Block LINCOLN AV,PALO ALTO,94301
+2015-07-29T18:50:00Z,N&D/POSSESSION (11350),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-29T18:50:00Z,IDENTITY THEFT/CREDIT CARDS (530C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-29T19:42:00Z,ACCIDENT MINOR INJURY (1181),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-29T19:47:00Z,H&S/MISC (H&SMISC),400 Block RAMONA ST,PALO ALTO,94301
+2015-07-29T20:24:00Z,MUNI CODE/MISC (1090MISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-29T20:46:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-30T01:23:00Z,DUI ADULT/MISC (23152AM),ALMA ST & FOREST AV,PALO ALTO,94301
+2015-07-30T01:32:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),ENCINA AV & EL CAMINO REAL,PALO ALTO,94301
+2015-07-30T02:31:00Z,MISDEMEANOR/HIT & RUN (20002),4000 Block BLOCK PARK BLVD,PALO ALTO,94306
+2015-07-30T03:34:00Z,N&D/POSSESSION (11350),PARK BLVD & LAMBERT AV,PALO ALTO,94306
+2015-07-30T12:00:00Z,THEFT GRAND/MISC (487M),700 Block WELCH RD,PALO ALTO,94304
+2015-07-30T12:00:00Z,CREDIT CARDS/FRAUDULENT USE (484G),700 Block WELCH RD,PALO ALTO,94304
+2015-07-30T12:00:00Z,THEFT GRAND/MISC (487M),700 Block WELCH RD,PALO ALTO,94304
+2015-07-30T14:00:00Z,BATTERY/SIMPLE (242SB),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-07-30T15:34:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-07-30T15:44:00Z,ACCIDENT MINOR INJURY (1181),1400 Block SAND HILL RD,PALO ALTO,94304
+2015-07-30T15:46:00Z,PENAL CODE/MISC (PENALMI),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-30T15:55:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block WELCH RD,PALO ALTO,94304
+2015-07-30T16:10:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),ALMA ST & UNIVERSITY AV,PALO ALTO,94301
+2015-07-30T16:15:00Z,H&S/MISC (H&SMISC),400 Block FLORENCE ST,PALO ALTO,94301
+2015-07-30T16:22:00Z,MUNI CODE/MISC (1090MISC),400 Block FLORENCE ST,PALO ALTO,94301
+2015-07-30T17:25:00Z,LIQUOR LAW/FURNISH TO MINOR (25658F),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-30T17:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block OXFORD AV,PALO ALTO,94306
+2015-07-30T17:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),UNIVERSITY AV & EMERSON ST,PALO ALTO,94301
+2015-07-30T17:45:00Z,ACCIDENT MINOR INJURY (1181),100 Block OREGON EXPY,PALO ALTO,94306
+2015-07-30T17:53:00Z,LIQUOR LAW/FURNISH TO MINOR (25658F),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-30T18:10:00Z,LIQUOR LAW/FURNISH TO MINOR (25658F),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-30T18:30:00Z,SUSP CIRC/SEX CRIME (1066SC),600 Block EMERSON ST,PALO ALTO,94301
+2015-07-30T18:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),600 Block EMERSON ST,PALO ALTO,94301
+2015-07-30T18:45:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-30T19:00:00Z,THEFT PETTY/FROM AUTO (488FA),4100 Block HUBBARTT DR,PALO ALTO,94306
+2015-07-30T21:28:00Z,LIQUOR LAW/FURNISH TO MINOR (25658F),700 Block COLORADO AV,PALO ALTO,94303
+2015-07-30T22:00:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),4200 Block RICKEYS WAY,PALO ALTO,94306
+2015-07-30T23:30:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-07-30T23:55:00Z,TRAFFIC/MISC (TRAFMISC),500 Block FULTON ST,PALO ALTO,94301
+2015-07-31T00:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),400 Block HAWTHORNE AV,PALO ALTO,94301
+2015-07-31T00:50:00Z,DUI ADULT/ACCIDENT (23152AA),3500 Block RAMONA ST,PALO ALTO,94306
+2015-07-31T08:15:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),300 Block HAWTHORNE AV,PALO ALTO,94301
+2015-07-31T08:35:00Z,THEFT PETTY/SHOPLIFT (488S),300 Block PORTAGE AV,PALO ALTO,94306
+2015-07-31T08:35:00Z,ROBBERY/MISC (211M),300 Block PORTAGE AV,PALO ALTO,94306
+2015-07-31T09:27:00Z,ACCIDENT PROPERTY DAMAGE (1182),FOREST AV & ALMA ST,PALO ALTO,94301
+2015-07-31T12:06:00Z,ACCIDENT PROPERTY DAMAGE (1182),1100 Block BLOCK SAN ANTONIO RD,PALO ALTO,94303
+2015-07-31T12:59:00Z,ACCIDENT MINOR INJURY (1181),UNIVERSITY AV & W CRESCENT DR,PALO ALTO,94301
+2015-07-31T13:15:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block FOREST AV,PALO ALTO,94301
+2015-07-31T13:51:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),3800 Block LA SELVA DR,PALO ALTO,94306
+2015-07-31T14:00:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-31T17:09:00Z,MUNI CODE/MISC (1090MISC),500 Block HIGH ST,PALO ALTO,94301
+2015-07-31T17:58:00Z,WARRANT/OTHER AGENCY (OWARRANT),GREER RD & EMBARCADERO RD,PALO ALTO,94303
+2015-07-31T18:14:00Z,WARRANT/OTHER AGENCY (OWARRANT),900 Block UNIVERSITY AV,PALO ALTO,94301
+2015-07-31T18:55:00Z,ROBBERY/STRONG ARM (211SA),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-07-31T19:07:00Z,ACCIDENT MINOR INJURY (1181),400 Block WEBSTER ST,PALO ALTO,94301
+2015-07-31T19:20:00Z,BURGLARY/AUTO (459A),300 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-07-31T19:55:00Z,BURGLARY/AUTO (459A),700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-07-31T20:00:00Z,DRUNK IN PUBLIC (647(F)PC),500 Block HIGH ST,PALO ALTO,94301
+2015-07-31T20:15:00Z,BURGLARY ATTEMPT/AUTO (459AA),2300 Block BIRCH ST,PALO ALTO,94306
+2015-07-31T20:30:00Z,BURGLARY ATTEMPT/AUTO (459AA),300 Block SHERMAN AV,PALO ALTO,94306
+2015-07-31T20:30:00Z,BURGLARY/AUTO (459A),700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-07-31T20:40:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-07-31T21:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-07-31T22:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block DINAHS CT,PALO ALTO,94306
+2015-08-01T00:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),2000 Block WELLESLEY ST,PALO ALTO,94306
+2015-08-01T00:00:00Z,LOST PROPERTY/MISC (LOST),500 Block RAMONA ST,PALO ALTO,94301
+2015-08-01T00:40:00Z,VEHICLE/STORED (22651T),500 Block EMERSON ST,PALO ALTO,94301
+2015-08-01T01:24:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block EMERSON ST,PALO ALTO,94301
+2015-08-01T01:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-01T03:45:00Z,THEFT GRAND/FROM AUTO (487FA),3200 Block MURRAY WAY,PALO ALTO,94303
+2015-08-01T06:40:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2800 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-08-01T07:42:00Z,VANDALISM/FELONY (594F),200 Block HAMILTON AV,PALO ALTO,94301
+2015-08-01T07:42:00Z,MISSING ADULT/MISC (1065A),200 Block HAMILTON AV,PALO ALTO,94301
+2015-08-01T07:42:00Z,PSYCH SUBJECT (5150),200 Block HAMILTON AV,PALO ALTO,94301
+2015-08-01T11:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1100 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-01T12:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-01T12:37:00Z,VEHICLE/IMPOUNDED (22651),500 Block EMERSON ST,PALO ALTO,94301
+2015-08-01T14:24:00Z,VEHICLE/STOLEN (10851S),3400 Block E BAYSHORE RD,PALO ALTO,94303
+2015-08-01T16:04:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-01T16:30:00Z,FOUND PROPERTY/MISC (FOUND),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-01T17:00:00Z,THEFT GRAND/AUTO ACCESSORY (487A),200 Block STANFORD AV,PALO ALTO,94306
+2015-08-01T19:07:00Z,ACCIDENT MINOR INJURY (1181),PORTAGE AV & EL CAMINO REAL,PALO ALTO,94306
+2015-08-01T19:30:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-01T19:30:00Z,LOST PROPERTY/MISC (LOST),200 Block FOREST AV,PALO ALTO,94301
+2015-08-01T19:43:00Z,ACCIDENT MINOR INJURY (1181),3100 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-08-01T21:28:00Z,WARRANT/OTHER AGENCY (OWARRANT),EL CAMINO REAL & MATADERO AV,PALO ALTO,94306
+2015-08-01T23:33:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),500 Block EMERSON ST,PALO ALTO,94301
+2015-08-02T00:00:00Z,LOST PROPERTY/MISC (LOST),BIRCH ST & SHERIDAN AV,PALO ALTO,94306
+2015-08-02T00:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),200 Block VENTURA AV,PALO ALTO,94306
+2015-08-02T00:31:00Z,DUI ADULT/MISC (23152M),3000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-02T01:59:00Z,DUI ADULT/MISC (23152AM),UNIVERSITY AV & WEBSTER ST,PALO ALTO,94301
+2015-08-02T03:36:00Z,N&D/POSSESSION (11350),3200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-02T08:15:00Z,VEHICLE/IMPOUNDED (22651),800 Block COLORADO AV,PALO ALTO,94303
+2015-08-02T09:00:00Z,FOUND PROPERTY/MISC (FOUND),EMBARCADERO RD & PRIMROSE WAY,PALO ALTO,94303
+2015-08-02T14:00:00Z,F&W/BRANDISHING (417),700 Block ARASTRADERO RD,PALO ALTO,94306
+2015-08-02T16:35:00Z,VEHICLE/STORED (22651T),ALMA ST & HAMILTON AV,PALO ALTO,94301
+2015-08-02T19:00:00Z,BURGLARY/AUTO (459A),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-08-02T19:00:00Z,LIQUOR LAW/FURNISH TO MINOR (25658F),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-02T20:00:00Z,BURGLARY/AUTO (459A),400 Block VENTURA AV,PALO ALTO,94306
+2015-08-02T20:00:00Z,BURGLARY/AUTO (459A),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-08-02T20:22:00Z,PSYCH SUBJECT (5150),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-02T20:35:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-02T21:40:00Z,ROBBERY ATTEMPTED/ARMED (211AA),4200 Block SUZANNE DR,PALO ALTO,94306
+2015-08-02T21:40:00Z,BURGLARY/RESIDENTIAL (459R),4200 Block SUZANNE DR,PALO ALTO,94306
+2015-08-02T21:40:00Z,PENAL CODE/MISC (PENALMI),4200 Block SUZANNE DR,PALO ALTO,94306
+2015-08-02T23:44:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1000 Block MADDUX DR,PALO ALTO,94303
+2015-08-03T02:52:00Z,BURGLARY ATTEMPT/AUTO (459AA),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-08-03T08:00:00Z,VANDALISM/FELONY (594F),3200 Block ALMA ST,PALO ALTO,94306
+2015-08-03T09:26:00Z,ACCIDENT MINOR INJURY (1181),MIDDLEFIELD RD & LOMA VERDE AV,PALO ALTO,94306
+2015-08-03T09:47:00Z,ACCIDENT PROPERTY DAMAGE (1182),3000 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-08-03T10:30:00Z,LOST PROPERTY/MISC (LOST),HAMILTON AV & BRYANT ST,PALO ALTO,94301
+2015-08-03T10:49:00Z,BURGLARY/RESIDENTIAL (459R),3800 Block CORINA WAY,PALO ALTO,94303
+2015-08-03T12:00:00Z,THEFT PETTY/AUTO ACCESSORY (488A),200 Block FERNE AV,PALO ALTO,94306
+2015-08-03T12:00:00Z,CHECKS/COUNTERFEIT (476),3300 Block HILLVIEW AVE,PALO ALTO,94304
+2015-08-03T12:30:00Z,THEFT PETTY/MISC (488M),500 Block EMERSON ST,PALO ALTO,94301
+2015-08-03T13:41:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-08-03T15:19:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),UNIVERSITY AV & KIPLING ST,PALO ALTO,94301
+2015-08-03T17:30:00Z,THEFT PETTY/MISC (488M),1400 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-03T18:00:00Z,BURGLARY ATTEMPT/AUTO (459AA),3800 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-08-03T18:06:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-03T18:20:00Z,N&D/POSSESSION (11350),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-03T18:20:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-03T18:30:00Z,BURGLARY/AUTO (459A),3800 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94303
+2015-08-03T19:00:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-03T19:30:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-03T20:30:00Z,BURGLARY/AUTO (459A),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-03T20:30:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-08-03T22:00:00Z,BURGLARY/AUTO (459A),700 Block HIGH ST,PALO ALTO,94301
+2015-08-03T23:11:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-04T08:37:00Z,ACCIDENT MINOR INJURY (1181),2200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-04T08:55:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-08-04T09:30:00Z,IDENTITY THEFT/MISC. (530M),900 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-04T10:08:00Z,VEHICLE/IMPOUNDED (22651),700 Block BRYANT ST,PALO ALTO,94301
+2015-08-04T10:45:00Z,ACCIDENT MINOR INJURY (1181),600 Block OREGON EXPY,PALO ALTO,94306
+2015-08-04T12:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),CHURCHILL AV,PALO ALTO,""
+2015-08-04T12:00:00Z,THEFT PETTY/FROM AUTO (488FA),600 Block BRYSON AV,PALO ALTO,94306
+2015-08-04T13:19:00Z,PENAL CODE/TRESPASS (602),200 Block CALIFORNIA AV,PALO ALTO,94301
+2015-08-04T14:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),700 Block SAN CARLOS CT,PALO ALTO,94306
+2015-08-04T15:36:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),700 Block SAN CARLOS CT,PALO ALTO,94306
+2015-08-04T17:04:00Z,N&D/UNDER INFLUENCE (11550),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-04T18:00:00Z,BURGLARY/AUTO (459A),3400 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-04T19:15:00Z,BICYCLE/ABANDONED (ABANBIKE),700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-08-04T20:13:00Z,PSYCH SUBJECT (5150),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-05T00:26:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),4000 Block FABIAN WAY,PALO ALTO,94303
+2015-08-05T07:45:00Z,ACCIDENT MINOR INJURY (1181),2700 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-05T08:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block OLIVE AV,PALO ALTO,94306
+2015-08-05T08:55:00Z,TRAFFIC/MISC (TRAFMISC),ASH ST & OLIVE AV,PALO ALTO,94306
+2015-08-05T10:28:00Z,CHECKS/MISC (475M),300 Block CURTNER AV,PALO ALTO,94306
+2015-08-05T13:01:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & BRYSON AV,PALO ALTO,94306
+2015-08-05T13:01:00Z,VEHICLE/MISC (VEHMISC),MIDDLEFIELD RD & BRYSON AV,PALO ALTO,94306
+2015-08-05T14:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),3600 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-08-05T15:09:00Z,ACCIDENT MINOR INJURY (1181),700 Block EMERSON ST,PALO ALTO,94301
+2015-08-05T16:53:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-05T17:05:00Z,N&D/UNDER INFLUENCE (11550),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-05T17:11:00Z,WARRANT/OTHER AGENCY (OWARRANT),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-05T17:25:00Z,TRAFFIC/MISC (TRAFMISC),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-05T17:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-05T18:30:00Z,THEFT PETTY/FROM AUTO (488FA),700 Block LOS ROBLES AV,PALO ALTO,94306
+2015-08-05T18:30:00Z,ASSAULT WITH DEADLY WEAPON (245),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-05T18:30:00Z,PENAL CODE/TERRORIST THREATS (422),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-05T18:30:00Z,VANDALISM/FELONY (594F),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-05T18:30:00Z,PENAL CODE/MISC (PENALMI),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-05T19:23:00Z,VEHICLE/STORED (22651T),WEBSTER ST & MELVILLE AV,PALO ALTO,94301
+2015-08-05T20:45:00Z,N&D/POSSESS/SALES (11378),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-05T21:00:00Z,N&D/POSSESSION (11350),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-05T21:02:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-05T21:02:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-05T21:20:00Z,WARRANT/OTHER AGENCY (OWARRANT),400 Block PORTAGE AV,PALO ALTO,94306
+2015-08-05T21:42:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-05T21:45:00Z,N&D/POSSESSION (11350),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-05T21:45:00Z,N&D/UNDER INFLUENCE (11550),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-05T23:49:00Z,TRAFFIC/MISC (TRAFMISC),1100 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-08-06T03:21:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block S CALIFORNIA AV,PALO ALTO,94306
+2015-08-06T07:45:00Z,MISDEMEANOR/HIT & RUN (20002),UNIVERSITY AV & EMERSON ST,PALO ALTO,94301
+2015-08-06T09:29:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MIDDLEFIELD RD & EVERETT AV,PALO ALTO,94301
+2015-08-06T09:41:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-06T09:50:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block LYTTON AV,PALO ALTO,94301
+2015-08-06T12:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-06T13:15:00Z,BURGLARY/AUTO (459A),3300 Block W BAYSHORE RD,PALO ALTO,94303
+2015-08-06T13:56:00Z,B&P/MISC (B&PMISC),HOMER AV,PALO ALTO,94301
+2015-08-06T14:00:00Z,VEHICLE/IMPOUNDED (22651),ENCINA AV,PALO ALTO,94301
+2015-08-06T14:07:00Z,BURGLARY/COMMERCIAL (459C),2800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-06T15:18:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block OLIVE AV,PALO ALTO,94306
+2015-08-06T15:35:00Z,PUBLIC INCIDENT/MISC (PUBLICMI),1900 Block WEBSTER ST,PALO ALTO,94301
+2015-08-06T15:40:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-06T16:01:00Z,THEFT PETTY/MISC (488M),600 Block KEATS CT,PALO ALTO,94303
+2015-08-06T17:18:00Z,TRAFFIC/SUSPENDED LICENSE (14601),700 Block COLORADO AV,PALO ALTO,94303
+2015-08-06T17:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MIDDLEFIELD RD & EMBARCADERO RD,PALO ALTO,94303
+2015-08-06T18:00:00Z,PSYCH SUBJECT (5150),300 Block PAGE MILL RD,PALO ALTO,94306
+2015-08-06T22:15:00Z,TRAFFIC/MISC (TRAFMISC),1 Block ENCINA AV,PALO ALTO,94301
+2015-08-06T23:35:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-07T00:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2000 Block BLOCK YALE ST,PALO ALTO,94306
+2015-08-07T01:03:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block HIGH ST,PALO ALTO,94301
+2015-08-07T01:59:00Z,N&D/POSSESSION (11350),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-07T02:31:00Z,DUI ADULT/ACCIDENT (23152AA),CHURCHILL AV & ALMA ST,PALO ALTO,94306
+2015-08-07T02:55:00Z,DUI ADULT/ACCIDENT (23152AA),E MEADOW DR & ALMA ST,PALO ALTO,94306
+2015-08-07T02:55:00Z,THEFT PETTY ATT/MISC (488MA),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-07T07:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),300 Block PASTEUR DR,PALO ALTO,94304
+2015-08-07T07:42:00Z,BURGLARY/COMMERCIAL (459C),700 Block HIGH ST,PALO ALTO,94301
+2015-08-07T07:42:00Z,BURGLARY/COMMERCIAL (459C),700 Block HIGH ST,PALO ALTO,94301
+2015-08-07T09:13:00Z,VEHICLE/STORED (22651T),200 Block SHERMAN AV,PALO ALTO,94306
+2015-08-07T10:00:00Z,ACCIDENT MINOR INJURY (1181),500 Block WEBSTER ST,PALO ALTO,94301
+2015-08-07T10:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-08-07T10:00:00Z,THEFT PETTY/MISC (488M),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-07T12:05:00Z,ACCIDENT MINOR INJURY (1181),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-08-07T12:30:00Z,CREDIT CARDS/FRAUDULENT USE (484G),800 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-07T12:30:00Z,THEFT PETTY/MISC (488M),800 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-07T13:00:00Z,MISDEMEANOR/HIT & RUN (20002),600 Block PAGE MILL RD,PALO ALTO,94306
+2015-08-07T13:25:00Z,THEFT PETTY/AUTO ACCESSORY (488A),3900 Block BIBBITS DR,PALO ALTO,94303
+2015-08-07T14:00:00Z,BURGLARY/RESIDENTIAL (459R),3300 Block ALMA ST,PALO ALTO,94306
+2015-08-07T14:17:00Z,BURGLARY/COMMERCIAL (459C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-07T14:17:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-07T14:17:00Z,PENAL CODE/MISC (PENALMI),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-07T14:17:00Z,VEHICLE/MISC (VEHMISC),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-07T14:30:00Z,VANDALISM/FELONY (594F),1800 Block SAND HILL RD,PALO ALTO,94304
+2015-08-07T15:25:00Z,BURGLARY/COMMERCIAL (459C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-07T15:30:00Z,THEFT GRAND/MISC (487M),700 Block ARASTRADERO RD,PALO ALTO,94306
+2015-08-07T16:25:00Z,SICK & CARED FOR/MISC (1053M),4200 Block MACKAY DR,PALO ALTO,94306
+2015-08-07T17:00:00Z,BURGLARY ATTEMPT/AUTO (459AA),500 Block WEBSTER ST,PALO ALTO,94301
+2015-08-07T18:00:00Z,THEFT PETTY/FROM AUTO (488FA),700 Block SOUTHAMPTON DR,PALO ALTO,94303
+2015-08-07T18:00:00Z,BURGLARY/AUTO (459A),700 Block SOUTHAMPTON DR,PALO ALTO,94303
+2015-08-07T18:54:00Z,ACCIDENT PROPERTY DAMAGE (1182),1500 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94301
+2015-08-07T18:59:00Z,N&D/PARAPHERNALIA (11364),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-07T19:00:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),600 Block MAYBELL AV,PALO ALTO,94306
+2015-08-07T19:30:00Z,VANDALISM/MISDEMEANOR (594M),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-07T19:30:00Z,VANDALISM/MISDEMEANOR (594M),800 Block LOS ROBLES AV,PALO ALTO,94306
+2015-08-07T20:20:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),600 Block ADDISON AV,PALO ALTO,94301
+2015-08-07T20:30:00Z,THEFT PETTY/FROM AUTO (488FA),800 Block SOUTHAMPTON DR,PALO ALTO,94303
+2015-08-07T20:40:00Z,N&D/UNDER INFLUENCE (11550),400 Block LYTTON AV,PALO ALTO,94301
+2015-08-07T20:40:00Z,N&D/POSSESSION (11350),400 Block LYTTON AV,PALO ALTO,94301
+2015-08-07T20:40:00Z,N&D/UNDER INFLUENCE (11550),400 Block LYTTON AV,PALO ALTO,94301
+2015-08-07T22:05:00Z,BURGLARY/AUTO (459A),1900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-08T00:44:00Z,BURGLARY/AUTO (459A),1900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-08T02:08:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-08T02:36:00Z,BATTERY/SIMPLE (242SB),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-08T03:42:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & WAVERLEY ST,PALO ALTO,94301
+2015-08-08T08:06:00Z,VEHICLE/STORED (22651T),600 Block GILMAN ST,PALO ALTO,94301
+2015-08-08T11:20:00Z,ACCIDENT PROPERTY DAMAGE (1182),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-08-08T11:30:00Z,BURGLARY/AUTO (459A),1000 Block TANLAND DR,PALO ALTO,94303
+2015-08-08T11:52:00Z,PSYCH SUBJECT (5150),4000 Block AMARANTA AV,PALO ALTO,94306
+2015-08-08T12:15:00Z,THEFT PETTY/MISC (488M),1 Block ENCINA AV,PALO ALTO,94301
+2015-08-08T14:00:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),1200 Block NEWELL RD,PALO ALTO,94303
+2015-08-08T14:18:00Z,THEFT PETTY/AUTO ACCESSORY (488A),300 Block CREEKSIDE DR,PALO ALTO,94306
+2015-08-08T14:54:00Z,VEHICLE/STORED (22651T),900 Block ELSINORE DR,PALO ALTO,94303
+2015-08-08T16:46:00Z,CREDIT CARDS/FRAUDULENT USE (484G),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-08T16:46:00Z,POSSESS STOLEN PROP/MISC (496),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-08T16:46:00Z,WARRANT/OTHER AGENCY (OWARRANT),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-08T16:52:00Z,ACCIDENT MINOR INJURY (1181),500 Block SAND HILL RD,PALO ALTO,94304
+2015-08-08T18:15:00Z,N&D/UNDER INFLUENCE (11550),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-08T18:45:00Z,PSYCH SUBJECT (5150),300 Block STANFORD AV,PALO ALTO,94306
+2015-08-08T20:40:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MONTECITO AV & N RENGSTORFF AV,MOUNTAIN VIEW,""
+2015-08-08T21:38:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-08-08T22:59:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-08T23:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),COLORADO AV & BYRON ST,PALO ALTO,94306
+2015-08-08T23:33:00Z,VEHICLE/STORED (22651T),500 Block EMERSON ST,PALO ALTO,94301
+2015-08-09T01:46:00Z,DUI ADULT/MISC (23152AM),EMBARCADERO RD & NEWELL RD,PALO ALTO,94303
+2015-08-09T07:36:00Z,ACCIDENT PROPERTY DAMAGE (1182),MIDDLEFIELD RD & AMES AV,PALO ALTO,94306
+2015-08-09T09:30:00Z,LOST PROPERTY/MISC (LOST),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-09T09:32:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-09T09:45:00Z,VANDALISM/MISDEMEANOR (594M),500 Block WEBSTER ST,PALO ALTO,94301
+2015-08-09T10:10:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-09T10:15:00Z,LOST PROPERTY/MISC (LOST),CALIFORNIA AV,PALO ALTO,""
+2015-08-09T15:29:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-09T17:45:00Z,VEHICLE/IMPOUNDED (22651),QUARRY RD & PALO RD,PALO ALTO,94304
+2015-08-09T18:00:00Z,THEFT PETTY/FROM AUTO (488FA),500 Block MILITARY WAY,PALO ALTO,94306
+2015-08-09T18:45:00Z,BURGLARY ATTEMPT/AUTO (459AA),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-09T19:00:00Z,BURGLARY/AUTO (459A),1000 Block TANLAND DR,PALO ALTO,94303
+2015-08-09T20:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & W BAYSHORE RD,PALO ALTO,94303
+2015-08-09T20:10:00Z,WARRANT/OTHER AGENCY (OWARRANT),EMBARCADERO RD & W BAYSHORE RD,PALO ALTO,94303
+2015-08-09T21:08:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block HAMILTON AV,PALO ALTO,94301
+2015-08-09T23:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block SAND HILL RD,PALO ALTO,94304
+2015-08-09T23:20:00Z,TRAFFIC/MISC (TRAFMISC),MAYBELL AV & EL CAMINO REAL,PALO ALTO,94306
+2015-08-09T23:30:00Z,WARRANT/OTHER AGENCY (OWARRANT),1000 Block AMARILLO AV,PALO ALTO,94303
+2015-08-10T00:00:00Z,THEFT PETTY/FROM AUTO (488FA),3100 Block MADDUX DR,PALO ALTO,94303
+2015-08-10T01:15:00Z,TRAFFIC/SUSPENDED LICENSE (14601),400 Block KIPLING ST,PALO ALTO,94301
+2015-08-10T02:21:00Z,F&W/CONCEALED WEAPON (12020),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-10T07:30:00Z,BICYCLE/SAFEKEEPING (IMPOBIKE),FOOTHILL EXPY & PAGE MILL RD,"",""
+2015-08-10T08:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block EMERSON ST,PALO ALTO,94301
+2015-08-10T08:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block EMERSON ST,PALO ALTO,94301
+2015-08-10T08:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block EMERSON ST,PALO ALTO,94301
+2015-08-10T08:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block EMERSON ST,PALO ALTO,94301
+2015-08-10T08:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block EMERSON ST,PALO ALTO,94301
+2015-08-10T09:22:00Z,PENAL CODE/TRESPASS (602),1300 Block NEWELL RD,PALO ALTO,94303
+2015-08-10T09:29:00Z,VEHICLE/STORED (22651T),700 Block CHANNING AV,PALO ALTO,94301
+2015-08-10T09:30:00Z,THEFT GRAND/SCAM (487SCAM),200 Block TENNESSEE LN,PALO ALTO,94306
+2015-08-10T09:30:00Z,ELDER ABUSE/FINANCIAL (368EF),200 Block TENNESSEE LN,PALO ALTO,94306
+2015-08-10T10:35:00Z,ACCIDENT PROPERTY DAMAGE (1182),2700 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-08-10T12:00:00Z,VANDALISM/MISDEMEANOR (594M),3300 Block W BAYSHORE RD,PALO ALTO,94303
+2015-08-10T12:18:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),2100 Block ASH ST,PALO ALTO,94306
+2015-08-10T12:18:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),2100 Block ASH ST,PALO ALTO,94306
+2015-08-10T12:23:00Z,TRAFFIC/MISC (TRAFMISC),COLORADO AV & ROSS RD,PALO ALTO,94303
+2015-08-10T13:32:00Z,LOST PROPERTY/MISC (LOST),3300 Block PARK BLVD,PALO ALTO,94306
+2015-08-10T13:42:00Z,F&W/DISPOSAL REQUEST (F&WDISPS),200 Block FOREST AV,PALO ALTO,94301
+2015-08-10T14:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block EMERSON ST,PALO ALTO,94301
+2015-08-10T16:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),2300 Block YALE ST,PALO ALTO,94306
+2015-08-10T17:30:00Z,VEHICLE/STOLEN (10851S),3400 Block ROSS RD,PALO ALTO,94303
+2015-08-10T17:30:00Z,BURGLARY/COMMERCIAL (459C),3400 Block ROSS RD,PALO ALTO,94303
+2015-08-10T18:36:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-10T18:36:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-10T19:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-11T08:29:00Z,VEHICLE/STORED (22651T),700 Block CHANNING AV,PALO ALTO,94301
+2015-08-11T10:00:00Z,THEFT PETTY/MISC (488M),700 Block EMERSON ST,PALO ALTO,94301
+2015-08-11T14:10:00Z,THEFT GRAND/MISC (487M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-11T15:23:00Z,ACCIDENT PROPERTY DAMAGE (1182),1800 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-08-11T16:05:00Z,THEFT GRAND/SHOPLIFT (487S),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-11T16:30:00Z,PSYCH SUBJECT (5150),2700 Block BRYANT ST,PALO ALTO,94306
+2015-08-11T16:40:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-11T17:14:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),1000 Block AMARILLO AV,PALO ALTO,94303
+2015-08-11T18:07:00Z,BURGLARY/AUTO (459A),700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-08-11T18:15:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-11T18:29:00Z,ACCIDENT MINOR INJURY (1181),100 Block EL CAMINO REAL,PALO ALTO,""
+2015-08-11T20:00:00Z,PSYCH SUBJECT (5150),400 Block LYTTON AV,PALO ALTO,94301
+2015-08-11T22:00:00Z,N&D/POSSESSION (11350),EL CAMINO REAL & VENTURA AV,PALO ALTO,94306
+2015-08-11T22:38:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-12T00:00:00Z,MISSING ADULT/MISC (1065A),HOUSTON,"",""
+2015-08-12T01:59:00Z,WARRANT/OTHER AGENCY (OWARRANT),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-08-12T07:21:00Z,ACCIDENT MINOR INJURY (1181),2400 Block WATSON CT,PALO ALTO,94303
+2015-08-12T13:44:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-08-12T13:56:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block FOREST AV,PALO ALTO,94301
+2015-08-12T14:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),900 Block ALMA ST,PALO ALTO,94301
+2015-08-12T14:30:00Z,F&W/DISPOSAL REQUEST (F&WDISPS),1500 Block BYRON ST,PALO ALTO,94301
+2015-08-12T15:21:00Z,N&D/PARAPHERNALIA (11364),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-12T15:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block TASSO ST,PALO ALTO,94301
+2015-08-12T17:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),ORCHARD LN & ARBORETUM RD,PALO ALTO,94304
+2015-08-12T17:30:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-12T18:00:00Z,VANDALISM/MISDEMEANOR (594M),100 Block SANTA RITA AV,PALO ALTO,94301
+2015-08-12T19:15:00Z,N&D/PARAPHERNALIA (11364),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-12T19:40:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-12T19:40:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-12T19:44:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),1 Block ENCINA AV,PALO ALTO,94301
+2015-08-12T19:45:00Z,BURGLARY ATTEMPT/AUTO (459AA),1900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-12T19:50:00Z,BURGLARY/AUTO (459A),300 Block HAMILTON AV,PALO ALTO,94301
+2015-08-12T20:00:00Z,BURGLARY ATTEMPT/AUTO (459AA),300 Block SHERMAN AV,PALO ALTO,94306
+2015-08-12T20:30:00Z,BURGLARY/AUTO (459A),1900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-12T20:30:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-12T20:30:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-12T20:30:00Z,BURGLARY/AUTO (459A),500 Block WEBSTER ST,PALO ALTO,94301
+2015-08-12T21:03:00Z,IDENTITY THEFT/CREDIT CARDS (530C),300 Block PASTEUR DR,PALO ALTO,94304
+2015-08-12T22:00:00Z,BURGLARY/AUTO (459A),500 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-12T22:47:00Z,FOUND PROPERTY/MISC (FOUND),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-13T02:00:00Z,B&P/MISC (B&PMISC),800 Block CENTER DR,PALO ALTO,94301
+2015-08-13T02:00:00Z,VEHICLE/MISC (VEHMISC),800 Block CENTER DR,PALO ALTO,94301
+2015-08-13T06:00:00Z,FOUND PROPERTY/MISC (FOUND),2700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-13T11:36:00Z,B&P/MISC (B&PMISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-13T12:00:00Z,IDENTITY THEFT/MISC. (530M),2800 Block RAMONA ST,PALO ALTO,94306
+2015-08-13T13:09:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block SEALE AV,PALO ALTO,94301
+2015-08-13T13:30:00Z,BURGLARY/AUTO (459A),3300 Block PAGE MILL RD,PALO ALTO,""
+2015-08-13T14:00:00Z,FOUND PROPERTY/MISC (FOUND),4000 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-08-13T15:10:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-13T16:00:00Z,FOUND PROPERTY/MISC (FOUND),200 Block FOREST AV,PALO ALTO,94301
+2015-08-13T16:40:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-13T16:40:00Z,ACCIDENT PROPERTY DAMAGE (1182),BRYANT ST & CHURCHILL AV,PALO ALTO,94301
+2015-08-13T17:54:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block W CHARLESTON RD,PALO ALTO,94306
+2015-08-13T18:00:00Z,VANDALISM/FELONY (594F),3200 Block PARK BLVD,PALO ALTO,94306
+2015-08-13T18:15:00Z,THEFT PETTY/SHOPLIFT (488S),600 Block STANFORD SHOPPING CENTER,PALO ALTO,94304
+2015-08-13T18:20:00Z,PSYCH SUBJECT (5150),2700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-13T20:57:00Z,B&P/MISC (B&PMISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-13T21:22:00Z,TRAFFIC/MISC (TRAFMISC),EL CAMINO REAL & EMBARCADERO RD,PALO ALTO,94301
+2015-08-13T21:33:00Z,TRAFFIC/MISC (TRAFMISC),EL CAMINO REAL & SAN ANTONIO RD,PALO ALTO,""
+2015-08-13T22:01:00Z,PENAL CODE/MISC (PENALMI),500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-14T00:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),WOODLAND AV & UNIVERSITY AV,"",94303
+2015-08-14T04:03:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-14T04:34:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),4100 Block WILLMAR DR,PALO ALTO,94306
+2015-08-14T08:10:00Z,TRAFFIC/MISC (TRAFMISC),DEL MEDIO AV & EL CAMINO REAL,MOUNTAIN VIEW,""
+2015-08-14T10:13:00Z,ACCIDENT PROPERTY DAMAGE (1182),3900 Block FABIAN WAY,PALO ALTO,94303
+2015-08-14T10:14:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block HAMILTON AV,PALO ALTO,94301
+2015-08-14T10:30:00Z,THEFT GRAND/SCAM (487SCAM),100 Block PRIMROSE WAY,PALO ALTO,94303
+2015-08-14T10:38:00Z,VEHICLE/STOLEN (10851S),3700 Block EL CENTRO ST,PALO ALTO,94306
+2015-08-14T11:26:00Z,ACCIDENT MINOR INJURY (1181),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-14T12:05:00Z,ACCIDENT PROPERTY DAMAGE (1182),4000 Block ARASTRADERO RD,PALO ALTO,94304
+2015-08-14T13:30:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-14T14:01:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),600 Block STANFORD AV,PALO ALTO,94306
+2015-08-14T14:01:00Z,PROWLER/MISC (647G),600 Block STANFORD AV,PALO ALTO,94306
+2015-08-14T14:10:00Z,THEFT GRAND/AUTO ACCESSORY (487A),1400 Block BYRON ST,PALO ALTO,94301
+2015-08-14T15:12:00Z,ACCIDENT PROPERTY DAMAGE (1182),3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-08-14T15:26:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-14T16:45:00Z,THEFT GRAND/FROM AUTO (487FA),400 Block PORTAGE AV,PALO ALTO,94306
+2015-08-14T16:51:00Z,PSYCH SUBJECT (5150),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-08-14T17:01:00Z,ACCIDENT PROPERTY DAMAGE (1182),BRYANT ST & LYTTON AV,PALO ALTO,94301
+2015-08-14T17:10:00Z,ACCIDENT MINOR INJURY (1181),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-08-14T17:44:00Z,FELONY HIT & RUN (20001),500 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-08-14T18:30:00Z,BURGLARY/AUTO (459A),1900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-14T19:00:00Z,MISSING ADULT/MISC (1065A),600 Block FOREST AV,PALO ALTO,94301
+2015-08-14T19:15:00Z,MISSING ADULT/MISC (1065A),3500 Block LAGUNA CT,PALO ALTO,94306
+2015-08-14T19:15:00Z,VANDALISM/MISDEMEANOR (594M),300 Block SHERMAN AV,PALO ALTO,94306
+2015-08-14T20:20:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-08-14T20:30:00Z,BURGLARY/AUTO (459A),400 Block SHERMAN AV,PALO ALTO,94306
+2015-08-14T21:12:00Z,H&S/MISC (H&SMISC),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-14T21:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-14T22:00:00Z,THEFT PETTY/MISC (488M),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-08-14T23:07:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-14T23:07:00Z,LIQUOR LAW/MISC (LIQUORMI),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-15T00:36:00Z,MUNI CODE/MISC (1090MISC),600 Block RAMONA ST,PALO ALTO,94301
+2015-08-15T01:43:00Z,DUI ADULT/MISC (23152AM),800 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-15T02:25:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-15T02:30:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-15T03:13:00Z,DUI ADULT/MISC (23152AM),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-15T10:22:00Z,ACCIDENT MINOR INJURY (1181),600 Block ALMA ST,PALO ALTO,94301
+2015-08-15T11:00:00Z,BURGLARY/AUTO (459A),600 Block ADDISON AV,PALO ALTO,94301
+2015-08-15T11:39:00Z,THEFT PETTY/MISC (488M),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-15T12:00:00Z,FOUND PROPERTY/MISC (FOUND),200 Block HAMILTON AV,PALO ALTO,94301
+2015-08-15T12:00:00Z,THEFT PETTY/FROM AUTO (488FA),800 Block LA PARA AV,PALO ALTO,94306
+2015-08-15T13:45:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & E CHARLESTON RD,PALO ALTO,94306
+2015-08-15T13:48:00Z,TRAFFIC/SUSPENDED LICENSE (14601),400 Block LYTTON AV,PALO ALTO,94301
+2015-08-15T15:25:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block FOREST AV,PALO ALTO,94301
+2015-08-15T15:49:00Z,ACCIDENT MINOR INJURY (1181),OREGON EXPY & LOUIS RD,PALO ALTO,94303
+2015-08-15T16:00:00Z,THEFT PETTY/FROM AUTO (488FA),1000 Block HIGH ST,PALO ALTO,94301
+2015-08-15T16:00:00Z,BURGLARY/RESIDENTIAL (459R),1400 Block BYRON ST,PALO ALTO,94301
+2015-08-15T16:20:00Z,MUNI CODE/MISC (1090MISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-15T16:35:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-15T17:15:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-15T19:18:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-15T19:30:00Z,BURGLARY/AUTO (459A),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-15T19:30:00Z,BURGLARY/AUTO (459A),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-15T20:00:00Z,LOST PROPERTY/MISC (LOST),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-15T20:54:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block PASTEUR DR,PALO ALTO,94304
+2015-08-15T23:45:00Z,PSYCH SUBJECT (5150),800 Block CENTER DR,PALO ALTO,94301
+2015-08-15T23:59:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2015-08-16T06:51:00Z,MISDEMEANOR/HIT & RUN (20002),3200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-16T10:23:00Z,ACCIDENT PROPERTY DAMAGE (1182),3800 Block NELSON DR,PALO ALTO,94306
+2015-08-16T11:15:00Z,LOST PROPERTY/MISC (LOST),400 Block SHERMAN AV,PALO ALTO,94306
+2015-08-16T11:15:00Z,THEFT PETTY/MISC (488M),400 Block SHERMAN AV,PALO ALTO,94306
+2015-08-16T11:15:00Z,LOST PROPERTY/MISC (LOST),400 Block SHERMAN AV,PALO ALTO,94306
+2015-08-16T12:19:00Z,VEHICLE/STORED (22651T),500 Block EMERSON ST,PALO ALTO,94301
+2015-08-16T14:00:00Z,BURGLARY/COMMERCIAL (459C),200 Block HOMER AV,PALO ALTO,94301
+2015-08-16T14:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-16T15:30:00Z,TRAFFIC/MISC (TRAFMISC),CEDAR ST & HOPKINS AV,PALO ALTO,94301
+2015-08-16T15:41:00Z,ACCIDENT MINOR INJURY (1181),800 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-08-16T17:20:00Z,COUNTERFEITING/MISC (477),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-16T17:28:00Z,CASUALTY/FALL (CASUALFA),600 Block ASHTON AV,PALO ALTO,94306
+2015-08-16T20:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),2100 Block W BAYSHORE RD,PALO ALTO,94303
+2015-08-16T21:10:00Z,MUNI CODE/MISC (1090MISC),400 Block MITCHELL LN,PALO ALTO,94301
+2015-08-16T21:20:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block MITCHELL LN,PALO ALTO,94301
+2015-08-16T21:21:00Z,N&D/UNDER INFLUENCE (11550),EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-08-16T23:00:00Z,BURGLARY/AUTO (459A),1000 Block TANLAND DR,PALO ALTO,94303
+2015-08-16T23:34:00Z,TRAFFIC/SUSPENDED LICENSE (14601),PAGE MILL RD & PETER COUTTS RD,PALO ALTO,""
+2015-08-17T00:30:00Z,VANDALISM/FELONY GRAFFITI (594FG),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-08-17T00:30:00Z,PENAL CODE/MISC (PENALMI),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-08-17T00:31:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2015-08-17T01:22:00Z,TRAFFIC/SUSPENDED LICENSE (14601),700 Block COLORADO AV,PALO ALTO,94303
+2015-08-17T01:28:00Z,WARRANT/OTHER AGENCY (OWARRANT),700 Block COLORADO AV,PALO ALTO,94303
+2015-08-17T08:00:00Z,THEFT PETTY/MISC (488M),2900 Block GREER RD,PALO ALTO,94303
+2015-08-17T09:14:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-17T09:18:00Z,BURGLARY/AUTO (459A),2000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-17T10:28:00Z,VEHICLE/STORED (22651T),400 Block ADDISON AV,PALO ALTO,94301
+2015-08-17T11:29:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-17T12:10:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),3300 Block SOUTH CT,PALO ALTO,94306
+2015-08-17T13:57:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-17T16:44:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-17T17:00:00Z,CASUALTY/FALL (CASUALFA),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-17T17:38:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block ALMA ST,PALO ALTO,94301
+2015-08-17T18:00:00Z,PENAL CODE/DISOBEY COURT ORDER (66),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-17T18:00:00Z,PENAL CODE/RESISTING ARREST (148RA),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-17T18:58:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-08-17T19:00:00Z,FOUND PROPERTY/MISC (FOUND),500 Block OXFORD AV,PALO ALTO,94306
+2015-08-17T19:00:00Z,BURGLARY/AUTO (459A),1700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-17T19:15:00Z,VANDALISM/MISDEMEANOR (594M),1800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-17T19:30:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-08-17T20:45:00Z,BATTERY/SEXUAL (242S),500 Block HIGH ST,PALO ALTO,94301
+2015-08-17T21:25:00Z,MISDEMEANOR/HIT & RUN (20002),600 Block COLORADO AV,PALO ALTO,94306
+2015-08-17T23:22:00Z,TRAFFIC/SUSPENDED LICENSE (14601),200 Block FERNANDO AV,PALO ALTO,94306
+2015-08-17T23:22:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),200 Block FERNANDO AV,PALO ALTO,94306
+2015-08-17T23:22:00Z,PENAL CODE/MISC (PENALMI),200 Block FERNANDO AV,PALO ALTO,94306
+2015-08-17T23:27:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-17T23:33:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block FOREST AV,PALO ALTO,94301
+2015-08-18T03:28:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block CAROLINA LN,PALO ALTO,94306
+2015-08-18T05:00:00Z,N&D/POSSESSION (11350),3900 Block DUNCAN PL,PALO ALTO,94306
+2015-08-18T05:00:00Z,N&D/PARAPHERNALIA (11364),3900 Block DUNCAN PL,PALO ALTO,94306
+2015-08-18T05:00:00Z,DUI ADULT/ACCIDENT (23152AA),3900 Block DUNCAN PL,PALO ALTO,94306
+2015-08-18T05:00:00Z,N&D/MISC (N&DMISC),3900 Block DUNCAN PL,PALO ALTO,94306
+2015-08-18T05:10:00Z,PSYCH SUBJECT (5150),4200 Block MACKAY DR,PALO ALTO,94306
+2015-08-18T08:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),1100 Block FIFE AV,PALO ALTO,94301
+2015-08-18T08:00:00Z,THEFT PETTY/MISC (488M),1100 Block FIFE AV,PALO ALTO,94301
+2015-08-18T08:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),1100 Block FIFE AV,PALO ALTO,94301
+2015-08-18T11:59:00Z,ACCIDENT MINOR INJURY (1181),3900 Block FABIAN WAY,PALO ALTO,94303
+2015-08-18T13:00:00Z,THEFT GRAND/MISC (487M),800 Block MORENO AV,PALO ALTO,94303
+2015-08-18T13:01:00Z,FOUND PROPERTY/MISC (FOUND),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-18T13:09:00Z,VEHICLE/STORED (22651T),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-18T14:28:00Z,ACCIDENT PROPERTY DAMAGE (1182),200 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-08-18T14:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),HAWTHORNE AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-08-18T14:50:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-18T15:40:00Z,FOUND PROPERTY/MISC (FOUND),200 Block HAMILTON AV,PALO ALTO,94301
+2015-08-18T17:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),GREER RD & OREGON EXPY,PALO ALTO,94303
+2015-08-18T17:00:00Z,LOST PROPERTY/MISC (LOST),3400 Block PARK BLVD,PALO ALTO,94306
+2015-08-18T17:45:00Z,PSYCH SUBJECT (5150),RAMOS WAY & PAGE MILL RD,PALO ALTO,94306
+2015-08-18T18:30:00Z,BURGLARY/AUTO (459A),1700 Block BLOCK EL CAMINO REAL,PALO ALTO,""
+2015-08-18T18:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),COLERIDGE AV & ALMA ST,PALO ALTO,94301
+2015-08-18T20:00:00Z,N&D/PARAPHERNALIA (11364),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-18T20:00:00Z,N&D/UNDER INFLUENCE (11550),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-18T20:15:00Z,BURGLARY/AUTO (459A),1800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-18T20:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-18T20:50:00Z,ROBBERY/ARMED (211A),1800 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-18T20:51:00Z,TRAFFIC/SUSPENDED LICENSE (14601),ARASTRADERO RD & DONALD DR,PALO ALTO,94306
+2015-08-18T22:08:00Z,BURGLARY/AUTO (459A),600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-08-18T23:20:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-08-19T00:30:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),600 Block HAMILTON AV,PALO ALTO,94301
+2015-08-19T05:20:00Z,WARRANT/OTHER AGENCY (OWARRANT),1200 Block HARRIET ST,PALO ALTO,94301
+2015-08-19T07:05:00Z,B&P/MISC (B&PMISC),HOMER AV,PALO ALTO,94301
+2015-08-19T08:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),4100 Block KING ARTHURS CT,PALO ALTO,94306
+2015-08-19T09:00:00Z,FOUND PROPERTY/MISC (FOUND),200 Block FOREST AV,PALO ALTO,94301
+2015-08-19T13:00:00Z,IDENTITY THEFT/FRAUD (530F),300 Block GRANT AV,PALO ALTO,94306
+2015-08-19T13:00:00Z,FORGERY/MISC (470M),300 Block GRANT AV,PALO ALTO,94306
+2015-08-19T13:00:00Z,IDENTITY THEFT/FRAUD (530F),300 Block GRANT AV,PALO ALTO,94306
+2015-08-19T14:22:00Z,N&D/UNDER INFLUENCE (11550),600 Block MELVILLE AV,PALO ALTO,94301
+2015-08-19T14:22:00Z,PROWLER/MISC (647G),600 Block MELVILLE AV,PALO ALTO,94301
+2015-08-19T14:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-19T16:58:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),2900 Block COWPER ST,PALO ALTO,94306
+2015-08-19T17:00:00Z,THEFT PETTY/FROM AUTO (488FA),700 Block FLORALES DR,PALO ALTO,94306
+2015-08-19T17:03:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),2900 Block BLOCK COWPER ST,PALO ALTO,94306
+2015-08-19T17:10:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),2900 Block COWPER ST,PALO ALTO,94306
+2015-08-19T17:30:00Z,THEFT PETTY/FROM AUTO (488FA),4100 Block ABEL AV,PALO ALTO,94306
+2015-08-19T18:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & MAYBELL AV,PALO ALTO,94306
+2015-08-19T22:00:00Z,PENAL CODE/DISOBEY COURT ORDER (66),200 Block FOREST AV,PALO ALTO,94301
+2015-08-19T22:26:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-19T22:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-19T22:56:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-19T23:00:00Z,THEFT PETTY/FROM AUTO (488FA),4100 Block ABEL AV,PALO ALTO,94306
+2015-08-19T23:42:00Z,N&D/UNDER INFLUENCE (11550),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-20T00:01:00Z,IDENTITY THEFT/CREDIT CARDS (530C),200 Block CHARLES MARX WAY,PALO ALTO,94304
+2015-08-20T00:41:00Z,DUI ADULT/MISC (23152AM),HWY 101 N & EMBARCADERO RD,PALO ALTO,94303
+2015-08-20T05:55:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-08-20T10:00:00Z,FOUND PROPERTY/MISC (FOUND),300 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-08-20T11:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block HAMILTON AV,PALO ALTO,94301
+2015-08-20T11:50:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),300 Block LYTTON AV,PALO ALTO,94301
+2015-08-20T12:25:00Z,ACCIDENT PROPERTY DAMAGE (1182),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-08-20T12:36:00Z,ACCIDENT MINOR INJURY (1181),ARASTRADERO RD & COULOMBE DR,PALO ALTO,94306
+2015-08-20T12:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-20T12:50:00Z,PSYCH SUBJECT (5150),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-20T13:25:00Z,THEFT GRAND/FROM AUTO (487FA),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-20T13:38:00Z,PSYCH SUBJECT (5150),1300 Block BRYANT ST,PALO ALTO,94301
+2015-08-20T14:30:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),500 Block CENTER DR,PALO ALTO,94301
+2015-08-20T14:55:00Z,ACCIDENT PROPERTY DAMAGE (1182),1300 Block BLOCK UNIVERSITY AV,PALO ALTO,94301
+2015-08-20T16:15:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-08-20T16:15:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-08-20T18:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-20T19:00:00Z,BURGLARY/AUTO (459A),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-20T19:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-20T19:48:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-20T21:00:00Z,VANDALISM/FELONY (594F),2500 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-20T21:08:00Z,WARRANT/OTHER AGENCY (OWARRANT),SAN ANTONIO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-08-20T21:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-20T22:43:00Z,MUNI CODE/MISC (1090MISC),200 Block HAMILTON AV,PALO ALTO,94301
+2015-08-20T23:02:00Z,MUNI CODE/MISC (1090MISC),200 Block HAMILTON AV,PALO ALTO,94301
+2015-08-20T23:16:00Z,MUNI CODE/MISC (1090MISC),200 Block HAMILTON AV,PALO ALTO,94301
+2015-08-20T23:28:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),ALMA ST & CHURCHILL AV,PALO ALTO,94306
+2015-08-20T23:28:00Z,PENAL CODE/MISC (PENALMI),ALMA ST & CHURCHILL AV,PALO ALTO,94306
+2015-08-21T01:28:00Z,TRAFFIC/SUSPENDED LICENSE (14601),HWY 101 N & SAN ANTONIO RD,PALO ALTO,94303
+2015-08-21T02:16:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-21T02:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-21T03:29:00Z,DUI ADULT/MISC (23152AM),FABIAN ST & E CHARLESTON RD,PALO ALTO,94303
+2015-08-21T04:30:00Z,PSYCH SUBJECT (5150),3000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-21T06:00:00Z,PSYCH SUBJECT (5150),4200 Block MANUELA AV,PALO ALTO,94306
+2015-08-21T09:34:00Z,ACCIDENT MINOR INJURY (1181),800 Block E CHARLESTON RD,PALO ALTO,94303
+2015-08-21T10:21:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-08-21T11:56:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block PASTEUR DR,PALO ALTO,94304
+2015-08-21T12:38:00Z,ACCIDENT PROPERTY DAMAGE (1182),FOREST AV & EMERSON ST,PALO ALTO,94301
+2015-08-21T12:40:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-21T13:18:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block EMBARCADERO RD,PALO ALTO,94301
+2015-08-21T15:25:00Z,SEX CRIME/MISC (SEXMISC),3800 Block LOUIS RD,PALO ALTO,94303
+2015-08-21T16:20:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block ARASTRADERO RD,PALO ALTO,94306
+2015-08-21T16:36:00Z,MUNI CODE/MISC (1090MISC),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-21T17:30:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),KIPLING ST & LYTTON AV,PALO ALTO,94301
+2015-08-21T17:45:00Z,LIQUOR LAW/FURNISH TO MINOR (25658F),600 Block EMERSON ST,PALO ALTO,94301
+2015-08-21T18:20:00Z,PSYCH SUBJECT (5150),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-21T18:43:00Z,MISDEMEANOR/HIT & RUN (20002),800 Block E CHARLESTON RD,PALO ALTO,94303
+2015-08-21T18:53:00Z,LIQUOR LAW/FURNISH TO MINOR (25658F),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-21T19:08:00Z,LIQUOR LAW/FURNISH TO MINOR (25658F),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-21T19:17:00Z,PENAL CODE/RESISTING ARREST (148RA),1700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-21T19:17:00Z,TRAFFIC/EVADE (2800),1700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-21T19:17:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),1700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-21T19:17:00Z,TRAFFIC/MISC (TRAFMISC),1700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-21T20:35:00Z,LIQUOR LAW/FURNISH TO MINOR (25658F),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-21T21:20:00Z,PENAL CODE/MISC (PENALMI),400 Block HIGH ST,PALO ALTO,94301
+2015-08-21T21:40:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-21T22:04:00Z,ROBBERY ATTEMPT/STRONG ARM (211SAA),1000 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-08-21T22:04:00Z,PENAL CODE/RESISTING ARREST (148RA),1000 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-08-22T01:30:00Z,TRAFFIC/MISC (TRAFMISC),EMERSON ST & LYTTON AV,PALO ALTO,94301
+2015-08-22T01:52:00Z,DUI ADULT/MISC (23152AM),UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-08-22T03:01:00Z,DUI ADULT/MISC (23152AM),LYTTON AV & EMERSON ST,PALO ALTO,94301
+2015-08-22T05:37:00Z,WARRANT/OTHER AGENCY (OWARRANT),ALMA ST & LYTTON AV,PALO ALTO,94301
+2015-08-22T08:23:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),4300 Block MILLER AV,PALO ALTO,94306
+2015-08-22T10:30:00Z,FOUND PROPERTY/MISC (FOUND),3700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-22T10:48:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block LYTTON AV,PALO ALTO,94301
+2015-08-22T11:00:00Z,ACCIDENT MINOR INJURY (1181),200 Block ARBORETUM,PALO ALTO,94304
+2015-08-22T11:40:00Z,ACCIDENT MINOR INJURY (1181),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-22T15:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block EVERETT AV,PALO ALTO,94301
+2015-08-22T16:01:00Z,N&D/PARAPHERNALIA (11364),400 Block ALMA ST,PALO ALTO,94301
+2015-08-22T16:01:00Z,N&D/UNDER INFLUENCE (11550),400 Block ALMA ST,PALO ALTO,94301
+2015-08-22T16:11:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3400 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-22T20:55:00Z,TRAFFIC/MISC (TRAFMISC),400 Block WEBSTER ST,PALO ALTO,94301
+2015-08-22T22:48:00Z,FOUND PROPERTY/MISC (FOUND),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-22T22:50:00Z,N&D/PARAPHERNALIA (11364),400 Block ALMA ST,PALO ALTO,94301
+2015-08-22T23:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),200 Block EMERSON ST,PALO ALTO,94301
+2015-08-22T23:57:00Z,WARRANT/OTHER AGENCY (OWARRANT),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-22T23:57:00Z,TRAFFIC/SUSPENDED LICENSE (14601),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-22T23:57:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-22T23:57:00Z,WARRANT/OTHER AGENCY (OWARRANT),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-22T23:59:00Z,IDENTITY THEFT/CREDIT CARDS (530C),200 Block MOSHER WAY,PALO ALTO,94304
+2015-08-23T02:02:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-23T02:05:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-23T02:51:00Z,DUI ADULT/MISC (23152AM),700 Block EVERETT AV,PALO ALTO,94301
+2015-08-23T03:20:00Z,SICK & CARED FOR/MISC (1053M),2000 Block WILLIAMS ST,PALO ALTO,94306
+2015-08-23T03:35:00Z,PSYCH SUBJECT (5150),200 Block CHURCHILL AV,PALO ALTO,94301
+2015-08-23T04:44:00Z,SICK & CARED FOR/MISC (1053M),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-23T08:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-23T09:10:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-23T10:15:00Z,PENAL CODE/MISC (PENALMI),ALMA ST & CHURCHILL AV,PALO ALTO,94306
+2015-08-23T12:02:00Z,ACCIDENT PROPERTY DAMAGE (1182),4200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-23T15:00:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-23T17:09:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-23T17:40:00Z,ACCIDENT PROPERTY DAMAGE (1182),2800 Block BLOCK PARK BLVD,PALO ALTO,94306
+2015-08-23T17:52:00Z,ACCIDENT PROPERTY DAMAGE (1182),3200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-23T19:28:00Z,F&W/BRANDISHING (417),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-23T19:28:00Z,PENAL CODE/TERRORIST THREATS (422),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-23T20:10:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block PARKSIDE DR,PALO ALTO,94306
+2015-08-23T21:29:00Z,TRAFFIC/SUSPENDED LICENSE (14601),WILKIE WAY & W MEADOW DR,PALO ALTO,94306
+2015-08-23T21:48:00Z,TRAFFIC/SUSPENDED LICENSE (14601),CALIFORNIA ST & SAN ANTONIO RD,MOUNTAIN VIEW,""
+2015-08-23T21:51:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2000 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-08-23T22:50:00Z,PSYCH SUBJECT (5150),600 Block FOREST AV,PALO ALTO,94301
+2015-08-24T00:42:00Z,N&D/UNDER INFLUENCE (11550),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-24T06:29:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-24T08:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),UNIVERSITY CIR & ALMA ST,PALO ALTO,94301
+2015-08-24T08:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),600 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-24T08:30:00Z,VEHICLE/STOLEN (10851S),4000 Block SOLANA DR,PALO ALTO,94306
+2015-08-24T09:59:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),700 Block WEBSTER ST,PALO ALTO,94301
+2015-08-24T12:15:00Z,VEHICLE/STORED (22651T),200 Block LINCOLN AV,PALO ALTO,94301
+2015-08-24T13:02:00Z,ACCIDENT PROPERTY DAMAGE (1182),1600 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-24T14:40:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-24T15:30:00Z,THEFT GRAND/MISC (487M),600 Block SAND HILL RD,PALO ALTO,94304
+2015-08-24T16:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block E CHARLESTON RD,PALO ALTO,94303
+2015-08-24T16:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-08-24T17:30:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-24T17:40:00Z,ACCIDENT MINOR INJURY (1181),1700 Block BLOCK EL CAMINO REAL,PALO ALTO,""
+2015-08-24T17:42:00Z,ACCIDENT MINOR INJURY (1181),OLIVE AV & EL CAMINO REAL,PALO ALTO,94306
+2015-08-24T18:30:00Z,ACCIDENT MINOR INJURY (1181),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-24T18:50:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-08-24T21:00:00Z,PENAL CODE/MISC (PENALMI),EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-08-24T21:00:00Z,N&D/PARAPHERNALIA (11364),EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-08-24T21:00:00Z,N&D/UNDER INFLUENCE (11550),EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-08-24T22:40:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block FOREST AV,PALO ALTO,94301
+2015-08-25T00:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3800 Block MAGNOLIA DR,PALO ALTO,94306
+2015-08-25T00:43:00Z,N&D/UNDER INFLUENCE (11550),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-25T01:31:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1300 Block EMERSON ST,PALO ALTO,94301
+2015-08-25T04:20:00Z,PENAL CODE/MISC (PENALMI),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-25T11:00:00Z,VEHICLE/STORED (22651T),500 Block W CRESCENT DR,PALO ALTO,94301
+2015-08-25T11:02:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-25T12:02:00Z,VEHICLE/STORED (22651T),2300 Block WELLESLEY ST,PALO ALTO,94306
+2015-08-25T13:15:00Z,VEHICLE/STORED (22651T),500 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-08-25T14:02:00Z,WARRANT/OTHER AGENCY (OWARRANT),200 Block FOREST AV,PALO ALTO,94301
+2015-08-25T16:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),OREGON EXPY & HWY 101,PALO ALTO,94303
+2015-08-25T16:20:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-25T16:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-25T16:40:00Z,ACCIDENT MINOR INJURY (1181),ALMA ST & OREGON EXPY,PALO ALTO,94301
+2015-08-25T16:50:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-25T17:25:00Z,SEX CRIME/INDECENT EXPOSURE (314),4300 Block MILLER AV,PALO ALTO,94306
+2015-08-25T17:50:00Z,TRAFFIC/MISC (TRAFMISC),E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-08-25T18:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),EMBARCADERO RD & FRANCIS DR ST,PALO ALTO,94303
+2015-08-25T18:00:00Z,FOUND PROPERTY/MISC (FOUND),2700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-25T19:00:00Z,BURGLARY/AUTO (459A),400 Block HAMILTON AV,PALO ALTO,94301
+2015-08-25T19:15:00Z,BURGLARY/AUTO (459A),HAMILTON AV & WAVERLEY ST,PALO ALTO,94301
+2015-08-25T19:26:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-25T19:30:00Z,PENAL CODE/TERRORIST THREATS (422),4000 Block BEN LOMOND DR,PALO ALTO,94306
+2015-08-25T21:00:00Z,PSYCH SUBJECT (5150),2200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-25T21:04:00Z,N&D/PARAPHERNALIA (11364),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-25T21:04:00Z,N&D/UNDER INFLUENCE (11550),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-25T21:55:00Z,THEFT PETTY/SHOPLIFT (488S),2800 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-08-25T22:02:00Z,PROWLER/MISC (647G),700 Block SAN CARLOS CT,PALO ALTO,94306
+2015-08-25T22:30:00Z,BURGLARY/AUTO (459A),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-27T00:15:00Z,DUI ADULT/ACCIDENT (23152AA),LOUIS RD & ROSS RD,PALO ALTO,94303
+2015-08-27T01:44:00Z,TRAFFIC/SUSPENDED LICENSE (14601),400 Block MARGARITA AV,PALO ALTO,94306
+2015-08-27T03:02:00Z,N&D/POSSESSION (11350),4200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-27T03:02:00Z,N&D/PARAPHERNALIA (11364),4200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-27T03:02:00Z,TRAFFIC/SUSPENDED LICENSE (14601),4200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-27T03:02:00Z,OUTSIDE WARRANT (O/W-MISD),4200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-27T07:50:00Z,PENAL CODE/TRESPASS (602),1300 Block NEWELL RD,PALO ALTO,94303
+2015-08-27T07:53:00Z,VEHICLE/STOLEN (10851S),2500 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-08-27T08:45:00Z,TRAFFIC/MISC (TRAFMISC),EMBARCADERO RD & WEBSTER ST,PALO ALTO,94301
+2015-08-27T08:53:00Z,ACCIDENT MINOR INJURY (1181),4100 Block BLOCK ALMA ST,PALO ALTO,94306
+2015-08-27T09:36:00Z,ACCIDENT PROPERTY DAMAGE (1182),BRYANT ST & CHANNING AV,PALO ALTO,94301
+2015-08-27T10:00:00Z,BURGLARY/RESIDENTIAL (459R),3800 Block MUMFORD PL,PALO ALTO,94306
+2015-08-27T11:20:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),2600 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-08-27T12:00:00Z,IDENTITY THEFT/MISC. (530M),300 Block WHITCLEM DR,PALO ALTO,94306
+2015-08-27T14:49:00Z,THEFT PETTY/MISC (488M),900 Block AMARILLO AV,PALO ALTO,94303
+2015-08-27T16:46:00Z,ACCIDENT PROPERTY DAMAGE (1182),1700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-27T17:33:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),800 Block PALO ALTO AV,PALO ALTO,94301
+2015-08-27T18:17:00Z,TRAFFIC/SUSPENDED LICENSE (14601),HWY 101 & EMBARCADERO RD,PALO ALTO,94303
+2015-08-27T18:35:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-08-27T19:13:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-27T19:30:00Z,BURGLARY/AUTO (459A),1800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-27T20:10:00Z,LIQUOR LAW/MISC (LIQUORMI),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-27T20:22:00Z,ASSAULT WITH DEADLY WEAPON (245),EL CAMINO REAL & HANSEN WAY,PALO ALTO,94306
+2015-08-27T22:00:00Z,ANIMAL/MISC (ANIMALMI),4200 Block WILKIE WAY,PALO ALTO,94306
+2015-08-28T00:00:00Z,IDENTITY THEFT/INTERNET (530I),700 Block HOMER AV,PALO ALTO,94301
+2015-08-28T08:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-08-28T08:30:00Z,BURGLARY/RESIDENTIAL (459R),3300 Block ALMA ST,PALO ALTO,94306
+2015-08-28T09:50:00Z,PSYCH SUBJECT (5150),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-28T09:50:00Z,B&P/MISC (B&PMISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-28T09:50:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-28T10:08:00Z,THEFT PETTY/MISC (488M),300 Block PASTEUR DR,PALO ALTO,94304
+2015-08-28T11:09:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MARK TWAIN ST & EMBARCADERO RD,PALO ALTO,94303
+2015-08-28T11:35:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-28T15:00:00Z,THEFT GRAND/MISC (487M),2300 Block RAMONA ST,PALO ALTO,94301
+2015-08-28T15:30:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-28T16:00:00Z,MISDEMEANOR/HIT & RUN (20002),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-08-28T16:13:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-08-28T16:58:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-28T17:00:00Z,VANDALISM/MISDEMEANOR (594M),3200 Block SOUTH CT,PALO ALTO,94306
+2015-08-28T17:51:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1400 Block HAMILTON AV,PALO ALTO,94301
+2015-08-28T18:12:00Z,PSYCH SUBJECT (5150),2800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-28T18:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),1200 Block SAND HILL RD,PALO ALTO,94304
+2015-08-28T19:41:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-28T19:56:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-28T20:00:00Z,FOUND PROPERTY/MISC (FOUND),3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-08-28T20:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-08-28T20:30:00Z,FOUND PROPERTY/MISC (FOUND),600 Block E MEADOW DR,PALO ALTO,94306
+2015-08-28T20:30:00Z,SEX CRIME/INDECENT EXPOSURE (314),500 Block HIGH ST,PALO ALTO,94301
+2015-08-28T22:30:00Z,VANDALISM/MISDEMEANOR (594M),700 Block N CALIFORNIA AV,PALO ALTO,94303
+2015-08-28T22:50:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block EMERSON ST,PALO ALTO,94301
+2015-08-29T01:14:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-29T01:32:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-08-29T02:09:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-29T02:16:00Z,PENAL CODE/RESISTING ARREST (148RA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-29T02:16:00Z,PENAL CODE/RESISTING ARREST (148RA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-29T02:16:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-29T02:20:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-29T02:32:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-29T09:00:00Z,FOUND PROPERTY/MISC (FOUND),1400 Block BLOCK EL CAMINO REAL,PALO ALTO,""
+2015-08-29T10:23:00Z,ACCIDENT MINOR INJURY (1181),4000 Block BLOCK PAGE MILL RD,PALO ALTO,""
+2015-08-29T11:30:00Z,CREDIT CARDS/FRAUDULENT USE (484G),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-29T11:30:00Z,THEFT PETTY/MISC (488M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-29T11:43:00Z,VEHICLE/STORED (22651T),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-29T13:45:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-29T14:42:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),ALMA ST & HAMILTON AV,PALO ALTO,94301
+2015-08-29T14:48:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),HAMILTON AV & ALMA ST,PALO ALTO,94301
+2015-08-29T15:30:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-08-29T16:27:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),1600 Block MARIPOSA AV,PALO ALTO,94306
+2015-08-29T18:20:00Z,ACCIDENT MINOR INJURY (1181),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-08-29T18:35:00Z,MUNI CODE/MISC (1090MISC),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-29T19:40:00Z,CASUALTY/FALL (CASUALFA),200 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-29T21:00:00Z,VANDALISM/MISDEMEANOR (594M),3700 Block LA DONNA AV,PALO ALTO,94306
+2015-08-29T23:27:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1000 Block BLOCK WAVERLEY ST,PALO ALTO,94301
+2015-08-29T23:43:00Z,TRAFFIC/MISC (TRAFMISC),VISTA AV & EL CAMINO REAL,PALO ALTO,94306
+2015-08-30T00:00:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),200 Block CHARLES MARX WAY,PALO ALTO,94304
+2015-08-30T00:05:00Z,PSYCH SUBJECT (5150),3700 Block REDWOOD CIR,PALO ALTO,94306
+2015-08-30T00:15:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-08-30T01:51:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block RAMONA ST,PALO ALTO,94301
+2015-08-30T08:40:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),1800 Block EMBARCADERO RD,PALO ALTO,94303
+2015-08-30T10:40:00Z,MISDEMEANOR/HIT & RUN (20002),100 Block PALO ALTO AV,PALO ALTO,94301
+2015-08-30T11:39:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-30T11:39:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-08-30T13:00:00Z,TRAFFIC/MISC (TRAFMISC),NEWELL RD & EMBARCADERO RD,PALO ALTO,94303
+2015-08-30T16:40:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block LYTTON AV,PALO ALTO,94301
+2015-08-30T18:00:00Z,OUTSIDE WARRANT (O/W-MISD),100 Block MONROE DR,PALO ALTO,94306
+2015-08-30T19:30:00Z,BURGLARY/COMMERCIAL (459C),2100 Block W BAYSHORE RD,PALO ALTO,94303
+2015-08-30T22:44:00Z,B&P/MISC (B&PMISC),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-08-30T22:47:00Z,TRAFFIC/SUSPENDED LICENSE (14601),WAVERLEY ST & ADDISON AV,PALO ALTO,94301
+2015-08-30T23:55:00Z,DUI ADULT/ACCIDENT (23152AA),ALMA ST & OREGON EXPY,PALO ALTO,94301
+2015-08-31T00:10:00Z,N&D/POSSESSION (11350),3100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-31T00:10:00Z,N&D/PARAPHERNALIA (11364),3100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-31T00:10:00Z,N&D/UNDER INFLUENCE (11550),3100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-08-31T02:55:00Z,BATTERY/SIMPLE (242SB),300 Block PASTEUR DR,PALO ALTO,94304
+2015-08-31T06:25:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block CHANNING AV,PALO ALTO,94301
+2015-08-31T07:50:00Z,UNATTENDED DEATH/MISC (UNATTDEA),1 Block ENCINA AV,PALO ALTO,94301
+2015-08-31T07:55:00Z,ACCIDENT MINOR INJURY (1181),2000 Block BLOCK BARBARA DR,PALO ALTO,94303
+2015-08-31T08:11:00Z,LOST PROPERTY/MISC (LOST),300 Block PASTEUR DR,PALO ALTO,94304
+2015-08-31T09:26:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & EVERETT AV,PALO ALTO,94301
+2015-08-31T09:30:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3400 Block W BAYSHORE RD,PALO ALTO,94303
+2015-08-31T09:40:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & HAWTHORNE AV,PALO ALTO,94301
+2015-08-31T11:20:00Z,ACCIDENT MINOR INJURY (1181),2300 Block ALMA ST,PALO ALTO,94301
+2015-08-31T11:45:00Z,FOUND PROPERTY/MISC (FOUND),200 Block FOREST AV,PALO ALTO,94301
+2015-08-31T14:56:00Z,PSYCH SUBJECT (5150),300 Block HOMER AV,PALO ALTO,94301
+2015-08-31T18:42:00Z,ROBBERY/MISC (211M),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-08-31T18:42:00Z,ROBBERY/MISC (211M),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-08-31T18:42:00Z,PENAL CODE/MISC (PENALMI),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-08-31T19:30:00Z,BURGLARY/AUTO (459A),300 Block LYTTON AV,PALO ALTO,94301
+2015-08-31T21:22:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),WAVERLEY ST & UNIVERSITY AV,PALO ALTO,94301
+2015-08-31T22:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-08-31T23:46:00Z,VEHICLE/STOLEN (10851S),WAVERLEY ST & LYTTON AV,PALO ALTO,94301
+2015-09-01T02:52:00Z,DRUNK IN PUBLIC (647(F)PC),4000 Block WILKIE WAY,PALO ALTO,94306
+2015-09-01T07:15:00Z,MUNI CODE/MISC (1090MISC),300 Block CHESTNUT AV,PALO ALTO,94306
+2015-09-01T08:04:00Z,ACCIDENT MINOR INJURY (1181),3600 Block BLOCK RAMONA ST,PALO ALTO,94306
+2015-09-01T09:44:00Z,LOST PROPERTY/MISC (LOST),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-01T09:58:00Z,THEFT GRAND/MISC (487M),800 Block ILIMA CT,PALO ALTO,94306
+2015-09-01T11:10:00Z,VANDALISM/FELONY (594F),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-01T11:23:00Z,THEFT PETTY/MISC (488M),700 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-01T11:45:00Z,LOST PROPERTY/MISC (LOST),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-01T12:00:00Z,BURGLARY/AUTO (459A),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-01T13:30:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-01T13:30:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-09-01T13:45:00Z,BURGLARY/AUTO (459A),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-01T13:50:00Z,BURGLARY/AUTO (459A),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-09-01T14:00:00Z,THEFT PETTY/FROM AUTO (488FA),500 Block MILITARY WAY,PALO ALTO,94306
+2015-09-01T14:30:00Z,THEFT PETTY/FROM AUTO (488FA),3800 Block MAGNOLIA DR,PALO ALTO,94306
+2015-09-01T16:00:00Z,TRAFFIC/MISC (TRAFMISC),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-01T16:12:00Z,ACCIDENT PROPERTY DAMAGE (1182),900 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-01T16:14:00Z,TRAFFIC/MISC (TRAFMISC),1800 Block OAK CREEK DR,PALO ALTO,94304
+2015-09-01T16:15:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-01T16:30:00Z,THEFT PETTY/FROM AUTO (488FA),3800 Block MAGNOLIA DR,PALO ALTO,94306
+2015-09-01T17:19:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-01T18:10:00Z,VEHICLE/STORED (22651T),200 Block WEBSTER ST,PALO ALTO,94301
+2015-09-01T19:00:00Z,THEFT PETTY/FROM AUTO (488FA),600 Block BARRON AV,PALO ALTO,94306
+2015-09-01T19:34:00Z,MUNI CODE/MISC (1090MISC),KIPLING ST & LYTTON AV,PALO ALTO,94301
+2015-09-01T20:30:00Z,THEFT PETTY/AUTO ACCESSORY (488A),500 Block MILITARY WAY,PALO ALTO,94306
+2015-09-01T21:00:00Z,THEFT PETTY/MISC (488M),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-01T22:10:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY DR & FLORENCE LN,MENLO PARK,""
+2015-09-01T22:27:00Z,VANDALISM/FELONY (594F),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-02T00:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),1000 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-09-02T00:00:00Z,LOST PROPERTY/MISC (LOST),1500 Block SAND HILL RD,PALO ALTO,94304
+2015-09-02T02:15:00Z,PENAL CODE/RESISTING ARREST (148RA),500 Block MILITARY WAY,PALO ALTO,94306
+2015-09-02T02:15:00Z,POSSESS STOLEN PROP/MISC (496),500 Block MILITARY WAY,PALO ALTO,94306
+2015-09-02T02:15:00Z,IDENTITY THEFT/CREDIT CARDS (530C),500 Block MILITARY WAY,PALO ALTO,94306
+2015-09-02T02:15:00Z,PENAL CODE/TRESPASS (602),500 Block MILITARY WAY,PALO ALTO,94306
+2015-09-02T07:45:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),2100 Block CORNELL ST,PALO ALTO,94306
+2015-09-02T10:09:00Z,VEHICLE/IMPOUNDED (22651),3800 Block BLOCK NELSON DR,PALO ALTO,94306
+2015-09-02T10:12:00Z,TRAFFIC/SUSPENDED LICENSE (14601),PARK BLVD & GRANT AV,PALO ALTO,94306
+2015-09-02T13:45:00Z,FOUND PROPERTY/MISC (FOUND),200 Block FOREST AV,PALO ALTO,94301
+2015-09-02T14:45:00Z,FOUND PROPERTY/MISC (FOUND),200 Block FOREST AV,PALO ALTO,94301
+2015-09-02T15:32:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-09-02T15:38:00Z,PENAL CODE/MISC (PENALMI),200 Block LYTTON AV,PALO ALTO,94301
+2015-09-02T15:40:00Z,ACCIDENT MINOR INJURY (1181),600 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-02T16:07:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block PAGE MILL RD,PALO ALTO,94306
+2015-09-02T16:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-02T17:00:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-09-02T17:35:00Z,VEHICLE/RECOVERED (10851R),3400 Block ROSS RD,PALO ALTO,94303
+2015-09-02T17:35:00Z,VEHICLE/STOLEN (10851S),3400 Block ROSS RD,PALO ALTO,94303
+2015-09-02T17:35:00Z,BURGLARY/COMMERCIAL (459C),3400 Block ROSS RD,PALO ALTO,94303
+2015-09-02T17:35:00Z,BURGLARY/COMMERCIAL (459C),3400 Block ROSS RD,PALO ALTO,94303
+2015-09-02T18:15:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),100 Block SPRINGDALE WAY,"",""
+2015-09-02T19:00:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-09-02T20:30:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-09-02T22:46:00Z,MUNI CODE/MISC (1090MISC),WAVERLEY ST & UNIVERSITY AV,PALO ALTO,94301
+2015-09-02T23:00:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),1500 Block BLOCK WAVERLEY ST,PALO ALTO,94301
+2015-09-02T23:20:00Z,MUNI CODE/MISC (1090MISC),400 Block MITCHELL LN,PALO ALTO,94301
+2015-09-02T23:28:00Z,PENAL CODE/MISC (PENALMI),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-02T23:28:00Z,WARRANT/PALO ALTO (PWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-02T23:49:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-03T00:41:00Z,TRAFFIC/SUSPENDED LICENSE (14601),W BAYSHORE RD & OREGON EXPY,PALO ALTO,94303
+2015-09-03T00:45:00Z,WARRANT/OTHER AGENCY (OWARRANT),OREGON EXPY & W BAYSHORE RD,PALO ALTO,94303
+2015-09-03T02:52:00Z,WARRANT/OTHER AGENCY (OWARRANT),2100 Block UNIVERSITY AV,"",94303
+2015-09-03T03:26:00Z,N&D/PARAPHERNALIA (11364),500 Block HIGH ST,PALO ALTO,94301
+2015-09-03T03:26:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block HIGH ST,PALO ALTO,94301
+2015-09-03T03:32:00Z,POSSESS STOLEN PROP/MISC (496),400 Block HIGH ST,PALO ALTO,94301
+2015-09-03T03:40:00Z,WARRANT/OTHER AGENCY (OWARRANT),2300 Block EMBARCADERO RD,PALO ALTO,94303
+2015-09-03T06:15:00Z,BURGLARY/AUTO (459A),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-09-03T06:22:00Z,ACCIDENT PROPERTY DAMAGE (1182),EL CAMINO REAL & PAGE MILL RD,PALO ALTO,94306
+2015-09-03T11:24:00Z,VEHICLE/RECOVERED (10851R),200 Block SHERMAN AV,PALO ALTO,94306
+2015-09-03T11:59:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),200 Block SHERMAN AV,PALO ALTO,94306
+2015-09-03T12:00:00Z,ACCIDENT MINOR INJURY (1181),2700 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-09-03T13:00:00Z,THEFT PETTY/MISC (488M),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-09-03T15:31:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block E CHARLESTON RD,PALO ALTO,94306
+2015-09-03T17:30:00Z,BURGLARY/RESIDENTIAL (459R),4200 Block RICKEYS WAY,PALO ALTO,94306
+2015-09-03T18:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MORENO AV & ROSS RD,PALO ALTO,94303
+2015-09-03T18:15:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-09-03T18:36:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY AV & FLORENCE ST,PALO ALTO,94301
+2015-09-03T18:45:00Z,ROBBERY/STRONG ARM (211SA),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-03T18:50:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-09-03T19:00:00Z,THEFT PETTY/FROM AUTO (488FA),700 Block MAPLEWOOD AV,PALO ALTO,94303
+2015-09-03T19:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),200 Block E OKEEFE ST,"",94303
+2015-09-03T20:42:00Z,WARRANT/OTHER AGENCY (OWARRANT),400 Block MARGARITA AV,PALO ALTO,94306
+2015-09-03T21:00:00Z,THEFT PETTY/FROM AUTO (488FA),600 Block KINGSLEY AV,PALO ALTO,94301
+2015-09-03T21:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),500 Block WAVERLEY ST,PALO ALTO,94301
+2015-09-03T21:07:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),500 Block WAVERLEY ST,PALO ALTO,94301
+2015-09-03T21:08:00Z,DUI ADULT/ACCIDENT (23152AA),800 Block HAMILTON AV,PALO ALTO,94301
+2015-09-03T21:08:00Z,TRAFFIC/SUSPENDED LICENSE (14601),800 Block HAMILTON AV,PALO ALTO,94301
+2015-09-03T21:30:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-09-03T21:30:00Z,ANIMAL/MISC (ANIMALMI),200 Block FOREST AV,PALO ALTO,94301
+2015-09-03T21:30:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-09-03T23:07:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-09-03T23:09:00Z,PENAL CODE/DISOBEY COURT ORDER (66),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-04T01:05:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block PORTAGE AV,PALO ALTO,94306
+2015-09-04T01:41:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-04T02:04:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block HAMILTON AV,PALO ALTO,94301
+2015-09-04T05:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),3300 Block BLOCK PAGE MILL RD,PALO ALTO,""
+2015-09-04T08:01:00Z,ACCIDENT MINOR INJURY (1181),ALMA ST & OREGON EXPY,PALO ALTO,94301
+2015-09-04T08:50:00Z,FOUND PROPERTY/MISC (FOUND),500 Block N CALIFORNIA AV,PALO ALTO,94301
+2015-09-04T09:00:00Z,BURGLARY/AUTO (459A),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-04T09:04:00Z,TRAFFIC/MISC (TRAFMISC),UNIVERSITY AV & EL CAMINO REAL,PALO ALTO,94301
+2015-09-04T09:30:00Z,FOUND PROPERTY/MISC (FOUND),FOREST AV & WAVERLEY ST,PALO ALTO,94301
+2015-09-04T09:40:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & UNIVERSITY AV,PALO ALTO,94301
+2015-09-04T10:06:00Z,BICYCLE/ABANDONED (ABANBIKE),4200 Block RICKEYS WAY,PALO ALTO,94306
+2015-09-04T12:30:00Z,VEHICLE/STORED (22651T),1100 Block GREENWOOD AV,PALO ALTO,94301
+2015-09-04T13:00:00Z,THEFT GRAND/MISC (487M),600 Block SAND HILL RD,PALO ALTO,94304
+2015-09-04T13:25:00Z,ACCIDENT PROPERTY DAMAGE (1182),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-04T14:05:00Z,B&P/MISC (B&PMISC),1 Block ENCINA AV,PALO ALTO,94301
+2015-09-04T15:05:00Z,SUSP CIRC/SEX CRIME (1066SC),800 Block AMES AV,PALO ALTO,94303
+2015-09-04T15:15:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),200 Block HAWTHORNE AV,PALO ALTO,94301
+2015-09-04T15:28:00Z,ACCIDENT MINOR INJURY (1181),800 Block OREGON EXPY,PALO ALTO,94303
+2015-09-04T16:00:00Z,THEFT PETTY/FROM AUTO (488FA),700 Block CHRISTINE DR,PALO ALTO,94303
+2015-09-04T16:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),700 Block CHRISTINE DR,PALO ALTO,94303
+2015-09-04T16:00:00Z,THEFT PETTY/FROM AUTO (488FA),700 Block CHRISTINE DR,PALO ALTO,94303
+2015-09-04T16:43:00Z,PENAL CODE/TERRORIST THREATS (422),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-04T16:43:00Z,PENAL CODE/TERRORIST THREATS (422),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-04T17:37:00Z,MUNI CODE/SKATEBOARD (1090SKAT),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-04T17:48:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-04T20:27:00Z,ACCIDENT MINOR INJURY (1181),E CHARLESTON RD & WILKIE WAY,PALO ALTO,94306
+2015-09-04T20:28:00Z,VEHICLE/STORED (22651T),800 Block COMMERCIAL ST,PALO ALTO,94303
+2015-09-04T20:55:00Z,BURGLARY/COMMERCIAL (459C),600 Block HIGH ST,PALO ALTO,94301
+2015-09-04T21:45:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block HAMILTON AV,PALO ALTO,94301
+2015-09-04T22:42:00Z,LIQUOR LAW/MISC (LIQUORMI),600 Block BRYANT ST,PALO ALTO,94301
+2015-09-04T22:51:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-04T23:15:00Z,LIQUOR LAW/MISC (LIQUORMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-04T23:15:00Z,LIQUOR LAW/POSSESS BY MINOR (25662),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-04T23:40:00Z,LIQUOR LAW/MISC (LIQUORMI),200 Block LYTTON AV,PALO ALTO,94301
+2015-09-04T23:59:00Z,DUI ADULT/MISC (23152AM),400 Block HAMILTON AV,PALO ALTO,94301
+2015-09-05T00:02:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block FLORENCE ST,PALO ALTO,94301
+2015-09-05T00:21:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-09-05T00:30:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-05T01:20:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block EMERSON ST,PALO ALTO,94301
+2015-09-05T02:15:00Z,TRAFFIC/SUSPENDED LICENSE (14601),SAN ANTONIO RD & HWY 101,PALO ALTO,94303
+2015-09-05T02:24:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-05T03:30:00Z,THEFT GRAND/MISC (487M),900 Block COMMERCIAL ST,PALO ALTO,94303
+2015-09-05T03:42:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-05T05:45:00Z,F&W/BRANDISHING (417),800 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-05T05:45:00Z,F&W/BRANDISHING (417),800 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-05T05:45:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),800 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-05T08:13:00Z,VEHICLE/STORED (22651T),1200 Block BLOCK BRYANT ST,PALO ALTO,94301
+2015-09-05T13:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block STANFORD AV,PALO ALTO,94306
+2015-09-05T15:44:00Z,MUNI CODE/MISC (1090MISC),300 Block LYTTON AV,PALO ALTO,94301
+2015-09-05T16:02:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block MILITARY WAY,PALO ALTO,94306
+2015-09-05T17:15:00Z,THEFT PETTY/SHOPLIFT (488S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-05T17:20:00Z,WARRANT/OTHER AGENCY (OWARRANT),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-05T21:53:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block EMERSON ST,PALO ALTO,94301
+2015-09-06T01:37:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-06T04:45:00Z,N&D/UNDER INFLUENCE (11550),3400 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-06T04:45:00Z,N&D/POSSESSION (11350),3400 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-06T04:45:00Z,N&D/UNDER INFLUENCE (11550),3400 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-06T04:45:00Z,WARRANT/OTHER AGENCY (OWARRANT),3400 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-06T11:54:00Z,PSYCH SUBJECT (5150),700 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-06T14:45:00Z,WARRANT/OTHER AGENCY (OWARRANT),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-09-06T17:25:00Z,TRAFFIC/SUSPENDED LICENSE (14601),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-09-06T21:10:00Z,PSYCH SUBJECT (5150),2200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-06T21:30:00Z,VANDALISM/MISDEMEANOR (594M),1000 Block BLOCK LOMA VERDE AV,PALO ALTO,94303
+2015-09-07T00:32:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-09-07T02:46:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),800 Block CENTER DR,PALO ALTO,94301
+2015-09-07T03:56:00Z,N&D/UNDER INFLUENCE (11550),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-09-07T12:00:00Z,LOST PROPERTY/MISC (LOST),MELVILLE AV & WEBSTER ST,PALO ALTO,94301
+2015-09-07T12:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),3500 Block GREER RD,PALO ALTO,94303
+2015-09-07T12:00:00Z,LOST PROPERTY/MISC (LOST),MELVILLE AV & WEBSTER ST,PALO ALTO,94301
+2015-09-07T13:06:00Z,NOISE COMPLAINT-CONSTRUCTION (1090C),3800 Block MUMFORD PL,PALO ALTO,94306
+2015-09-07T13:30:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),7800 Block CIENEGA RD,"",""
+2015-09-07T14:08:00Z,DUI ADULT/MISC (23152AM),3800 Block PARK AV,PALO ALTO,94306
+2015-09-07T16:51:00Z,THEFT PETTY/SHOPLIFT (488S),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-07T17:35:00Z,ACCIDENT PROPERTY DAMAGE (1182),200 Block CHANNING AV,PALO ALTO,94301
+2015-09-07T18:10:00Z,TRAFFIC/SUSPENDED LICENSE (14601),RAMONA ST & LYTTON AV,PALO ALTO,94301
+2015-09-07T18:51:00Z,WARRANT/PALO ALTO (PWARRANT),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-07T18:51:00Z,WARRANT/OTHER AGENCY (OWARRANT),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-07T19:00:00Z,THEFT PETTY/SHOPLIFT (488S),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-07T19:00:00Z,PENAL CODE/TRESPASS (602),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-07T21:00:00Z,PENAL CODE/MISC (PENALMI),3500 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-07T23:34:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),1000 Block ARROWHEAD WAY,PALO ALTO,94303
+2015-09-07T23:50:00Z,DUI ADULT/MISC (23152AM),500 Block QUARRY RD,PALO ALTO,94304
+2015-09-07T23:50:00Z,PENAL CODE/RESISTING ARREST (148RA),500 Block QUARRY RD,PALO ALTO,94304
+2015-09-08T00:30:00Z,THEFT GRAND/MISC (487M),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-08T00:30:00Z,THEFT GRAND/MISC (487M),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-08T00:57:00Z,N&D/UNDER INFLUENCE (11550),600 Block RAMONA ST,PALO ALTO,94301
+2015-09-08T01:57:00Z,PENAL CODE/RESISTING ARREST (148RA),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-08T01:57:00Z,N&D/UNDER INFLUENCE (11550),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-08T07:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),2200 Block GREER RD,PALO ALTO,94303
+2015-09-08T08:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LOUIS RD & OREGON EXPY,PALO ALTO,94303
+2015-09-08T08:52:00Z,VEHICLE/STORED (22651T),200 Block HIGH ST,PALO ALTO,94301
+2015-09-08T09:48:00Z,VEHICLE/STORED (22651T),1000 Block AMARILLO AV,PALO ALTO,94303
+2015-09-08T10:05:00Z,VEHICLE/STORED (22651T),3200 Block MADDUX DR,PALO ALTO,94303
+2015-09-08T10:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),PARK BLVD & W CHARLESTON RD,PALO ALTO,94306
+2015-09-08T11:25:00Z,ACCIDENT PROPERTY DAMAGE (1182),700 Block WELCH RD,PALO ALTO,94304
+2015-09-08T11:45:00Z,THEFT PETTY/MISC (488M),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-08T12:00:00Z,THEFT PETTY/MISC (488M),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-08T12:53:00Z,BURGLARY/COMMERCIAL (459C),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-08T13:27:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1000 Block MOFFETT CIR,PALO ALTO,94303
+2015-09-08T15:27:00Z,ACCIDENT PROPERTY DAMAGE (1182),EMBARCADERO RD,PALO ALTO,""
+2015-09-08T15:40:00Z,ACCIDENT PROPERTY DAMAGE (1182),3300 Block BLOCK HILLVIEW AV,PALO ALTO,94304
+2015-09-08T15:54:00Z,THEFT GRAND/MISC (487M),400 Block HAMILTON AV,PALO ALTO,94301
+2015-09-08T17:10:00Z,MUNI CODE/MISC (1090MISC),CALIFORNIA AV & PARK BLVD,PALO ALTO,94306
+2015-09-08T17:40:00Z,N&D/UNDER INFLUENCE (11550),700 Block URBAN LN,PALO ALTO,94301
+2015-09-08T19:40:00Z,MISSING ADULT/MISC (1065A),600 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-09-08T20:52:00Z,BURGLARY/AUTO (459A),300 Block HAMILTON AV,PALO ALTO,94301
+2015-09-08T21:02:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-08T21:20:00Z,TRAFFIC/MISC (TRAFMISC),RAMONA ST & UNIVERSITY AV,PALO ALTO,94301
+2015-09-08T22:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),4100 Block HUBBARTT DR,PALO ALTO,94306
+2015-09-08T22:00:00Z,PENAL CODE/TERRORIST THREATS (422),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-08T22:00:00Z,PENAL CODE/TERRORIST THREATS (422),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-08T22:00:00Z,THEFT GRAND/MISC (487M),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-08T22:00:00Z,THEFT GRAND/MISC (487M),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-08T22:07:00Z,WARRANT/OTHER AGENCY (OWARRANT),2700 Block ALMA ST,PALO ALTO,94306
+2015-09-08T23:46:00Z,WARRANT/OTHER AGENCY (OWARRANT),3900 Block PARK BLVD,PALO ALTO,94306
+2015-09-09T00:13:00Z,ANIMAL/MISC (ANIMALMI),800 Block CENTER DR,PALO ALTO,94301
+2015-09-09T01:52:00Z,N&D/UNDER INFLUENCE (11550),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-09-09T01:52:00Z,N&D/POSSESSION (11350),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-09-09T01:52:00Z,N&D/UNDER INFLUENCE (11550),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-09-09T03:30:00Z,DUI ADULT/MISC (23152AM),DONALD DR & ARASTRADERO RD,PALO ALTO,94306
+2015-09-09T07:51:00Z,ACCIDENT MINOR INJURY (1181),AMES AV & ROSS RD,PALO ALTO,94303
+2015-09-09T10:30:00Z,BURGLARY/AUTO (459A),800 Block EMERSON ST,PALO ALTO,94301
+2015-09-09T11:51:00Z,PENAL CODE/MISC (PENALMI),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-09T12:15:00Z,ACCIDENT MINOR INJURY (1181),TASSO ST & UNIVERSITY AV,PALO ALTO,94301
+2015-09-09T13:33:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-09T13:50:00Z,FOUND PROPERTY/MISC (FOUND),300 Block HAWTHORNE AV,PALO ALTO,94301
+2015-09-09T14:20:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),2600 Block HANOVER ST,PALO ALTO,94304
+2015-09-09T15:48:00Z,LOST PROPERTY/MISC (LOST),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-09T16:45:00Z,BURGLARY ATTEMPT/AUTO (459AA),2800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-09T17:04:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),CALIFORNIA AV & PARK BLVD,PALO ALTO,94306
+2015-09-09T17:10:00Z,MUNI CODE/MISC (1090MISC),3100 Block W BAYSHORE RD,PALO ALTO,94303
+2015-09-09T17:39:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),WILKIE WAY & W MEADOW DR,PALO ALTO,94306
+2015-09-09T18:00:00Z,BURGLARY/AUTO (459A),3300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-09T18:00:00Z,BURGLARY/AUTO (459A),3300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-09T18:05:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-09T19:30:00Z,BURGLARY/AUTO (459A),400 Block VENTURA AV,PALO ALTO,94306
+2015-09-09T20:00:00Z,BURGLARY/AUTO (459A),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-09T21:00:00Z,FOUND PROPERTY/MISC (FOUND),3300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-09T21:49:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block LYTTON AV,PALO ALTO,94301
+2015-09-10T00:35:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block LYTTON AV,PALO ALTO,94301
+2015-09-10T01:24:00Z,VEHICLE/MISC (VEHMISC),2300 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-09-10T03:00:00Z,BURGLARY/AUTO (459A),1000 Block TANLAND DR,PALO ALTO,94303
+2015-09-10T03:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),1000 Block TANLAND DR,PALO ALTO,94303
+2015-09-10T05:47:00Z,PENAL CODE/RESISTING ARREST (148RA),500 Block HIGH ST,PALO ALTO,94301
+2015-09-10T08:38:00Z,PSYCH SUBJECT (5150),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-09-10T10:22:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block EMERSON ST,PALO ALTO,94301
+2015-09-10T11:56:00Z,ACCIDENT MINOR INJURY (1181),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-10T12:42:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-10T13:46:00Z,VEHICLE/STORED (22651T),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-09-10T14:52:00Z,ACCIDENT MINOR INJURY (1181),2200 Block BLOCK ALMA ST,PALO ALTO,94301
+2015-09-10T15:08:00Z,CASUALTY/FALL (CASUALFA),600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-09-10T16:00:00Z,PENAL CODE/MISC (PENALMI),2700 Block ALMA ST,PALO ALTO,94306
+2015-09-10T18:00:00Z,THEFT PETTY/FROM AUTO (488FA),500 Block FOREST AV,PALO ALTO,94301
+2015-09-10T18:25:00Z,ACCIDENT PROPERTY DAMAGE (1182),CHANNING AV & ALESTER AV,PALO ALTO,94303
+2015-09-10T18:35:00Z,H&S/MISC (H&SMISC),600 Block SAND HILL RD,PALO ALTO,94304
+2015-09-10T18:35:00Z,WARRANT/OTHER AGENCY (OWARRANT),600 Block SAND HILL RD,PALO ALTO,94304
+2015-09-10T19:15:00Z,ACCIDENT PROPERTY DAMAGE (1182),100 Block CHANNING AV,PALO ALTO,94301
+2015-09-10T19:26:00Z,THEFT PETTY/MISC (488M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-10T20:22:00Z,OUTSIDE INVESTIGATION/MISC (OUTSIDE),ALMA ST & HAMILTON AV,PALO ALTO,94301
+2015-09-10T20:24:00Z,ACCIDENT MINOR INJURY (1181),700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-09-10T20:37:00Z,TRAFFIC/MISC (TRAFMISC),4200 Block BLOCK ALMA ST,PALO ALTO,94306
+2015-09-10T20:40:00Z,BURGLARY/AUTO (459A),400 Block HIGH ST,PALO ALTO,94301
+2015-09-10T22:30:00Z,FOUND PROPERTY/MISC (FOUND),HOMER AV & HIGH ST,PALO ALTO,94301
+2015-09-10T22:40:00Z,FOUND PROPERTY/MISC (FOUND),600 Block HOMER AV,PALO ALTO,94301
+2015-09-10T23:00:00Z,VANDALISM/FELONY (594F),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-11T00:00:00Z,VEHICLE/STORED (22651T),3100 Block MACKALL WAY,PALO ALTO,94306
+2015-09-11T00:14:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block ALMA ST,PALO ALTO,94301
+2015-09-11T00:40:00Z,PENAL CODE/MISC (PENALMI),UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-09-11T02:34:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block NEWELL RD,PALO ALTO,94303
+2015-09-11T05:24:00Z,DUI ADULT/ACCIDENT (23152AA),3800 Block MIDDLEFIELD RD,PALO ALTO,""
+2015-09-11T05:24:00Z,TRAFFIC/SUSPENDED LICENSE (14601),3800 Block MIDDLEFIELD RD,PALO ALTO,""
+2015-09-11T08:05:00Z,B&P/MISC (B&PMISC),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-11T08:30:00Z,THEFT PETTY/AUTO ACCESSORY (488A),700 Block GREER RD,PALO ALTO,94303
+2015-09-11T12:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),3900 Block VENTURA CT,PALO ALTO,94306
+2015-09-11T15:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),NEWELL RD & EMBARCADERO RD,PALO ALTO,94303
+2015-09-11T15:37:00Z,THEFT PETTY/AUTO ACCESSORY (488A),600 Block RAMONA ST,PALO ALTO,94301
+2015-09-11T16:27:00Z,ACCIDENT PROPERTY DAMAGE (1182),E CHARLESTON RD & FABIAN WAY,PALO ALTO,94303
+2015-09-11T16:30:00Z,BURGLARY/RESIDENTIAL (459R),3300 Block VERNON TR,PALO ALTO,94303
+2015-09-11T16:35:00Z,THEFT GRAND/FROM AUTO (487FA),2500 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-09-11T16:35:00Z,MUNI CODE/MISC (1090MISC),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-11T17:00:00Z,FOUND PROPERTY/MISC (FOUND),200 Block HAMILTON AV,PALO ALTO,94301
+2015-09-11T17:39:00Z,TRAFFIC/SUSPENDED LICENSE (14601),200 Block W CHARLESTON RD,PALO ALTO,94306
+2015-09-11T17:49:00Z,ACCIDENT PROPERTY DAMAGE (1182),4100 Block CROSBY PL,PALO ALTO,94306
+2015-09-11T17:50:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-09-11T18:33:00Z,ACCIDENT MINOR INJURY (1181),OREGON EXPY & BRYANT ST,PALO ALTO,94301
+2015-09-11T19:48:00Z,PENAL CODE/RESISTING ARREST (148RA),3100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-11T19:48:00Z,PENAL CODE/RESISTING ARREST (148RA),3100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-11T19:48:00Z,PSYCH SUBJECT (5150),3100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-11T19:48:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-11T20:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block LYTTON AV,PALO ALTO,94301
+2015-09-11T20:26:00Z,TRAFFIC/SUSPENDED LICENSE (14601),500 Block SENECA ST,PALO ALTO,94301
+2015-09-11T20:26:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block SENECA ST,PALO ALTO,94301
+2015-09-11T20:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2015-09-11T22:30:00Z,THEFT PETTY/FROM AUTO (488FA),500 Block HAWTHORNE AV,PALO ALTO,94301
+2015-09-11T23:15:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-11T23:30:00Z,DUI ADULT/ACCIDENT (23152AA),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-11T23:52:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY AV & PALM ST,PALO ALTO,94301
+2015-09-12T00:15:00Z,VEHICLE/STORED (22651T),500 Block EMERSON ST,PALO ALTO,94301
+2015-09-12T00:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),3100 Block BLOCK W BAYSHORE RD,PALO ALTO,94303
+2015-09-12T01:27:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block ADDISON AV,PALO ALTO,94301
+2015-09-12T01:31:00Z,DUI ADULT/ACCIDENT (23152AA),2200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-12T03:53:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-12T03:53:00Z,N&D/POSSESSION (11350),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-12T03:53:00Z,N&D/PARAPHERNALIA (11364),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-12T03:53:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-12T04:49:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block LYTTON AV,PALO ALTO,94301
+2015-09-12T10:00:00Z,PENAL CODE/MISC (PENALMI),600 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-12T12:15:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-12T14:09:00Z,THEFT PETTY/MISC (488M),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-12T14:30:00Z,THEFT PETTY/MISC (488M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-12T14:30:00Z,PENAL CODE/RESISTING ARREST (148RA),200 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-09-12T14:30:00Z,THEFT PETTY/MISC (488M),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-12T16:50:00Z,DUI ADULT/ACCIDENT (23152AA),1900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-12T17:00:00Z,BATTERY/SIMPLE (242SB),900 Block QUARRY RD,PALO ALTO,94304
+2015-09-12T17:00:00Z,BATTERY/SIMPLE (242SB),900 Block QUARRY RD,PALO ALTO,94304
+2015-09-12T18:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),600 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-09-12T18:55:00Z,TRAFFIC/MISC (TRAFMISC),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-12T19:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),STANFORD AVE,PALO ALTO,""
+2015-09-12T21:50:00Z,TRAFFIC/MISC (TRAFMISC),900 Block EL CAMINO REAL,PALO ALTO,""
+2015-09-12T22:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1100 Block EMBARCADERO RD,PALO ALTO,94303
+2015-09-13T01:14:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),CHURCHILL AV & EL CAMINO REAL,PALO ALTO,94306
+2015-09-13T01:38:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-13T01:52:00Z,BATTERY/SIMPLE (242SB),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-13T01:52:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-13T02:08:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block HIGH ST,PALO ALTO,94301
+2015-09-13T14:06:00Z,ACCIDENT PROPERTY DAMAGE (1182),4300 Block BLOCK PAGE MILL RD,PALO ALTO,""
+2015-09-13T15:28:00Z,BATTERY/SIMPLE (242SB),700 Block CLARA DR,PALO ALTO,94303
+2015-09-13T15:28:00Z,PENAL CODE/MISC (PENALMI),700 Block CLARA DR,PALO ALTO,94303
+2015-09-13T17:56:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2200 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-13T17:56:00Z,WARRANT/OTHER AGENCY (OWARRANT),2200 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-13T20:19:00Z,DUI ADULT/MISC (23152AM),SERRA ST & EL CAMINO REAL,STANFORD,94306
+2015-09-13T20:30:00Z,THEFT PETTY/AUTO ACCESSORY (488A),300 Block HOMER AV,PALO ALTO,94301
+2015-09-13T22:00:00Z,THEFT PETTY/FROM AUTO (488FA),300 Block HOMER AV,PALO ALTO,94301
+2015-09-13T22:00:00Z,THEFT PETTY/FROM AUTO (488FA),300 Block HOMER AV,PALO ALTO,94301
+2015-09-13T22:38:00Z,THEFT PETTY/MISC (488M),2400 Block W BAYSHORE RD,PALO ALTO,94303
+2015-09-13T23:00:00Z,THEFT PETTY/AUTO ACCESSORY (488A),4000 Block LAGUNA WAY,PALO ALTO,94306
+2015-09-14T08:38:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),3800 Block PARK BLVD,PALO ALTO,94306
+2015-09-14T10:15:00Z,THEFT PETTY ATT/ AUTO ACCESSOR (488AA),300 Block HOMER AV,PALO ALTO,94301
+2015-09-14T11:42:00Z,WARRANT/OTHER AGENCY (OWARRANT),300 Block CURTNER AV,PALO ALTO,94306
+2015-09-14T12:06:00Z,VEHICLE/STORED (22651T),300 Block CURTNER AV,PALO ALTO,94306
+2015-09-14T12:11:00Z,ACCIDENT MINOR INJURY (1181),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-14T13:20:00Z,ACCIDENT PROPERTY DAMAGE (1182),W MEADOW DR & EL CAMINO WAY,PALO ALTO,94306
+2015-09-14T14:00:00Z,VEHICLE/STOLEN (10851S),2200 Block CORNELL ST,PALO ALTO,94306
+2015-09-14T14:00:00Z,THEFT GRAND/MISC (487M),2200 Block CORNELL ST,PALO ALTO,94306
+2015-09-14T14:00:00Z,THEFT GRAND/MISC (487M),2200 Block CORNELL ST,PALO ALTO,94306
+2015-09-14T15:15:00Z,TRAFFIC/MISC (TRAFMISC),800 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-09-14T15:40:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1000 Block TANLAND DR,PALO ALTO,94303
+2015-09-14T16:00:00Z,THEFT PETTY/FROM AUTO (488FA),3900 Block LOUIS RD,PALO ALTO,94303
+2015-09-14T17:10:00Z,BICYCLE/SAFEKEEPING (IMPOBIKE),300 Block PASTEUR DR,PALO ALTO,94304
+2015-09-14T17:11:00Z,ACCIDENT PROPERTY DAMAGE (1182),UNIVERSITY AV,PALO ALTO,""
+2015-09-14T17:48:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block KIPLING ST,PALO ALTO,94301
+2015-09-14T18:15:00Z,BURGLARY/AUTO (459A),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-14T18:30:00Z,THEFT PETTY/FROM AUTO (488FA),4000 Block SUTHERLAND DR,PALO ALTO,94303
+2015-09-14T18:35:00Z,BURGLARY/AUTO (459A),MIMOSA LN & CALIFORNIA AV,PALO ALTO,94306
+2015-09-14T19:00:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-14T19:00:00Z,THEFT PETTY/AUTO ACCESSORY (488A),3300 Block SOUTH CT,PALO ALTO,94306
+2015-09-14T19:30:00Z,BURGLARY/AUTO (459A),1300 Block DANA AV,PALO ALTO,94301
+2015-09-14T19:41:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-09-14T19:41:00Z,BURGLARY/AUTO (459A),400 Block CALIFORNIA AV,PALO ALTO,94301
+2015-09-14T19:45:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-14T20:00:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-14T20:30:00Z,VANDALISM/MISDEMEANOR (594M),MIMOSA LN & CALIFORNIA AV,PALO ALTO,94306
+2015-09-14T22:47:00Z,SICK & CARED FOR/MISC (1053M),1100 Block COLORADO AV,PALO ALTO,94303
+2015-09-14T23:42:00Z,ACCIDENT MINOR INJURY (1181),600 Block PAGE MILL RD,PALO ALTO,94306
+2015-09-15T00:45:00Z,BURGLARY/AUTO (459A),700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-09-15T04:25:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & PAGE MILL RD,PALO ALTO,94306
+2015-09-15T07:00:00Z,COUNTERFEITING/MISC (477),700 Block WELCH RD,PALO ALTO,94304
+2015-09-15T07:47:00Z,VANDALISM/MISDEMEANOR (594M),200 Block HOMER AV,PALO ALTO,94301
+2015-09-15T08:43:00Z,TRAFFIC/SUSPENDED LICENSE (14601),800 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-09-15T11:45:00Z,N&D/POSSESSION (11350),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-15T11:45:00Z,N&D/UNDER INFLUENCE (11550),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-15T11:45:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-15T12:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-15T12:37:00Z,TRAFFIC/SUSPENDED LICENSE (14601),200 Block HAMILTON AV,PALO ALTO,94301
+2015-09-15T14:00:00Z,FOUND PROPERTY/MISC (FOUND),200 Block PARKSIDE DR,PALO ALTO,94306
+2015-09-15T15:45:00Z,VEHICLE/STORED (22651T),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-15T16:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-15T16:30:00Z,N&D/UNDER INFLUENCE (11550),900 Block INDUSTRIAL AV,PALO ALTO,94303
+2015-09-15T19:59:00Z,TRAFFIC/SUSPENDED LICENSE (14601),1800 Block BLOCK UNIVERSITY AV,PALO ALTO,94301
+2015-09-15T22:00:00Z,THEFT PETTY/FROM AUTO (488FA),1700 Block GUINDA ST,PALO ALTO,94303
+2015-09-15T22:25:00Z,TRAFFIC/MISC (TRAFMISC),HWY 101 N & UNIVERSITY AV,PALO ALTO,94303
+2015-09-15T23:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),100 Block EMERSON ST,PALO ALTO,94301
+2015-09-16T00:00:00Z,BURGLARY/COMMERCIAL (459C),600 Block HIGH ST,PALO ALTO,94301
+2015-09-16T08:56:00Z,PSYCH SUBJECT (5150),3500 Block LAGUNA CT,PALO ALTO,94306
+2015-09-16T09:04:00Z,ACCIDENT MINOR INJURY (1181),600 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-09-16T09:20:00Z,ACCIDENT PROPERTY DAMAGE (1182),4100 Block ALMA ST,PALO ALTO,94306
+2015-09-16T09:55:00Z,TRAFFIC/MISC (TRAFMISC),SAN ANTONIO RD & CHARLESTON RD,PALO ALTO,94303
+2015-09-16T10:50:00Z,BURGLARY/RESIDENTIAL (459R),300 Block KELLOGG AV,PALO ALTO,94301
+2015-09-16T12:00:00Z,IDENTITY THEFT/MISC. (530M),1800 Block EMBARCADERO RD,PALO ALTO,94303
+2015-09-16T13:00:00Z,THEFT PETTY/AUTO ACCESSORY (488A),500 Block OREGON AV,PALO ALTO,94301
+2015-09-16T13:00:00Z,VANDALISM/MISDEMEANOR (594M),500 Block OREGON AV,PALO ALTO,94301
+2015-09-16T17:10:00Z,ACCIDENT PROPERTY DAMAGE (1182),HANSEN WAY & PAGE MILL RD,PALO ALTO,94304
+2015-09-17T01:52:00Z,N&D/POSSESSION (11350),HWY 101 & SAN ANTONIO RD,MOUNTAIN VIEW,""
+2015-09-17T01:58:00Z,VEHICLE/STORED (22651T),3400 Block HILLVIEW AV,PALO ALTO,94304
+2015-09-17T02:44:00Z,N&D/UNDER INFLUENCE (11550),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-17T07:55:00Z,FOUND PROPERTY/MISC (FOUND),SOUTH CT & N CALIFORNIA AV,PALO ALTO,94301
+2015-09-17T10:10:00Z,IDENTITY THEFT/CREDIT CARDS (530C),500 Block GREER RD,PALO ALTO,94303
+2015-09-17T11:06:00Z,ACCIDENT PROPERTY DAMAGE (1182),MIDDLEFIELD RD & EVERETT AV,PALO ALTO,94301
+2015-09-17T12:07:00Z,IDENTITY THEFT/MISC. (530M),3100 Block MADDUX DR,PALO ALTO,94303
+2015-09-17T12:36:00Z,ACCIDENT MINOR INJURY (1181),1000 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-09-17T13:44:00Z,ACCIDENT MINOR INJURY (1181),1700 Block SAND HILL RD,PALO ALTO,94304
+2015-09-17T14:26:00Z,ACCIDENT MINOR INJURY (1181),1200 Block BLOCK NEWELL RD,PALO ALTO,94303
+2015-09-17T17:40:00Z,TRAFFIC/MISC (TRAFMISC),400 Block OLIVE AV,PALO ALTO,94306
+2015-09-17T18:00:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block STANFORD AV,PALO ALTO,""
+2015-09-17T20:45:00Z,TRAFFIC/SUSPENDED LICENSE (14601),MARGARITA AV & EL CAMINO REAL,PALO ALTO,94306
+2015-09-17T21:22:00Z,PENAL CODE/DISOBEY COURT ORDER (66),400 Block LYTTON AV,PALO ALTO,94301
+2015-09-17T21:22:00Z,PENAL CODE/RESISTING ARREST (148RA),400 Block LYTTON AV,PALO ALTO,94301
+2015-09-17T21:22:00Z,PENAL CODE/DISOBEY COURT ORDER (66),400 Block LYTTON AV,PALO ALTO,94301
+2015-09-18T00:41:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-18T00:49:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),RAMONA ST & LYTTON AV,PALO ALTO,94301
+2015-09-18T02:53:00Z,TRAFFIC/SUSPENDED LICENSE (14601),OREGON EXPY & MIDDLEFIELD RD,PALO ALTO,94301
+2015-09-18T11:09:00Z,FOUND PROPERTY/MISC (FOUND),2700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-09-18T14:38:00Z,BICYCLE/ABANDONED (ABANBIKE),2900 Block RAMONA ST,PALO ALTO,94306
+2015-09-18T15:30:00Z,VEHICLE/RECOVERED (10851R),3800 Block BLOCK WHITSELL AV,PALO ALTO,94306
+2015-09-18T15:45:00Z,ACCIDENT MINOR INJURY (1181),EMERSON ST & CHANNING AV,PALO ALTO,94301
+2015-09-18T18:20:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-18T19:00:00Z,MISSING ADULT/MISC (1065A),200 Block FOREST AV,PALO ALTO,94301
+2015-09-18T19:00:00Z,THEFT PETTY/AUTO ACCESSORY (488A),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-18T19:35:00Z,THEFT PETTY/SHOPLIFT (488S),3200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-18T21:45:00Z,TRAFFIC/HAZARDOUS MATERIAL (TRAFHZMT),EL CAMINO REAL & STANFORD AV,PALO ALTO,94306
+2015-09-18T22:15:00Z,VANDALISM/MISDEMEANOR (594M),300 Block PARKSIDE DR,PALO ALTO,94306
+2015-09-18T23:58:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-19T05:02:00Z,PENAL CODE/RESISTING ARREST (148RA),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-09-19T05:02:00Z,PENAL CODE/RESISTING ARREST (148RA),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-09-19T05:02:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),BRYANT ST & UNIVERSITY AV,PALO ALTO,94301
+2015-09-19T11:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),ALMA ST & N CALIFORNIA AV,PALO ALTO,94301
+2015-09-19T11:20:00Z,TRAFFIC/MISC (TRAFMISC),EL CAMINO REAL & PAGE MILL RD,PALO ALTO,94306
+2015-09-19T11:29:00Z,BATTERY/SIMPLE (242SB),300 Block PASTEUR DR,PALO ALTO,94304
+2015-09-19T12:54:00Z,ACCIDENT MINOR INJURY (1181),600 Block SAND HILL RD,PALO ALTO,94304
+2015-09-19T13:00:00Z,UNATTENDED DEATH/MISC (UNATTDEA),3600 Block EVERGREEN DR,PALO ALTO,94303
+2015-09-19T15:22:00Z,DUI ADULT/ACCIDENT (23152AA),600 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-19T19:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),HWY 101 & EMBARCADERO RD,PALO ALTO,94303
+2015-09-19T20:31:00Z,WARRANT/OTHER AGENCY (OWARRANT),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-19T23:15:00Z,THEFT PETTY/FROM AUTO (488FA),2100 Block WELLESLEY ST,PALO ALTO,94306
+2015-09-19T23:35:00Z,B&P/MISC (B&PMISC),400 Block LYTTON AV,PALO ALTO,94301
+2015-09-19T23:45:00Z,WARRANT/OTHER AGENCY (OWARRANT),700 Block EMBARCADERO RD,PALO ALTO,""
+2015-09-20T00:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LYTTON AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-09-20T00:41:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-20T01:48:00Z,VEHICLE/RECOVERED (10851R),300 Block PORTAGE AV,PALO ALTO,94306
+2015-09-20T02:45:00Z,DUI ADULT/MISC (23152AM),WEBSTER ST & HAWTHORNE AV,PALO ALTO,94301
+2015-09-20T03:30:00Z,DUI ADULT/MISC (23152AM),LYTTON AV & ALMA ST,PALO ALTO,94301
+2015-09-20T04:07:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EMBARCADERO RD & HWY 101,PALO ALTO,94303
+2015-09-20T04:45:00Z,BURGLARY/COMMERCIAL (459C),1000 Block ELWELL CT,PALO ALTO,94303
+2015-09-20T14:55:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-09-20T18:39:00Z,ROBBERY/STRONG ARM (211SA),3100 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-09-20T20:35:00Z,VEHICLE/STORED (22651T),HOMER AV & ALMA ST,PALO ALTO,94301
+2015-09-20T21:40:00Z,TRAFFIC/SUSPENDED LICENSE (14601),CHANNING AV & RAMONA ST,PALO ALTO,94301
+2015-09-20T21:55:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-21T00:00:00Z,THEFT PETTY/MISC (488M),200 Block RAMONA ST,PALO ALTO,94301
+2015-09-21T00:00:00Z,THEFT PETTY/MISC (488M),200 Block RAMONA ST,PALO ALTO,94301
+2015-09-21T00:00:00Z,THEFT PETTY/MISC (488M),200 Block RAMONA ST,PALO ALTO,94301
+2015-09-21T00:00:00Z,THEFT PETTY/MISC (488M),200 Block RAMONA ST,PALO ALTO,94301
+2015-09-21T00:00:00Z,THEFT PETTY/MISC (488M),200 Block RAMONA ST,PALO ALTO,94301
+2015-09-21T06:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T06:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T06:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T06:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T06:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T08:30:00Z,LOST PROPERTY/MISC (LOST),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-21T08:30:00Z,LOST PROPERTY/MISC (LOST),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-21T08:30:00Z,LOST PROPERTY/MISC (LOST),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-21T08:30:00Z,LOST PROPERTY/MISC (LOST),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-21T08:30:00Z,LOST PROPERTY/MISC (LOST),400 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-21T08:34:00Z,PSYCH SUBJECT (5150),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-21T08:34:00Z,PSYCH SUBJECT (5150),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-21T08:34:00Z,PSYCH SUBJECT (5150),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-21T08:34:00Z,PSYCH SUBJECT (5150),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-21T08:34:00Z,PSYCH SUBJECT (5150),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-21T10:35:00Z,ACCIDENT PROPERTY DAMAGE (1182),1700 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-09-21T10:35:00Z,ACCIDENT PROPERTY DAMAGE (1182),1700 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-09-21T10:35:00Z,ACCIDENT PROPERTY DAMAGE (1182),1700 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-09-21T10:35:00Z,ACCIDENT PROPERTY DAMAGE (1182),1700 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-09-21T10:35:00Z,ACCIDENT PROPERTY DAMAGE (1182),1700 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-09-21T11:14:00Z,ACCIDENT MINOR INJURY (1181),2000 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-21T11:14:00Z,ACCIDENT MINOR INJURY (1181),2000 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-21T11:14:00Z,ACCIDENT MINOR INJURY (1181),2000 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-21T11:14:00Z,ACCIDENT MINOR INJURY (1181),2000 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-21T11:14:00Z,ACCIDENT MINOR INJURY (1181),2000 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-21T12:57:00Z,VEHICLE/RECOVERED (10851R),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-21T12:57:00Z,VEHICLE/RECOVERED (10851R),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-21T12:57:00Z,VEHICLE/RECOVERED (10851R),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-21T12:57:00Z,VEHICLE/RECOVERED (10851R),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-21T12:57:00Z,VEHICLE/RECOVERED (10851R),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-21T13:30:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),900 Block E CHARLESTON RD,PALO ALTO,94303
+2015-09-21T13:30:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),900 Block E CHARLESTON RD,PALO ALTO,94303
+2015-09-21T13:30:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),900 Block E CHARLESTON RD,PALO ALTO,94303
+2015-09-21T15:00:00Z,FOUND PROPERTY/MISC (FOUND),400 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T15:00:00Z,FOUND PROPERTY/MISC (FOUND),400 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T15:00:00Z,FOUND PROPERTY/MISC (FOUND),400 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T15:00:00Z,FOUND PROPERTY/MISC (FOUND),400 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T15:00:00Z,FOUND PROPERTY/MISC (FOUND),400 Block HAMILTON AV,PALO ALTO,94301
+2015-09-21T16:00:00Z,TRAFFIC/MISC (TRAFMISC),SAN ANTONIO RD & HWY 101,PALO ALTO,94303
+2015-09-21T16:00:00Z,TRAFFIC/MISC (TRAFMISC),SAN ANTONIO RD & HWY 101,PALO ALTO,94303
+2015-09-21T16:00:00Z,TRAFFIC/MISC (TRAFMISC),SAN ANTONIO RD & HWY 101,PALO ALTO,94303
+2015-09-21T16:00:00Z,TRAFFIC/MISC (TRAFMISC),SAN ANTONIO RD & HWY 101,PALO ALTO,94303
+2015-09-21T16:00:00Z,TRAFFIC/MISC (TRAFMISC),SAN ANTONIO RD & HWY 101,PALO ALTO,94303
+2015-09-21T17:55:00Z,MUNI CODE/MISC (1090MISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-21T17:55:00Z,MUNI CODE/MISC (1090MISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-21T17:55:00Z,MUNI CODE/MISC (1090MISC),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-21T18:00:00Z,N&D/MISC (N&DMISC),SAND HILL RD & EL CAMINO REAL,PALO ALTO,94304
+2015-09-21T18:00:00Z,N&D/MISC (N&DMISC),SAND HILL RD & EL CAMINO REAL,PALO ALTO,94304
+2015-09-21T18:00:00Z,N&D/MISC (N&DMISC),SAND HILL RD & EL CAMINO REAL,PALO ALTO,94304
+2015-09-21T19:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-09-21T19:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-09-21T19:00:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-09-21T22:28:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-09-21T22:28:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block COWPER ST,PALO ALTO,94301
+2015-09-21T22:28:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-09-21T22:28:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block COWPER ST,PALO ALTO,94301
+2015-09-21T22:28:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-09-21T22:28:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block COWPER ST,PALO ALTO,94301
+2015-09-21T22:28:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-09-21T22:28:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block COWPER ST,PALO ALTO,94301
+2015-09-21T22:28:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-09-21T22:28:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),400 Block COWPER ST,PALO ALTO,94301
+2015-09-21T22:52:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-21T22:52:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-21T22:52:00Z,PENAL CODE/MISC (PENALMI),400 Block BRYANT ST,PALO ALTO,94301
+2015-09-21T23:24:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2015-09-21T23:24:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2015-09-21T23:24:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2015-09-21T23:24:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2015-09-21T23:24:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2015-09-22T00:00:00Z,BURGLARY/RESIDENTIAL (459R),800 Block WEBSTER ST,PALO ALTO,94301
+2015-09-22T01:06:00Z,N&D/UNDER INFLUENCE (11550),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-22T01:06:00Z,N&D/UNDER INFLUENCE (11550),3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-22T02:41:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LOUIS RD & EMBARCADERO RD,PALO ALTO,94303
+2015-09-22T02:41:00Z,TRAFFIC/SUSPENDED LICENSE (14601),LOUIS RD & EMBARCADERO RD,PALO ALTO,94303
+2015-09-22T08:39:00Z,ASSAULT/SIMPLE (240),300 Block PASTEUR DR,PALO ALTO,94304
+2015-09-22T08:39:00Z,ASSAULT/SIMPLE (240),300 Block PASTEUR DR,PALO ALTO,94304
+2015-09-22T08:39:00Z,PENAL CODE/TRESPASS (602),300 Block PASTEUR DR,PALO ALTO,94304
+2015-09-22T08:39:00Z,ASSAULT/SIMPLE (240),300 Block PASTEUR DR,PALO ALTO,94304
+2015-09-22T08:39:00Z,ASSAULT/SIMPLE (240),300 Block PASTEUR DR,PALO ALTO,94304
+2015-09-22T08:39:00Z,PENAL CODE/TRESPASS (602),300 Block PASTEUR DR,PALO ALTO,94304
+2015-09-22T09:58:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),200 Block VENTURA AV,PALO ALTO,94306
+2015-09-22T09:58:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),200 Block VENTURA AV,PALO ALTO,94306
+2015-09-22T09:58:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),200 Block VENTURA AV,PALO ALTO,94306
+2015-09-22T10:09:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block N SAN ANTONIO RD,"",""
+2015-09-22T10:16:00Z,LOST PROPERTY/MISC (LOST),700 Block FLORALES DR,PALO ALTO,94306
+2015-09-22T10:16:00Z,LOST PROPERTY/MISC (LOST),700 Block FLORALES DR,PALO ALTO,94306
+2015-09-22T10:22:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-22T10:22:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-22T10:37:00Z,ACCIDENT PROPERTY DAMAGE (1182),2800 Block SAND HILL RD,MENLO PARK,""
+2015-09-22T10:37:00Z,ACCIDENT PROPERTY DAMAGE (1182),2800 Block SAND HILL RD,MENLO PARK,""
+2015-09-22T11:00:00Z,THEFT PETTY/MISC (488M),1 Block ENCINA AV,PALO ALTO,94301
+2015-09-22T11:00:00Z,THEFT PETTY/MISC (488M),1 Block ENCINA AV,PALO ALTO,94301
+2015-09-22T11:30:00Z,VANDALISM/FELONY (594F),3700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-22T11:30:00Z,VANDALISM/FELONY (594F),3700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-22T14:11:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block COWPER ST,PALO ALTO,94301
+2015-09-22T14:11:00Z,ACCIDENT PROPERTY DAMAGE (1182),500 Block COWPER ST,PALO ALTO,94301
+2015-09-22T14:39:00Z,ACCIDENT PROPERTY DAMAGE (1182),900 Block COLORADO AV,PALO ALTO,94303
+2015-09-22T14:39:00Z,ACCIDENT PROPERTY DAMAGE (1182),900 Block COLORADO AV,PALO ALTO,94303
+2015-09-22T16:30:00Z,PSYCH SUBJECT (5150),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-22T18:06:00Z,ACCIDENT MINOR INJURY (1181),3000 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-09-22T18:06:00Z,ACCIDENT MINOR INJURY (1181),3000 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-09-22T18:30:00Z,ASSAULT WITH DEADLY WEAPON (245),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-22T18:30:00Z,ASSAULT WITH DEADLY WEAPON (245),3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-22T20:15:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-22T20:15:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-22T20:15:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-22T20:15:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block RAMONA ST,PALO ALTO,94301
+2015-09-22T23:00:00Z,TRAFFIC/MISC (TRAFMISC),LYTTON AV & COWPER ST,PALO ALTO,94301
+2015-09-22T23:00:00Z,TRAFFIC/MISC (TRAFMISC),LYTTON AV & COWPER ST,PALO ALTO,94301
+2015-09-22T23:22:00Z,F&W/BRANDISHING (417),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-22T23:22:00Z,F&W/BRANDISHING (417),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-24T00:25:00Z,TRAFFIC/MISC (TRAFMISC),PALM DR & ARBORETUM RD,STANFORD,""
+2015-09-24T00:28:00Z,BATTERY/PEACE OFFICER (243P),500 Block EMERSON ST,PALO ALTO,94301
+2015-09-24T09:43:00Z,TRAFFIC/MISC (TRAFMISC),EL CAMINO REAL & PORTAGE AV,PALO ALTO,94306
+2015-09-24T15:25:00Z,VEHICLE/IMPOUNDED (22651),2400 Block FABER PL,PALO ALTO,94303
+2015-09-24T16:05:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block ALMA ST,PALO ALTO,94301
+2015-09-24T18:46:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block ARASTRADERO RD,PALO ALTO,94306
+2015-09-24T19:00:00Z,BURGLARY/AUTO (459A),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-24T19:00:00Z,BURGLARY/AUTO (459A),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-24T19:30:00Z,BURGLARY/AUTO (459A),CALIFORNIA AV & ASH ST,PALO ALTO,94306
+2015-09-24T20:00:00Z,VANDALISM/MISDEMEANOR (594M),300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-09-24T20:00:00Z,BURGLARY/AUTO (459A),400 Block SHERMAN AV,PALO ALTO,94306
+2015-09-26T01:50:00Z,MISDEMEANOR/HIT & RUN (20002),2000 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-09-26T04:47:00Z,VEHICLE/STORED (22651T),EL CAMINO REAL & LAMBERT AV,PALO ALTO,94306
+2015-09-26T11:27:00Z,N&D/POSSESSION (11350),2200 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-26T11:27:00Z,WARRANT/OTHER AGENCY (OWARRANT),2200 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-26T12:29:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),500 Block EMERSON ST,PALO ALTO,94301
+2015-09-26T14:00:00Z,ACCIDENT MINOR INJURY (1181),UNIVERSITY AV & SENECA ST,PALO ALTO,94301
+2015-09-26T14:00:00Z,BURGLARY/AUTO (459A),800 Block RICHARDSON CT,PALO ALTO,94303
+2015-09-26T14:00:00Z,UNATTENDED DEATH/MISC (UNATTDEA),400 Block E CHARLESTON RD,PALO ALTO,94306
+2015-09-26T15:21:00Z,ACCIDENT PROPERTY DAMAGE (1182),2500 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94301
+2015-09-26T17:00:00Z,VANDALISM/MISDEMEANOR (594M),1900 Block EMBARCADERO RD,PALO ALTO,94303
+2015-09-26T19:00:00Z,VANDALISM/MISDEMEANOR (594M),300 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-09-26T19:00:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1400 Block EDGEWOOD DR,PALO ALTO,94301
+2015-09-26T20:30:00Z,WARRANT/OTHER AGENCY (OWARRANT),4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-27T01:41:00Z,LOST PROPERTY/MISC (LOST),400 Block CLEMO AV,PALO ALTO,94306
+2015-09-27T03:00:00Z,DUI ADULT/MISC (23152AM),UNIVERSITY AV & W CRESCENT DR,PALO ALTO,94301
+2015-09-27T08:00:00Z,IDENTITY THEFT/OUTSIDE INVEST (530OI),300 Block POE ST,PALO ALTO,94301
+2015-09-27T09:05:00Z,B&P/MISC (B&PMISC),100 Block HOMER AV,PALO ALTO,94301
+2015-09-27T09:34:00Z,PENAL CODE/TRESPASS (602),400 Block WAVERLEY ST,PALO ALTO,94301
+2015-09-27T10:53:00Z,F&W/CONCEALED WEAPON (12020),2200 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-27T10:53:00Z,F&W/CONCEALED WEAPON (12020),2200 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-27T10:53:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2200 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-27T10:53:00Z,POSSESS STOLEN PROP/MISC (496),2200 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-27T10:53:00Z,F&W/MISC (F&WMISC),2200 Block E BAYSHORE RD,PALO ALTO,94303
+2015-09-27T11:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-09-27T12:40:00Z,VEHICLE/STORED (22651T),400 Block PORTAGE AV,PALO ALTO,94306
+2015-09-27T15:40:00Z,IDENTITY THEFT/CREDIT CARDS (530C),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-27T15:40:00Z,THEFT PETTY/MISC (488M),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-27T15:40:00Z,IDENTITY THEFT/CREDIT CARDS (530C),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-09-27T22:45:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3000 Block EMERSON ST,PALO ALTO,94306
+2015-09-28T00:04:00Z,ACCIDENT PROPERTY DAMAGE (1182),600 Block TENNYSON AV,PALO ALTO,94301
+2015-09-28T00:52:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-09-28T01:05:00Z,STALKING/MISC (6469),700 Block DE SOTO DR,PALO ALTO,94303
+2015-09-28T01:05:00Z,SICK & CARED FOR/MISC (1053M),700 Block DE SOTO DR,PALO ALTO,94303
+2015-09-28T01:55:00Z,DUI ADULT/MISC (23152AM),PETER COUTTS RD & PAGE MILL RD,STANFORD,""
+2015-09-28T03:53:00Z,VEHICLE/STORED (22651T),800 Block E CHARLESTON RD,PALO ALTO,94303
+2015-09-28T10:30:00Z,ACCIDENT PROPERTY DAMAGE (1182),4000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-28T11:31:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-28T12:00:00Z,FOUND PROPERTY/MISC (FOUND),100 Block PALO ALTO AV,PALO ALTO,94301
+2015-09-28T15:46:00Z,ACCIDENT MINOR INJURY (1181),700 Block ALMA ST,PALO ALTO,94301
+2015-09-28T15:51:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),700 Block LAYNE CT,PALO ALTO,94306
+2015-09-28T17:49:00Z,ACCIDENT MINOR INJURY (1181),700 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-28T19:00:00Z,PSYCH SUBJECT (5150),300 Block CHESTNUT AV,PALO ALTO,94306
+2015-09-29T01:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),800 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-09-29T02:41:00Z,VANDALISM/FELONY (594F),200 Block HOMER AV,PALO ALTO,94301
+2015-09-29T09:27:00Z,VEHICLE/STORED (22651T),4100 Block ALTA MESA AV,PALO ALTO,94306
+2015-09-29T12:00:00Z,IDENTITY THEFT/CREDIT CARDS (530C),2500 Block ALMA ST,PALO ALTO,94306
+2015-09-29T17:00:00Z,FOUND PROPERTY/MISC (FOUND),200 Block FOREST AV,PALO ALTO,94301
+2015-09-29T17:00:00Z,WARRANT/OTHER AGENCY (OWARRANT),CALIFORNIA AV & EL CAMINO REAL,PALO ALTO,94306
+2015-09-29T17:17:00Z,ACCIDENT PROPERTY DAMAGE (1182),1400 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94301
+2015-09-29T17:22:00Z,PENAL CODE/MISC (PENALMI),1800 Block PARK BLVD,PALO ALTO,94306
+2015-09-29T18:45:00Z,MISDEMEANOR/HIT & RUN (20002),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-09-29T19:00:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-09-29T20:00:00Z,BURGLARY/AUTO (459A),1800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-29T20:00:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-29T20:11:00Z,BURGLARY/AUTO (459A),300 Block LYTTON AV,PALO ALTO,94301
+2015-09-29T20:15:00Z,BURGLARY/AUTO (459A),300 Block SHERMAN AV,PALO ALTO,94306
+2015-09-29T21:49:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-29T21:57:00Z,WARRANT/OTHER AGENCY (OWARRANT),MIDDLEFIELD RD & EMBARCADERO RD,PALO ALTO,94301
+2015-09-29T22:15:00Z,PENAL CODE/MISC (PENALMI),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-30T00:35:00Z,TRAFFIC/MISC (TRAFMISC),SAN ANTONIO RD & FAYETTE DR,MOUNTAIN VIEW,""
+2015-09-30T05:56:00Z,ACCIDENT MINOR INJURY (1181),400 Block PAGE MILL RD,PALO ALTO,94306
+2015-09-30T12:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-09-30T14:19:00Z,VEHICLE/STORED (22651T),3300 Block BIRCH ST,PALO ALTO,94306
+2015-09-30T14:19:00Z,VEHICLE/STORED (22651T),3300 Block BIRCH ST,PALO ALTO,94306
+2015-09-30T16:48:00Z,VEHICLE/STORED (22651T),400 Block SENECA ST,PALO ALTO,94301
+2015-09-30T17:25:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-30T17:30:00Z,PSYCH SUBJECT (5150),4000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-30T18:00:00Z,BURGLARY/AUTO (459A),1800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-09-30T19:45:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block ENCINA AV,PALO ALTO,94301
+2015-09-30T21:00:00Z,BURGLARY/AUTO (459A),2600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-09-30T22:40:00Z,PENAL CODE/MISC (PENALMI),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-09-30T23:52:00Z,TRAFFIC/SUSPENDED LICENSE (14601),WOODLAND AV & UNIVERSITY AV,"",94303
+2015-09-30T23:55:00Z,TRAFFIC/MISC (TRAFMISC),ALMA ST & HAMILTON AV,PALO ALTO,94301
+2015-10-01T00:05:00Z,WARRANT/OTHER AGENCY (OWARRANT),ALMA ST & HAMILTON AV,PALO ALTO,94301
+2015-10-01T17:30:00Z,VANDALISM/MISDEMEANOR (594M),EVERETT AV & FULTON ST,PALO ALTO,94301
+2015-10-01T17:30:00Z,FOUND PROPERTY/MISC (FOUND),200 Block FOREST AV,PALO ALTO,94301
+2015-10-01T19:00:00Z,BURGLARY/AUTO (459A),300 Block HAMILTON AV,PALO ALTO,94301
+2015-10-01T20:34:00Z,ACCIDENT MINOR INJURY (1181),MONTROSE AV & MIDDLEFIELD RD,PALO ALTO,94306
+2015-10-01T21:30:00Z,THEFT PETTY/FROM AUTO (488FA),400 Block GRANT AV,PALO ALTO,94306
+2015-10-02T01:27:00Z,MUNI CODE/MISC (1090MISC),3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-10-03T01:15:00Z,DUI ADULT/MISC (23152AM),400 Block LYTTON AV,PALO ALTO,94301
+2015-10-03T01:15:00Z,PENAL CODE/RESISTING ARREST (148RA),400 Block EMERSON ST,PALO ALTO,94301
+2015-10-03T02:22:00Z,PENAL CODE/FALSE INFO TO POLIC (1489),400 Block RAMONA ST,PALO ALTO,94301
+2015-10-03T03:20:00Z,WARRANT/OTHER AGENCY (OWARRANT),700 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-03T05:30:00Z,VANDALISM/FELONY (594F),1 Block ENCINA AV,PALO ALTO,94301
+2015-10-03T06:13:00Z,VEHICLE/IMPOUNDED (22651),600 Block GILMAN ST,PALO ALTO,94301
+2015-10-03T09:44:00Z,WARRANT/OTHER AGENCY (OWARRANT),400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-03T10:15:00Z,THEFT GRAND/MISC (487M),3400 Block ROSS RD,PALO ALTO,94303
+2015-10-03T12:37:00Z,MUNI CODE/MISC (1090MISC),200 Block LYTTON AV,PALO ALTO,94301
+2015-10-03T15:10:00Z,VEHICLE/IMPOUNDED (22651),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-10-03T17:15:00Z,ACCIDENT MINOR INJURY (1181),200 Block DURAND WAY,PALO ALTO,94304
+2015-10-03T23:17:00Z,PSYCH SUBJECT (5150),700 Block HOMER AV,PALO ALTO,94301
+2015-10-04T00:21:00Z,PENAL CODE/DISOBEY COURT ORDER (66),600 Block LYTTON AV,PALO ALTO,94301
+2015-10-04T02:47:00Z,PSYCH SUBJECT (5150),600 Block LYTTON AV,PALO ALTO,94301
+2015-10-04T06:16:00Z,N&D/POSSESSION (11350),2500 Block E BAYSHORE RD,PALO ALTO,94303
+2015-10-04T06:16:00Z,N&D/PARAPHERNALIA (11364),2500 Block E BAYSHORE RD,PALO ALTO,94303
+2015-10-04T10:00:00Z,THEFT PETTY/FROM AUTO (488FA),3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-10-04T10:50:00Z,ACCIDENT MINOR INJURY (1181),200 Block HAMILTON AV,PALO ALTO,94301
+2015-10-04T11:36:00Z,ACCIDENT MINOR INJURY (1181),3800 Block BLOCK PAGE MILL RD,PALO ALTO,""
+2015-10-04T12:45:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-10-04T13:00:00Z,FOUND PROPERTY/MISC (FOUND),800 Block WEBSTER ST,PALO ALTO,94301
+2015-10-04T15:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),900 Block INDUSTRIAL AV,PALO ALTO,94303
+2015-10-04T15:02:00Z,TRAFFIC/SUSPENDED LICENSE (14601),NEWELL RD & N CALIFORNIA AV,PALO ALTO,94303
+2015-10-04T16:35:00Z,PSYCH SUBJECT (5150),100 Block WEBSTER ST,PALO ALTO,94301
+2015-10-04T17:11:00Z,WARRANT/OTHER AGENCY (OWARRANT),PALO ALTO AV & WEBSTER ST,PALO ALTO,""
+2015-10-04T18:00:00Z,PSYCH SUBJECT (5150),700 Block MORENO AV,PALO ALTO,94303
+2015-10-04T23:20:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-10-04T23:20:00Z,TRAFFIC/MISC (TRAFMISC),E CHARLESTON RD & SAN ANTONIO RD,PALO ALTO,94303
+2015-10-05T03:48:00Z,TRAFFIC/MISC (TRAFMISC),CARLSON & E CHARLESTON RD,PALO ALTO,94306
+2015-10-05T08:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),2300 Block PARK BLVD,PALO ALTO,94306
+2015-10-05T08:24:00Z,ACCIDENT MINOR INJURY (1181),4300 Block BLOCK MILLER AV,PALO ALTO,94306
+2015-10-05T09:33:00Z,VEHICLE/STORED (22651T),600 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-10-05T12:00:00Z,TRAFFIC/STOLEN/LOST PLATE (STLLOSPL),EL CAMINO REAL & VENTURA AV,PALO ALTO,94306
+2015-10-05T15:45:00Z,MUNI CODE/MISC (1090MISC),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-05T15:50:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),400 Block CAMBRIDGE AV,PALO ALTO,94306
+2015-10-05T16:05:00Z,THEFT GRAND/BIKE/BIKE PARTS (487B),EMERSON ST & LYTTON AV,PALO ALTO,94301
+2015-10-05T16:40:00Z,WARRANT/OTHER AGENCY (OWARRANT),2300 Block PARK BLVD,PALO ALTO,94306
+2015-10-05T17:07:00Z,THEFT GRAND/SHOPLIFT (487S),100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-10-05T18:26:00Z,ACCIDENT MINOR INJURY (1181),100 Block OREGON EXPY,PALO ALTO,94306
+2015-10-05T18:28:00Z,MUNI CODE/MISC (1090MISC),EL CAMINO REAL & SAND HILL RD,PALO ALTO,94304
+2015-10-05T18:40:00Z,MUNI CODE/MISC (1090MISC),200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-05T21:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),KENDALL AV & EL CAMINO REAL,PALO ALTO,94306
+2015-10-06T00:01:00Z,TRAFFIC/SUSPENDED LICENSE (14601),UNIVERSITY AV & WAVERLEY ST,PALO ALTO,94301
+2015-10-06T07:26:00Z,H&S/MISC (H&SMISC),400 Block FLORENCE ST,PALO ALTO,94301
+2015-10-06T08:30:00Z,VEHICLE/STORED (22651T),800 Block FOREST AV,PALO ALTO,94301
+2015-10-06T08:34:00Z,ACCIDENT MINOR INJURY (1181),GUINDA ST & UNIVERSITY AV,PALO ALTO,94301
+2015-10-06T08:45:00Z,BURGLARY/RESIDENTIAL (459R),3800 Block MAGNOLIA DR,PALO ALTO,94306
+2015-10-06T09:40:00Z,VEHICLE/STORED (22651T),300 Block KINGSLEY AV,PALO ALTO,94301
+2015-10-06T11:08:00Z,LOST PROPERTY/MISC (LOST),3400 Block ROSS RD,PALO ALTO,94303
+2015-10-06T13:38:00Z,PSYCH SUBJECT (5150),300 Block PASTEUR DR,PALO ALTO,94304
+2015-10-06T14:46:00Z,THEFT GRAND/MISC (487M),100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-06T15:04:00Z,ACCIDENT MINOR INJURY (1181),EMBARCADERO RD,PALO ALTO,""
+2015-10-06T17:00:00Z,THEFT PETTY/FROM AUTO (488FA),500 Block LOMA VERDE AV,PALO ALTO,94306
+2015-10-06T17:44:00Z,ACCIDENT MINOR INJURY (1181),HALE ST & UNIVERSITY AV,PALO ALTO,94301
+2015-10-06T18:03:00Z,ACCIDENT MINOR INJURY (1181),100 Block SAN ANTONIO RD,PALO ALTO,""
+2015-10-06T19:06:00Z,BURGLARY/AUTO (459A),400 Block WEBSTER ST,PALO ALTO,94301
+2015-10-06T19:40:00Z,MUNI CODE/DRINKING IN PUBLIC (1090DRUN),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-06T20:20:00Z,BURGLARY/AUTO (459A),600 Block HIGH ST,PALO ALTO,94301
+2015-10-06T22:00:00Z,THEFT PETTY/FROM AUTO (488FA),600 Block COLORADO AV,PALO ALTO,94306
+2015-10-06T22:37:00Z,N&D/UNDER INFLUENCE (11550),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-06T22:55:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-08T09:50:00Z,VEHICLE/IMPOUNDED (22651),900 Block INDUSTRIAL AV,PALO ALTO,94303
+2015-10-08T14:45:00Z,VEHICLE/STORED (22651T),500 Block BRYANT ST,PALO ALTO,94301
+2015-10-08T15:00:00Z,VEHICLE/IMPOUNDED (22651),500 Block EMERSON ST,PALO ALTO,94301
+2015-10-08T15:00:00Z,VEHICLE/IMPOUNDED (22651),500 Block EMERSON ST,PALO ALTO,94301
+2015-10-08T17:00:00Z,TRAFFIC/MISC (TRAFMISC),EMBARCADERO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-10-08T19:38:00Z,ACCIDENT MINOR INJURY (1181),1000 Block BLOCK UNIVERSITY AV,PALO ALTO,94301
+2015-10-08T21:43:00Z,TRAFFIC/MISC (TRAFMISC),300 Block VENTURA AV,PALO ALTO,94306
+2015-10-08T22:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),2500 Block EMBARCADERO RD,PALO ALTO,94303
+2015-10-08T22:30:00Z,WARRANT/OTHER AGENCY (OWARRANT),2500 Block EMBARCADERO RD,PALO ALTO,94303
+2015-10-08T23:10:00Z,TRAFFIC/MISC (TRAFMISC),1500 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-10-12T08:00:00Z,BICYCLE/ABANDONED (ABANBIKE),1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-10-12T08:05:00Z,ACCIDENT MINOR INJURY (1181),3500 Block BLOCK LOUIS RD,PALO ALTO,94303
+2015-10-12T10:20:00Z,TRAFFIC/SUSPENDED LICENSE (14601),EL CAMINO REAL & MEDICAL FOUNDATIO WAY,PALO ALTO,94301
+2015-10-12T11:28:00Z,WARRANT/OTHER AGENCY (OWARRANT),1400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-12T12:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),100 Block FERNE AV,PALO ALTO,94306
+2015-10-12T14:23:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block MIRANDA GREEN,PALO ALTO,94306
+2015-10-12T16:00:00Z,TRAFFIC/SUSPENDED LICENSE (14601),3300 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-10-12T16:25:00Z,ACCIDENT PROPERTY DAMAGE (1182),400 Block W MEADOW DR,PALO ALTO,94306
+2015-10-12T17:18:00Z,PSYCH SUBJECT (5150),600 Block GEORGIA AV,PALO ALTO,94306
+2015-10-12T17:45:00Z,BURGLARY/AUTO (459A),4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-10-12T20:08:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),400 Block EMERSON ST,PALO ALTO,94301
+2015-10-12T20:15:00Z,TRAFFIC/SUSPENDED LICENSE (14601),300 Block OREGON EXPY,PALO ALTO,94306
+2015-10-12T21:38:00Z,LIQUOR LAW/POSSESS BY MINOR (25662),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-12T21:56:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-12T22:10:00Z,TRAFFIC/SUSPENDED LICENSE (14601),E BAYSHORE RD & LAURA LN,PALO ALTO,94303
+2015-10-12T22:37:00Z,N&D/POSSESSION (11350),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-12T23:10:00Z,WARRANT/OTHER AGENCY (OWARRANT),EL CAMINO REAL & ARASTRADERO RD,PALO ALTO,94306
+2015-10-16T00:42:00Z,WARRANT/OTHER AGENCY (OWARRANT),EMERSON ST & LYTTON AV,PALO ALTO,94301
+2015-10-17T01:30:00Z,MUNI CODE/MISC (1090MISC),3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-10-17T08:34:00Z,WARRANT/OTHER AGENCY (OWARRANT),100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-10-17T17:00:00Z,VEHICLE/STORED (22651T),3800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-10-17T20:36:00Z,WARRANT/OTHER AGENCY (OWARRANT),1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-19T00:20:00Z,FOUND PROPERTY/MISC (FOUND),200 Block FOREST AV,PALO ALTO,94301
+2015-10-19T02:51:00Z,VEHICLE/RECOVERED (10851R),800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-10-19T08:05:00Z,TRAFFIC/SUSPENDED LICENSE (14601),WAVERLEY ST & LINCOLN AV,PALO ALTO,94301
+2015-10-19T09:57:00Z,BURGLARY/SHOPLIFT (459S),300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-19T11:40:00Z,VEHICLE/IMPOUNDED (22651),600 Block TOWLE WAY,PALO ALTO,94306
+2015-10-19T12:00:00Z,"HIT & RUN, PROPERTY DAMAGE (20002(A)VC)",900 Block S CALIFORNIA AV,PALO ALTO,94306
+2015-10-19T15:13:00Z,UNATTENDED DEATH/MISC (UNATTDEA),1 Block ENCINA AV,PALO ALTO,94301
+2015-10-19T15:20:00Z,ACCIDENT MINOR INJURY (1181),1000 Block ELWELL CT,PALO ALTO,94303
+2015-10-19T17:19:00Z,PENAL CODE/MISC (PENALMI),600 Block PALO ALTO AV,PALO ALTO,94301
+2015-10-19T18:41:00Z,ACCIDENT MINOR INJURY (1181),4200 Block BLOCK ARASTRADERO RD,PALO ALTO,94304
+2015-10-20T01:30:00Z,THEFT PETTY/FROM AUTO (488FA),400 Block W CHARLESTON RD,PALO ALTO,94306
+2015-10-20T01:55:00Z,WARRANT/OTHER AGENCY (OWARRANT),3100 Block MADDUX DR,PALO ALTO,94303
+2015-10-20T08:00:00Z,FOUND PROPERTY/MISC (FOUND),700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-10-20T08:00:00Z,FOUND PROPERTY/MISC (FOUND),2600 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-10-20T10:02:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1600 Block SAND HILL RD,PALO ALTO,94304
+2015-10-20T12:00:00Z,BURGLARY/RESIDENTIAL (459R),2500 Block ALMA ST,PALO ALTO,94306
+2015-10-20T12:07:00Z,F&W/DISPOSAL REQUEST (F&WDISPS),200 Block FOREST AV,PALO ALTO,94301
+2015-10-20T15:45:00Z,IDENTITY THEFT/CREDIT CARDS (530C),500 Block SAN ANTONIO AV,PALO ALTO,94306
+2015-10-20T18:33:00Z,ACCIDENT PROPERTY DAMAGE (1182),2400 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-10-21T04:20:00Z,ACCIDENT PROPERTY DAMAGE (1182),3100 Block BLOCK HANOVER ST,PALO ALTO,94304
+2015-10-21T10:19:00Z,ACCIDENT PROPERTY DAMAGE (1182),3200 Block BLOCK ASH ST,PALO ALTO,94306
+2015-10-21T13:45:00Z,ACCIDENT PROPERTY DAMAGE (1182),900 Block AMARILLO AV,PALO ALTO,94303
+2015-10-21T14:54:00Z,ACCIDENT PROPERTY DAMAGE (1182),800 Block GUINDA ST,PALO ALTO,94301
+2015-10-21T15:45:00Z,THEFT PETTY/BIKE/BIKE PARTS (488B),1700 Block BLOCK EL CAMINO REAL,PALO ALTO,""
+2015-10-21T17:30:00Z,BURGLARY/AUTO (459A),3200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-10-21T18:00:00Z,FOUND PROPERTY/MISC (FOUND),3200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-10-21T18:00:00Z,BURGLARY/AUTO (459A),400 Block CHURCHILL AV,PALO ALTO,94301
+2015-10-21T20:20:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),700 Block SAN ANTONIO AV,PALO ALTO,94306
+2015-10-21T20:55:00Z,TRAFFIC/MISC (TRAFMISC),MIDDLEFIELD RD & COLORADO AV,PALO ALTO,94306
+2015-10-21T21:28:00Z,VEHICLE/STORED (22651T),500 Block HIGH ST,PALO ALTO,94301
+2015-10-22T00:30:00Z,DUI ADULT/MISC (23152AM),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-10-22T00:30:00Z,N&D/POSSESSION (11350),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-10-22T00:30:00Z,N&D/PARAPHERNALIA (11364),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-10-22T00:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-10-22T00:30:00Z,DUI ADULT/MISC (23152AM),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-10-22T00:30:00Z,PENAL CODE/MISC (PENALMI),900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-10-22T12:00:00Z,THEFT GRAND/MISC (487M),500 Block EMERSON ST,PALO ALTO,94301
+2015-10-22T14:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC (1066M),200 Block FOREST AV,PALO ALTO,94301
+2015-10-22T14:13:00Z,ACCIDENT PROPERTY DAMAGE (1182),1600 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-10-22T17:40:00Z,PUBLIC INCIDENT/MISC (PUBLICMI),800 Block BARRON AV,PALO ALTO,94306
+2015-10-22T20:50:00Z,WARRANT/OTHER AGENCY (OWARRANT),500 Block WAVERLEY ST,PALO ALTO,94301
+2015-10-23T02:10:00Z,THEFT PETTY/MISC (488M),400 Block LYTTON AV,PALO ALTO,94301
+2015-10-24T02:00:00Z,MISSING ADULT/MISC (1065A),400 Block EMERSON ST,PALO ALTO,94301
+2015-10-24T10:06:00Z,ACCIDENT PROPERTY DAMAGE (1182),300 Block ALMA ST,PALO ALTO,94301
+2015-10-24T15:36:00Z,VEHICLE/STORED (22651T),EMBARCADERO RD & EL CAMINO REAL,PALO ALTO,94301
+2015-10-24T17:44:00Z,DUI ADULT/ACCIDENT (23152AA),MONTE BELLO RD & PAGE MILL RD,PALO ALTO,""
+2015-10-24T21:37:00Z,VEHICLE/STOLEN (10851S),4200 Block PARK BLVD,PALO ALTO,94306
+2015-10-25T00:02:00Z,VEHICLE/STORED,500 Block EMERSON ST,PALO ALTO,94301
+2015-10-25T01:15:00Z,PSYCH SUBJECT,300 Block PASTEUR DR,PALO ALTO,94304
+2015-10-25T03:50:00Z,VANDALISM/FELONY,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-10-25T07:00:00Z,THEFT GRAND/MISC,400 Block WEBSTER ST,PALO ALTO,94301
+2015-10-25T10:30:00Z,VEHICLE/STORED,3000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-10-25T12:00:00Z,FOUND PROPERTY/MISC,800 Block E CHARLESTON RD,PALO ALTO,94303
+2015-10-25T12:40:00Z,ACCIDENT PROPERTY DAMAGE,400 Block WILLOW RD,MENLO PARK,""
+2015-10-25T13:40:00Z,PSYCH SUBJECT,800 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-10-25T17:25:00Z,TRAFFIC/SUSPENDED LICENSE,UNIVERSITY AVE & HWY 101,"",94303
+2015-10-25T19:00:00Z,BURGLARY/AUTO,700 Block EMERSON ST,PALO ALTO,94301
+2015-10-25T19:20:00Z,ANIMAL/MISC,3400 Block BLOCK ROSS RD,PALO ALTO,94303
+2015-10-25T21:22:00Z,TRAFFIC/SUSPENDED LICENSE,SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2015-10-25T21:22:00Z,TRAFFIC/MISC,SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2015-10-25T21:56:00Z,WARRANT/OTHER AGENCY,2300 Block LOUIS RD,PALO ALTO,94303
+2015-10-25T23:09:00Z,TRAFFIC/MISC,EL CAMINO REAL & DINAHS CT,PALO ALTO,94306
+2015-10-25T23:40:00Z,N&D/UNDER INFLUENCE,500 Block SAND HILL RD,PALO ALTO,94304
+2015-10-25T23:40:00Z,N&D/UNDER INFLUENCE (11550),500 Block SAND HILL RD,PALO ALTO,94304
+2015-10-25T23:40:00Z,N&D/POSSESSION,500 Block SAND HILL RD,PALO ALTO,94304
+2015-10-25T23:40:00Z,N&D/UNDER INFLUENCE,500 Block SAND HILL RD,PALO ALTO,94304
+2015-10-26T05:35:00Z,THEFT PETTY/BIKE/BIKE PARTS,500 Block ARASTRADERO RD,PALO ALTO,94306
+2015-10-26T06:15:00Z,POSSESS STOLEN PROP/MISC,500 Block MIRAMONTE AV,PALO ALTO,94306
+2015-10-26T07:51:00Z,ACCIDENT PROPERTY DAMAGE,1500 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-10-26T10:25:00Z,ACCIDENT MINOR INJURY,BRYANT ST & EVERETT AV,PALO ALTO,94301
+2015-10-26T12:00:00Z,IDENTITY THEFT/FRAUD,4200 Block MIRANDA AV,PALO ALTO,94306
+2015-10-26T12:00:00Z,EMBEZZLEMENT/MISC,4200 Block MIRANDA AV,PALO ALTO,94306
+2015-10-26T12:30:00Z,TRAFFIC/STOLEN/LOST PLATE,2300 Block PARK BLVD,PALO ALTO,94306
+2015-10-26T15:20:00Z,ACCIDENT MINOR INJURY,ARBORETUM RD & SAND HILL RD,PALO ALTO,94304
+2015-10-26T17:00:00Z,BURGLARY/AUTO,700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-10-26T17:43:00Z,THEFT PETTY/SHOPLIFT,400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-26T19:00:00Z,LOST PROPERTY/MISC,1700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-10-26T19:30:00Z,PENAL CODE/MISC,PAGE MILL RD & HANOVER ST,PALO ALTO,94304
+2015-10-26T20:15:00Z,BURGLARY/AUTO,400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-26T20:43:00Z,DISTURB PEACE/MISC,1 Block ENCINA AV,PALO ALTO,94301
+2015-10-26T20:43:00Z,PENAL CODE/RESISTING ARREST,1 Block ENCINA AV,PALO ALTO,94301
+2015-10-26T20:56:00Z,ACCIDENT MINOR INJURY,POMONA AV & ARASTRADERO RD,PALO ALTO,94306
+2015-10-26T21:20:00Z,BURGLARY/AUTO,300 Block SHERMAN AV,PALO ALTO,94306
+2015-10-26T23:14:00Z,PSYCH SUBJECT,ALMA ST & W MEADOW DR,PALO ALTO,94306
+2015-10-27T00:01:00Z,FOUND PROPERTY/MISC,200 Block FOREST AV,PALO ALTO,94301
+2015-10-27T10:25:00Z,THEFT PETTY/MISC,3900 Block PARK BLVD,PALO ALTO,94306
+2015-10-27T11:11:00Z,ACCIDENT MINOR INJURY,300 Block KELLOGG AV,PALO ALTO,94301
+2015-10-27T11:40:00Z,TRAFFIC/MISC,ALMA ST & W CHARLESTON RD,PALO ALTO,94306
+2015-10-27T12:27:00Z,PSYCH SUBJECT,3200 Block HILLVIEW AV,PALO ALTO,94304
+2015-10-27T12:29:00Z,ACCIDENT MINOR INJURY,1000 Block BLOCK UNIVERSITY AV,PALO ALTO,94301
+2015-10-27T14:55:00Z,PENAL CODE/RESISTING ARREST,500 Block LOMA VERDE AV,PALO ALTO,94306
+2015-10-27T14:55:00Z,PENAL CODE/MISC,500 Block LOMA VERDE AV,PALO ALTO,94306
+2015-10-27T16:03:00Z,ACCIDENT MINOR INJURY,2800 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-10-27T16:47:00Z,SICK & CARED FOR/MISC,600 Block ASHTON AV,PALO ALTO,94306
+2015-10-27T17:00:00Z,PSYCH SUBJECT,4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-10-27T20:17:00Z,VEHICLE/STORED,700 Block WAVERLEY ST,PALO ALTO,94301
+2015-10-27T21:08:00Z,DOMESTIC VIOLENCE/V COURT ORDE,2300 Block EMBARCADERO RD,PALO ALTO,94303
+2015-10-27T21:08:00Z,WARRANT/OTHER AGENCY,2300 Block EMBARCADERO RD,PALO ALTO,94303
+2015-10-28T00:30:00Z,TRAFFIC/SUSPENDED LICENSE,EMBARCADERO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-10-28T01:05:00Z,VEHICLE/STORED,800 Block FOREST AV,PALO ALTO,94301
+2015-10-28T01:30:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-28T01:30:00Z,PENAL CODE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-28T01:34:00Z,DUI ADULT/MISC,3100 Block W BAYSHORE RD,PALO ALTO,94303
+2015-10-28T02:25:00Z,N&D/PARAPHERNALIA,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-28T02:25:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-28T10:00:00Z,VEHICLE/STORED,400 Block VENTURA AV,PALO ALTO,94306
+2015-10-28T10:53:00Z,TRAFFIC/MISC,MIDDLEFIELD RD & OREGON EXPY,PALO ALTO,94301
+2015-10-28T12:09:00Z,ACCIDENT PROPERTY DAMAGE,200 Block HAMILTON AV,PALO ALTO,94301
+2015-10-28T13:42:00Z,ACCIDENT MINOR INJURY,EMBARCADERO RD & WAVERLEY ST,PALO ALTO,94301
+2015-10-28T13:50:00Z,THEFT PETTY/MISC,400 Block FERNANDO AV,PALO ALTO,94306
+2015-10-28T15:14:00Z,MUNI CODE/DRINKING IN PUBLIC,ENCINA AV,PALO ALTO,94301
+2015-10-28T15:48:00Z,MUNI CODE/DRINKING IN PUBLIC,200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-28T16:30:00Z,THEFT PETTY/MISC,900 Block BLAKE WILBUR DR,PALO ALTO,94304
+2015-10-28T19:17:00Z,DRUNK IN PUBLIC ADULT/MISC,100 Block EL CAMINO REAL,PALO ALTO,""
+2015-10-28T20:09:00Z,PSYCH SUBJECT,300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-10-28T21:25:00Z,WARRANT/OTHER AGENCY,E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-10-28T22:02:00Z,DRUNK IN PUBLIC ADULT/MISC,300 Block LYTTON AV,PALO ALTO,94301
+2015-10-28T22:34:00Z,TRAFFIC/SUSPENDED LICENSE,UNIVERSITY AVE & HWY 101,"",94303
+2015-10-28T22:48:00Z,TRAFFIC/SUSPENDED LICENSE,1100 Block BLOCK RENGSTORFF AV,MOUNTAIN VIEW,""
+2015-10-28T23:25:00Z,TRAFFIC/SUSPENDED LICENSE,100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-28T23:48:00Z,IDENTITY THEFT/FRAUD,100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-10-28T23:48:00Z,POSSESS STOLEN PROP/MISC,100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-10-28T23:48:00Z,WARRANT/OTHER AGENCY,100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-10-29T00:54:00Z,PENAL CODE/MISC,UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-10-29T01:15:00Z,PENAL CODE/MISC,HOMER AV,PALO ALTO,94301
+2015-10-29T01:17:00Z,DUI ADULT/MISC,EMBARCADERO RD & HWY 101,PALO ALTO,94303
+2015-10-29T01:27:00Z,PENAL CODE/MISC,300 Block HOMER AV,PALO ALTO,94301
+2015-10-29T01:38:00Z,PENAL CODE/MISC,300 Block HAMILTON AV,PALO ALTO,94301
+2015-10-29T01:40:00Z,PENAL CODE/MISC,300 Block HAMILTON AV,PALO ALTO,94301
+2015-10-29T02:03:00Z,N&D/PARAPHERNALIA,EL CAMINO REAL & EMBARCADERO RD,PALO ALTO,94301
+2015-10-29T02:15:00Z,TRAFFIC/SUSPENDED LICENSE,UNIVERSITY AV & FLORENCE ST,PALO ALTO,94301
+2015-10-29T08:10:00Z,ACCIDENT MINOR INJURY,STOCK FARM RD & SAND HILL RD,STANFORD,94304
+2015-10-29T09:30:00Z,VEHICLE/MISC,3000 Block PRICE CT,PALO ALTO,94303
+2015-10-29T09:43:00Z,TRAFFIC/SUSPENDED LICENSE,3300 Block BLOCK HILLVIEW AV,PALO ALTO,94304
+2015-10-29T10:00:00Z,PSYCH SUBJECT,1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-10-29T10:10:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,2000 Block GENG RD,PALO ALTO,94303
+2015-10-29T10:39:00Z,DOMESTIC VIOLENCE/BATTERY,SAN ANTONIO RD & HWY 101,PALO ALTO,94303
+2015-10-29T11:29:00Z,THEFT PETTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-10-29T12:00:00Z,FOUND PROPERTY/MISC,200 Block FOREST AV,PALO ALTO,94301
+2015-10-29T13:00:00Z,IDENTITY THEFT/MISC.,4000 Block ORME ST,PALO ALTO,94306
+2015-10-29T13:14:00Z,ACCIDENT MINOR INJURY,500 Block CENTER DR,PALO ALTO,94301
+2015-10-29T13:27:00Z,ACCIDENT MINOR INJURY,CHANNING AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-10-29T16:30:00Z,FOUND PROPERTY/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-29T16:34:00Z,MUNI CODE/DRINKING IN PUBLIC,400 Block LYTTON AV,PALO ALTO,94301
+2015-10-29T18:08:00Z,WARRANT/OTHER AGENCY,400 Block FERNANDO AV,PALO ALTO,94306
+2015-10-29T21:25:00Z,TRAFFIC/SUSPENDED LICENSE,E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-10-29T21:25:00Z,WARRANT/OTHER AGENCY,E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-10-29T21:55:00Z,MUNI CODE/DRINKING IN PUBLIC,400 Block LYTTON AV,PALO ALTO,94301
+2015-10-29T22:02:00Z,MUNI CODE/MISC,400 Block LYTTON AV,PALO ALTO,94301
+2015-10-30T01:37:00Z,DUI ADULT/MISC,400 Block EMERSON ST,PALO ALTO,94301
+2015-10-30T01:38:00Z,PENAL CODE/FALSE INFO TO POLIC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-30T03:03:00Z,DUI ADULT/MISC,ALMA ST & E CHARLESTON RD,PALO ALTO,94306
+2015-10-30T08:31:00Z,VEHICLE/STOLEN,31500 Block PAGE MILL RD,PALO ALTO,""
+2015-10-30T08:31:00Z,VEHICLE/STOLEN,31500 Block PAGE MILL RD,PALO ALTO,""
+2015-10-30T10:07:00Z,VEHICLE/RECOVERED,31000 Block PAGE MILL RD,PALO ALTO,94304
+2015-10-30T11:07:00Z,MISDEMEANOR/HIT & RUN,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-10-30T13:02:00Z,ACCIDENT MINOR INJURY,100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-30T14:20:00Z,VEHICLE/STORED,1700 Block BLOCK PARK BLVD,PALO ALTO,94306
+2015-10-30T15:30:00Z,MUNI CODE/DRINKING IN PUBLIC,400 Block LYTTON AV,PALO ALTO,94301
+2015-10-30T16:30:00Z,PENAL CODE/MISC,SAND HILL RD & EL CAMINO REAL,PALO ALTO,94304
+2015-10-30T16:30:00Z,PENAL CODE/MISC,SAND HILL RD & EL CAMINO REAL,PALO ALTO,94304
+2015-10-30T16:30:00Z,WARRANT/OTHER AGENCY,EL CAMINO REAL & SAND HILL RD,PALO ALTO,94304
+2015-10-30T16:45:00Z,MISDEMEANOR/HIT & RUN,600 Block GEORGIA AV,PALO ALTO,94306
+2015-10-30T19:32:00Z,ACCIDENT PROPERTY DAMAGE,ALMA ST & EVERETT AV,PALO ALTO,94301
+2015-10-30T19:56:00Z,WARRANT/OTHER AGENCY,SAN ANTONIO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-10-30T20:33:00Z,BATTERY/SIMPLE,1 Block ENCINA AV,PALO ALTO,94301
+2015-10-30T21:06:00Z,DUI ADULT/MISC,2200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-10-30T21:06:00Z,B&P/MISC,2200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-10-30T21:06:00Z,PENAL CODE/MISC,2200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-10-30T21:16:00Z,TRAFFIC/SUSPENDED LICENSE,800 Block E CHARLESTON RD,PALO ALTO,94303
+2015-10-30T21:33:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-31T00:45:00Z,VEHICLE/STORED,500 Block EMERSON ST,PALO ALTO,94301
+2015-10-31T01:20:00Z,TRAFFIC/MISC,WAVERLEY ST & LYTTON AV,PALO ALTO,94301
+2015-10-31T01:42:00Z,DUI ADULT/MISC,BRYANT ST & LYTTON AV,PALO ALTO,94301
+2015-10-31T01:42:00Z,N&D/POSSESSION,BRYANT ST & LYTTON AV,PALO ALTO,94301
+2015-10-31T01:42:00Z,DUI ADULT/MISC,BRYANT ST & LYTTON AV,PALO ALTO,94301
+2015-10-31T01:51:00Z,VEHICLE/IMPOUNDED,400 Block BRYANT ST,PALO ALTO,94301
+2015-10-31T03:05:00Z,WARRANT/OTHER AGENCY,300 Block HAMILTON AV,PALO ALTO,94301
+2015-10-31T07:30:00Z,THEFT GRAND/MISC,500 Block COWPER ST,PALO ALTO,94301
+2015-10-31T07:59:00Z,PSYCH SUBJECT,300 Block ALMA ST,PALO ALTO,94301
+2015-10-31T08:20:00Z,THEFT PETTY/MISC,3500 Block ALMA ST,PALO ALTO,94306
+2015-10-31T08:20:00Z,THEFT PETTY/MISC,3500 Block ALMA ST,PALO ALTO,94306
+2015-10-31T11:42:00Z,ACCIDENT MINOR INJURY,4100 Block BLOCK FOOTHILL EXPY,PALO ALTO,94304
+2015-10-31T12:00:00Z,BURGLARY/RESIDENTIAL,300 Block EDLEE AV,PALO ALTO,94306
+2015-10-31T13:45:00Z,TRAFFIC/MISC,4000 Block BLOCK NELSON DR,PALO ALTO,94306
+2015-10-31T15:30:00Z,MUNI CODE/DRINKING IN PUBLIC,400 Block LYTTON AV,PALO ALTO,94301
+2015-10-31T16:31:00Z,WARRANT/OTHER AGENCY,CALIFORNIA ST & SAN ANTONIO RD,MOUNTAIN VIEW,""
+2015-10-31T17:30:00Z,MUNI CODE/MISC,1 Block ENCINA AV,PALO ALTO,94301
+2015-10-31T17:40:00Z,MUNI CODE/MISC,LYTTON AV & BRYANT ST,PALO ALTO,94301
+2015-10-31T17:52:00Z,TRAFFIC/SUSPENDED LICENSE,NEWELL RD & EDGEWOOD DR,PALO ALTO,94303
+2015-10-31T19:50:00Z,WARRANT/OTHER AGENCY,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-10-31T20:00:00Z,VANDALISM/MISDEMEANOR,2400 Block LOUIS RD,PALO ALTO,94303
+2015-10-31T20:00:00Z,VANDALISM/MISDEMEANOR,2400 Block LOUIS RD,PALO ALTO,94303
+2015-10-31T21:30:00Z,ACCIDENT PROPERTY DAMAGE,300 Block CALIFORNIA AV,PALO ALTO,94306
+2015-10-31T21:51:00Z,ACCIDENT PROPERTY DAMAGE,300 Block SHERMAN AV,PALO ALTO,94306
+2015-10-31T22:14:00Z,TRAFFIC/SUSPENDED LICENSE,1100 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-10-31T22:45:00Z,TRAFFIC/SUSPENDED LICENSE,MIDDLEFIELD RD & FOREST AV,PALO ALTO,94301
+2015-10-31T22:45:00Z,TRAFFIC/MISC,ROSS RD & OREGON AV,PALO ALTO,94303
+2015-10-31T23:02:00Z,PENAL CODE/RESISTING ARREST,ARASTRADERO RD & OLD TRACE RD,PALO ALTO,94306
+2015-10-31T23:02:00Z,N&D/POSSESSION,ARASTRADERO RD & OLD TRACE RD,PALO ALTO,94306
+2015-10-31T23:02:00Z,N&D/PARAPHERNALIA,ARASTRADERO RD & OLD TRACE RD,PALO ALTO,94306
+2015-10-31T23:02:00Z,N&D/UNDER INFLUENCE,ARASTRADERO RD & OLD TRACE RD,PALO ALTO,94306
+2015-10-31T23:02:00Z,PENAL CODE/RESISTING ARREST,ARASTRADERO RD & OLD TRACE RD,PALO ALTO,94306
+2015-11-01T04:15:00Z,MUNI CODE/MISC,200 Block HAMILTON AV,PALO ALTO,94301
+2015-11-01T06:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,1900 Block NEWELL RD,PALO ALTO,94303
+2015-11-01T09:00:00Z,VEHICLE/IMPOUNDED,600 Block CHANNING AV,PALO ALTO,94301
+2015-11-01T09:00:00Z,IDENTITY THEFT/OUTSIDE INVEST,4000 Block AMARANTA AV,PALO ALTO,94306
+2015-11-01T09:05:00Z,TRAFFIC/STOLEN/LOST PLATE,600 Block CHANNING AV,PALO ALTO,94301
+2015-11-01T10:00:00Z,THEFT PETTY/FROM AUTO,1600 Block SAND HILL RD,PALO ALTO,94304
+2015-11-01T11:00:00Z,BURGLARY/AUTO,3900 Block FABIAN WAY,PALO ALTO,94303
+2015-11-01T11:00:00Z,BURGLARY/AUTO,3900 Block FABIAN WAY,PALO ALTO,94303
+2015-11-01T12:15:00Z,THEFT PETTY/BIKE/BIKE PARTS,1 Block ENCINA AV,PALO ALTO,94301
+2015-11-01T14:40:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & VENTURA AV,PALO ALTO,94306
+2015-11-01T15:04:00Z,MUNI CODE/MISC,200 Block LYTTON AV,PALO ALTO,94301
+2015-11-01T16:45:00Z,MISDEMEANOR/HIT & RUN,800 Block E CHARLESTON RD,PALO ALTO,94303
+2015-11-01T18:50:00Z,N&D/POSSESSION,2500 Block EMBARCADERO RD,PALO ALTO,94303
+2015-11-01T20:38:00Z,TRAFFIC/SUSPENDED LICENSE,UNIVERSITY AV & CENTER DR,PALO ALTO,94301
+2015-11-01T21:00:00Z,DUI ADULT/MISC,TENNYSON AV & COWPER ST,PALO ALTO,94301
+2015-11-01T21:28:00Z,SUICIDE ADULT ATTEMPT/MISC,3000 Block BRYANT ST,PALO ALTO,94306
+2015-11-01T22:14:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,200 Block FOREST AV,PALO ALTO,94301
+2015-11-01T23:06:00Z,MUNI CODE/DRINKING IN PUBLIC,3800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-11-01T23:32:00Z,TRAFFIC/SUSPENDED LICENSE,FRANCIS DR ST & EMBARCADERO RD,PALO ALTO,94303
+2015-11-02T06:07:00Z,MUNI CODE/DRINKING IN PUBLIC,4000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-02T09:40:00Z,TRAFFIC/SUSPENDED LICENSE,HAWTHORNE AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-11-02T18:19:00Z,ACCIDENT MINOR INJURY,1600 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94301
+2015-11-02T21:54:00Z,TRAFFIC/MISC,ALMA ST & E MEADOW DR,PALO ALTO,94306
+2015-11-02T21:56:00Z,TRAFFIC/SUSPENDED LICENSE,LYTTON AV & COWPER ST,PALO ALTO,94301
+2015-11-02T23:15:00Z,TRAFFIC/SUSPENDED LICENSE,EMBARCADERO RD & NEWELL RD,PALO ALTO,94303
+2015-11-03T00:00:00Z,PENAL CODE/TERRORIST THREATS,200 Block FOREST AV,PALO ALTO,94301
+2015-11-03T00:04:00Z,N&D/PARAPHERNALIA,3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-03T00:04:00Z,WARRANT/OTHER AGENCY,3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-03T01:48:00Z,DRUNK IN PUBLIC,200 Block SHERMAN AV,PALO ALTO,94306
+2015-11-03T12:00:00Z,MISSING ADULT/MISC,5400 Block ENTRADA CEDROS,"",""
+2015-11-03T14:43:00Z,VEHICLE/IMPOUNDED,4200 Block RUTHELMA AV,PALO ALTO,94306
+2015-11-03T14:45:00Z,BURGLARY/AUTO,2300 Block EMBARCADERO RD,PALO ALTO,94303
+2015-11-03T15:08:00Z,F&W/DISPOSAL REQUEST,200 Block FOREST AV,PALO ALTO,94301
+2015-11-03T16:45:00Z,ACCIDENT PROPERTY DAMAGE,N CALIFORNIA AV & GREER RD,PALO ALTO,94303
+2015-11-03T16:45:00Z,THEFT GRAND/SHOPLIFT,2800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-03T17:32:00Z,ACCIDENT MINOR INJURY,1100 Block WAVERLEY ST,PALO ALTO,94301
+2015-11-03T18:15:00Z,THEFT PETTY/MISC,3300 Block HILLVIEW AV,PALO ALTO,94304
+2015-11-03T19:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,700 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-11-03T20:14:00Z,MISSING ADULT/MISC,200 Block FOREST AV,PALO ALTO,94301
+2015-11-03T22:29:00Z,VEHICLE/STORED,3800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-11-04T00:48:00Z,MISSING ADULT/MISC,4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-04T05:34:00Z,WARRANT/OTHER AGENCY,SAN ANTONIO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-11-04T07:11:00Z,VANDALISM/FELONY,1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-11-04T09:46:00Z,N&D/PARAPHERNALIA,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-04T10:29:00Z,THEFT PETTY/MISC,3400 Block ROSS RD,PALO ALTO,94303
+2015-11-04T12:30:00Z,ACCIDENT PROPERTY DAMAGE,100 Block HOMER AV,PALO ALTO,94301
+2015-11-04T12:42:00Z,VEHICLE/STORED,400 Block WILTON AV,PALO ALTO,94306
+2015-11-04T12:44:00Z,THEFT PETTY/BIKE/BIKE PARTS,1500 Block SAND HILL RD,PALO ALTO,94304
+2015-11-04T13:00:00Z,MISSING ADULT/MISC,600 Block EL CAMINO REAL,PALO ALTO,94301
+2015-11-04T13:45:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,CHURCHILL AV & BRYANT ST,PALO ALTO,94301
+2015-11-04T14:58:00Z,VEHICLE/STORED,900 Block CLARK WAY,PALO ALTO,94304
+2015-11-04T16:47:00Z,ACCIDENT PROPERTY DAMAGE,4000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-11-04T18:00:00Z,THEFT PETTY/FROM AUTO,500 Block FULTON ST,PALO ALTO,94301
+2015-11-04T18:47:00Z,DOMESTIC VIOLENCE/BATTERY,700 Block MATADERO AV,PALO ALTO,94306
+2015-11-04T19:43:00Z,ACCIDENT MINOR INJURY,600 Block JOSINA,PALO ALTO,94306
+2015-11-04T21:42:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,900 Block HANSEN WAY,PALO ALTO,94304
+2015-11-04T23:43:00Z,N&D/POSSESSION,4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-04T23:43:00Z,N&D/POSSESS/SALES,4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-05T00:25:00Z,TRAFFIC/SUSPENDED LICENSE,500 Block EMERSON ST,PALO ALTO,94301
+2015-11-05T01:01:00Z,PSYCH SUBJECT,3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-05T01:10:00Z,DRUNK IN PUBLIC ADULT/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-05T01:45:00Z,PENAL CODE/DISOBEY COURT ORDER,EMBARCADERO RD & HWY 101,PALO ALTO,94303
+2015-11-05T01:45:00Z,TRAFFIC/MISC,EMBARCADERO RD & HWY 101,PALO ALTO,94303
+2015-11-05T07:11:00Z,PSYCH SUBJECT,800 Block ALMA ST,PALO ALTO,94301
+2015-11-05T08:15:00Z,THEFT PETTY/BIKE/BIKE PARTS,1100 Block WELCH RD,PALO ALTO,94304
+2015-11-05T10:55:00Z,TRAFFIC/MISC,UNIVERSITY AV & EL CAMINO REAL,PALO ALTO,94301
+2015-11-05T12:00:00Z,FOUND PROPERTY/MISC,3100 Block ALEXIS DR,PALO ALTO,94304
+2015-11-05T13:15:00Z,THEFT PETTY/MISC,3700 Block REDWOOD CIR,PALO ALTO,94306
+2015-11-05T16:00:00Z,ACCIDENT PROPERTY DAMAGE,200 Block CALIFORNIA AV,PALO ALTO,94306
+2015-11-05T17:00:00Z,THEFT GRAND/BIKE/BIKE PARTS,1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-11-05T18:30:00Z,BURGLARY/RESIDENTIAL,700 Block COASTLAND DR,PALO ALTO,94303
+2015-11-05T18:36:00Z,ACCIDENT PROPERTY DAMAGE,WAVERLEY ST & OREGON EXPY,PALO ALTO,94301
+2015-11-05T19:10:00Z,TRAFFIC/MISC,PAGE MILL RD & EL CAMINO REAL,PALO ALTO,94306
+2015-11-05T23:02:00Z,WARRANT/OTHER AGENCY,ALMA ST & E CHARLESTON RD,PALO ALTO,94306
+2015-11-05T23:54:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-06T00:00:00Z,LOST PROPERTY/MISC,2200 Block SANTA ANA ST,PALO ALTO,94303
+2015-11-06T01:18:00Z,THEFT PETTY/FROM AUTO,600 Block WILDWOOD LN,PALO ALTO,94303
+2015-11-06T01:18:00Z,N&D/POSSESSION,600 Block WILDWOOD LN,PALO ALTO,94303
+2015-11-06T01:18:00Z,N&D/PARAPHERNALIA,600 Block WILDWOOD LN,PALO ALTO,94303
+2015-11-06T01:18:00Z,PENAL CODE/POSSESS BURG TOOLS,600 Block WILDWOOD LN,PALO ALTO,94303
+2015-11-06T01:18:00Z,THEFT PETTY/FROM AUTO,600 Block WILDWOOD LN,PALO ALTO,94303
+2015-11-06T09:00:00Z,DOMESTIC VIOLENCE/BATTERY,2300 Block PARK BLVD,PALO ALTO,94306
+2015-11-06T10:45:00Z,THEFT PETTY/MISC,100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-06T10:45:00Z,IDENTITY THEFT/CREDIT CARDS,100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-06T10:45:00Z,THEFT PETTY/MISC,100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-06T10:45:00Z,IDENTITY THEFT/CREDIT CARDS,100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-06T13:38:00Z,IDENTITY THEFT/CREDIT CARDS,1300 Block BRYANT ST,PALO ALTO,94301
+2015-11-06T13:38:00Z,IDENTITY THEFT/CREDIT CARDS,1300 Block BRYANT ST,PALO ALTO,94301
+2015-11-06T14:26:00Z,ACCIDENT MINOR INJURY,700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-11-06T15:22:00Z,ACCIDENT MINOR INJURY,700 Block ALMA ST,PALO ALTO,94301
+2015-11-06T15:30:00Z,THEFT PETTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-06T15:30:00Z,THEFT PETTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-06T17:08:00Z,ACCIDENT PROPERTY DAMAGE,3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-11-06T17:20:00Z,ACCIDENT MINOR INJURY,900 Block ARASTRADERO RD,PALO ALTO,94304
+2015-11-06T20:20:00Z,TRAFFIC/SUSPENDED LICENSE,400 Block FLORENCE ST,PALO ALTO,94301
+2015-11-06T20:30:00Z,BATTERY/SIMPLE,300 Block PASTEUR DR,PALO ALTO,94304
+2015-11-06T20:46:00Z,DUI ADULT/MISC,ROSS RD & MORENO AV,PALO ALTO,94303
+2015-11-06T20:55:00Z,TRAFFIC/MISC,EL CAMINO REAL & DEODAR ST,PALO ALTO,94306
+2015-11-06T21:17:00Z,DUI ADULT/MISC,CORPORATION WAY & E BAYSHORE RD,PALO ALTO,94303
+2015-11-06T22:00:00Z,B&P/MISC,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-06T22:10:00Z,TRAFFIC/SUSPENDED LICENSE,GREER RD & OREGON AV,PALO ALTO,94303
+2015-11-06T22:22:00Z,DRUNK IN PUBLIC ADULT/MISC,400 Block BRYANT ST,PALO ALTO,94301
+2015-11-06T22:22:00Z,PENAL CODE/MISC,400 Block BRYANT ST,PALO ALTO,94301
+2015-11-06T22:54:00Z,TRAFFIC/MISC,4200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-11-07T00:57:00Z,DUI ADULT/MISC,3300 Block BLOCK ALMA ST,PALO ALTO,94306
+2015-11-07T01:03:00Z,TRAFFIC/SUSPENDED LICENSE,LYTTON AV & EMERSON ST,PALO ALTO,94301
+2015-11-07T02:23:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-07T03:00:00Z,TRAFFIC/MISC,ECR & PAMF,PALO ALTO,""
+2015-11-07T03:33:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-07T03:43:00Z,N&D/PARAPHERNALIA,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-07T04:27:00Z,N&D/PARAPHERNALIA,EL CAMINO REAL & MATADERO AV,PALO ALTO,94306
+2015-11-07T08:00:00Z,FOUND PROPERTY/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-07T10:05:00Z,PENAL CODE/TRESPASS,500 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-07T13:35:00Z,TRAFFIC/MISC,ARBORETUM RD & PALM DR,STANFORD,""
+2015-11-07T14:00:00Z,LOST PROPERTY/MISC,800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-11-07T14:00:00Z,FOUND PROPERTY/MISC,MIDDLEFIELD RD & MORENO AV,PALO ALTO,94301
+2015-11-07T16:07:00Z,ACCIDENT MINOR INJURY,1000 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-11-07T18:59:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-07T19:49:00Z,ACCIDENT MINOR INJURY,1800 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-11-07T21:40:00Z,TRAFFIC/SUSPENDED LICENSE,4200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-11-08T01:31:00Z,DUI ADULT/MISC,ALMA ST & KINGSLEY AV,PALO ALTO,94306
+2015-11-08T02:30:00Z,PENAL CODE/FALSE INFO TO POLIC,800 Block BRYANT ST,PALO ALTO,94301
+2015-11-08T02:30:00Z,N&D/POSSESSION,800 Block BRYANT ST,PALO ALTO,94301
+2015-11-08T02:30:00Z,N&D/PARAPHERNALIA,800 Block BRYANT ST,PALO ALTO,94301
+2015-11-08T02:30:00Z,PENAL CODE/FALSE INFO TO POLIC,800 Block BRYANT ST,PALO ALTO,94301
+2015-11-08T02:30:00Z,WARRANT/PALO ALTO,800 Block BRYANT ST,PALO ALTO,94301
+2015-11-08T03:10:00Z,DUI ADULT/MISC,ALMA ST & HAMILTON AV,PALO ALTO,94301
+2015-11-08T04:30:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-08T08:54:00Z,TRAFFIC/MISC,600 Block WAVERLEY ST,PALO ALTO,94301
+2015-11-08T09:59:00Z,VEHICLE/STORED,3000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-11-08T10:00:00Z,TRAFFIC/SUSPENDED LICENSE,SAN ANTONIO AV & ALMA ST,PALO ALTO,94306
+2015-11-08T10:40:00Z,ACCIDENT PROPERTY DAMAGE,1600 Block EMERSON ST,PALO ALTO,94301
+2015-11-08T13:24:00Z,WARRANT/OTHER AGENCY,4200 Block BLOCK ALMA ST,PALO ALTO,94306
+2015-11-08T13:52:00Z,IDENTITY THEFT/OUTSIDE INVEST,2200 Block FRANCIS DR ST,PALO ALTO,94303
+2015-11-08T16:20:00Z,ACCIDENT PROPERTY DAMAGE,100 Block EL CAMINO REAL,PALO ALTO,""
+2015-11-08T16:39:00Z,PSYCH SUBJECT,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-08T18:03:00Z,VEHICLE/STORED,400 Block WAVERLEY ST,PALO ALTO,94301
+2015-11-08T21:00:00Z,FOUND PROPERTY/MISC,600 Block SAND HILL RD,PALO ALTO,94304
+2015-11-08T22:06:00Z,N&D/POSSESSION,UNIVERSITY AV & KIPLING ST,PALO ALTO,94301
+2015-11-08T22:06:00Z,N&D/POSSESSION,UNIVERSITY AV & KIPLING ST,PALO ALTO,94301
+2015-11-08T22:06:00Z,N&D/PARAPHERNALIA,UNIVERSITY AV & KIPLING ST,PALO ALTO,94301
+2015-11-08T22:06:00Z,PENAL CODE/POSSESS BURG TOOLS,UNIVERSITY AV & KIPLING ST,PALO ALTO,94301
+2015-11-08T23:50:00Z,FOUND PROPERTY/MISC,400 Block WAVERLEY ST,PALO ALTO,94301
+2015-11-09T02:40:00Z,N&D/POSSESSION,3500 Block WAVERLEY ST,PALO ALTO,94306
+2015-11-09T02:40:00Z,N&D/PARAPHERNALIA,3500 Block WAVERLEY ST,PALO ALTO,94306
+2015-11-09T02:51:00Z,N&D/POSSESSION,3400 Block BLOCK WAVERLEY ST,PALO ALTO,94306
+2015-11-09T02:51:00Z,WARRANT/OTHER AGENCY,3400 Block BLOCK WAVERLEY ST,PALO ALTO,94306
+2015-11-09T09:00:00Z,THEFT GRAND/FROM AUTO,900 Block CLARK WAY,PALO ALTO,94304
+2015-11-09T09:35:00Z,THEFT PETTY/MISC,2800 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-11-09T10:24:00Z,THEFT PETTY/BIKE/BIKE PARTS,1700 Block SAND HILL RD,PALO ALTO,94304
+2015-11-09T11:19:00Z,THEFT PETTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-09T13:35:00Z,THEFT PETTY/BIKE/BIKE PARTS,1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-11-09T14:06:00Z,OUTSIDE INVESTIGATION/MISC,700 Block CLARK WAY,PALO ALTO,94304
+2015-11-09T14:17:00Z,ACCIDENT PROPERTY DAMAGE,4300 Block BLOCK FOOTHILL EXPY,PALO ALTO,94304
+2015-11-09T21:35:00Z,TRAFFIC/MISC,SAN ANTONIO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-11-09T22:06:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,SAN ANTONIO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-11-10T08:37:00Z,ACCIDENT MINOR INJURY,3100 Block MIRANDA AV,PALO ALTO,94304
+2015-11-10T08:37:00Z,ACCIDENT MINOR INJURY,3100 Block MIRANDA AV,PALO ALTO,94304
+2015-11-10T08:45:00Z,TRAFFIC/MISC,HAWTHORNE AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-11-10T08:45:00Z,TRAFFIC/MISC,HAWTHORNE AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-11-10T08:55:00Z,ACCIDENT PROPERTY DAMAGE,1600 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-11-10T08:55:00Z,ACCIDENT PROPERTY DAMAGE,1600 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-11-10T10:54:00Z,DOMESTIC VIOLENCE/BATTERY,2700 Block ROSS RD,PALO ALTO,94303
+2015-11-10T10:54:00Z,DOMESTIC VIOLENCE/BATTERY,2700 Block ROSS RD,PALO ALTO,94303
+2015-11-10T12:15:00Z,VEHICLE/STORED,300 Block WAVERLEY ST,PALO ALTO,94301
+2015-11-10T12:15:00Z,VEHICLE/STORED,300 Block WAVERLEY ST,PALO ALTO,94301
+2015-11-10T14:16:00Z,F&W/CONCEALED WEAPON,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:16:00Z,F&W/CONCEALED WEAPON,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:16:00Z,COUNTERFEITING/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:16:00Z,WARRANT/OTHER AGENCY,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:16:00Z,PENAL CODE/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:16:00Z,F&W/CONCEALED WEAPON,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:16:00Z,F&W/CONCEALED WEAPON,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:16:00Z,COUNTERFEITING/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:16:00Z,WARRANT/OTHER AGENCY,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:16:00Z,PENAL CODE/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-10T14:47:00Z,ACCIDENT MINOR INJURY,OREGON AV & ROSS RD,PALO ALTO,94303
+2015-11-10T14:47:00Z,ACCIDENT MINOR INJURY,OREGON AV & ROSS RD,PALO ALTO,94303
+2015-11-10T15:47:00Z,ACCIDENT PROPERTY DAMAGE,600 Block SAND HILL RD,PALO ALTO,94304
+2015-11-10T15:47:00Z,ACCIDENT PROPERTY DAMAGE,600 Block SAND HILL RD,PALO ALTO,94304
+2015-11-10T16:40:00Z,MUNI CODE/DRINKING IN PUBLIC,HOMER AV,PALO ALTO,94301
+2015-11-10T16:40:00Z,MUNI CODE/DRINKING IN PUBLIC,HOMER AV,PALO ALTO,94301
+2015-11-10T16:55:00Z,WARRANT/OTHER AGENCY,HOMER AV,PALO ALTO,94301
+2015-11-10T16:55:00Z,WARRANT/OTHER AGENCY,HOMER AV,PALO ALTO,94301
+2015-11-10T17:00:00Z,IDENTITY THEFT/FRAUD,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,N&D/POSSESSION,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,N&D/PARAPHERNALIA,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,PENAL CODE/POSSESS BURG TOOLS,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,THEFT PETTY/SHOPLIFT,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,POSSESS STOLEN PROP/MISC,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,IDENTITY THEFT/FRAUD,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,IDENTITY THEFT/FRAUD,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,N&D/POSSESSION,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,N&D/PARAPHERNALIA,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,PENAL CODE/POSSESS BURG TOOLS,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,THEFT PETTY/SHOPLIFT,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,POSSESS STOLEN PROP/MISC,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T17:00:00Z,IDENTITY THEFT/FRAUD,800 Block ALMA ST,PALO ALTO,94301
+2015-11-10T18:20:00Z,BURGLARY/AUTO,400 Block BRYANT ST,PALO ALTO,94301
+2015-11-10T18:20:00Z,BURGLARY/AUTO,400 Block BRYANT ST,PALO ALTO,94301
+2015-11-10T21:00:00Z,FOUND PROPERTY/MISC,200 Block FOREST AV,PALO ALTO,94301
+2015-11-10T21:00:00Z,FOUND PROPERTY/MISC,200 Block FOREST AV,PALO ALTO,94301
+2015-11-11T08:00:00Z,FOUND PROPERTY/MISC,300 Block LYTTON AV,PALO ALTO,94301
+2015-11-11T14:05:00Z,TRAFFIC/SUSPENDED LICENSE,1100 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-11-11T17:30:00Z,BURGLARY/AUTO,400 Block BRYANT ST,PALO ALTO,94301
+2015-11-11T18:00:00Z,ROBBERY/STRONG ARM,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-11T23:14:00Z,WARRANT/OTHER AGENCY,300 Block OLIVE AV,PALO ALTO,94306
+2015-11-11T23:53:00Z,PENAL CODE/DISOBEY COURT ORDER,100 Block OREGON EXPY,PALO ALTO,94306
+2015-11-12T00:15:00Z,THEFT PETTY/MISC,4300 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-12T05:25:00Z,THEFT GRAND/BIKE/BIKE PARTS,3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-11-12T10:22:00Z,VEHICLE/STORED,2100 Block BIRCH ST,PALO ALTO,94306
+2015-11-12T17:50:00Z,F&W/DISPOSAL REQUEST,200 Block MATADERO RD,PALO ALTO,94306
+2015-11-12T18:30:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-12T21:50:00Z,ACCIDENT PROPERTY DAMAGE,400 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-11-12T23:02:00Z,TRAFFIC/MISC,CHURCHILL AV & EL CAMINO REAL,PALO ALTO,94306
+2015-11-13T00:51:00Z,DRUNK IN PUBLIC ADULT/MISC,400 Block LYTTON AV,PALO ALTO,94301
+2015-11-13T02:50:00Z,DRUNK IN PUBLIC ADULT/MISC,600 Block ARASTRADERO RD,PALO ALTO,94306
+2015-11-13T08:35:00Z,ACCIDENT MINOR INJURY,4200 Block BLOCK WILKIE WAY,PALO ALTO,94306
+2015-11-13T08:59:00Z,ACCIDENT PROPERTY DAMAGE,3200 Block BLOCK GREER RD,PALO ALTO,94303
+2015-11-13T10:27:00Z,ACCIDENT MINOR INJURY,400 Block BRYANT ST,PALO ALTO,94301
+2015-11-13T12:49:00Z,MISSING JUVENILE/MISC,700 Block COLORADO AV,PALO ALTO,94303
+2015-11-13T13:28:00Z,ACCIDENT PROPERTY DAMAGE,600 Block WAVERLEY ST,PALO ALTO,94301
+2015-11-13T14:48:00Z,IDENTITY THEFT/CREDIT CARDS,800 Block COLORADO AV,PALO ALTO,94303
+2015-11-13T16:00:00Z,ACCIDENT PROPERTY DAMAGE,LOUIS RD & OREGON EXPY,PALO ALTO,94303
+2015-11-13T16:45:00Z,N&D/UNDER INFLUENCE,1 Block ENCINA AV,PALO ALTO,94301
+2015-11-13T20:37:00Z,TRAFFIC/MISC,4300 Block BLOCK EL CAMINO REAL,"",""
+2015-11-13T21:47:00Z,PSYCH SUBJECT,800 Block SEALE AV,PALO ALTO,94303
+2015-11-13T23:50:00Z,THEFT PETTY/FROM AUTO,3900 Block PARK BLVD,PALO ALTO,94306
+2015-11-14T03:41:00Z,DRUNK IN PUBLIC ADULT/MISC,3900 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-11-14T09:38:00Z,DOMESTIC VIOLENCE/BATTERY,100 Block CALIFORNIA AV,PALO ALTO,94306
+2015-11-14T11:28:00Z,VEHICLE/STOLEN,3900 Block PARK BLVD,PALO ALTO,94306
+2015-11-14T12:27:00Z,VEHICLE/IMPOUNDED,CHURCHILL AV,PALO ALTO,""
+2015-11-14T16:25:00Z,WARRANT/OTHER AGENCY,400 Block FERNANDO AV,PALO ALTO,94306
+2015-11-14T18:15:00Z,TRAFFIC/STOLEN/LOST PLATE,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-14T20:52:00Z,ACCIDENT MINOR INJURY,SAND HILL RD & OAK CREEK DR,PALO ALTO,94304
+2015-11-15T00:15:00Z,WARRANT/OTHER AGENCY,3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-11-15T00:31:00Z,DRUNK IN PUBLIC ADULT/MISC,100 Block HAMILTON AV,PALO ALTO,94301
+2015-11-15T00:39:00Z,DRUNK IN PUBLIC ADULT/MISC,500 Block BRYANT ST,PALO ALTO,94301
+2015-11-15T01:00:00Z,TRAFFIC/MISC,3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-11-15T01:28:00Z,DUI ADULT/MISC,ALMA ST & HAMILTON AV,PALO ALTO,94301
+2015-11-15T03:00:00Z,WARRANT/OTHER AGENCY,400 Block LYTTON AV,PALO ALTO,94301
+2015-11-15T03:00:00Z,SICK & CARED FOR/MISC,900 Block BRYANT ST,PALO ALTO,94301
+2015-11-15T03:56:00Z,DRUNK IN PUBLIC ADULT/MISC,500 Block RAMONA ST,PALO ALTO,94301
+2015-11-15T08:10:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,ENCINA AV,PALO ALTO,94301
+2015-11-15T10:43:00Z,DOMESTIC VIOLENCE/MISC,1100 Block CLARK WAY,PALO ALTO,94304
+2015-11-15T11:00:00Z,FOUND PROPERTY/MISC,800 Block ALMA ST,PALO ALTO,94301
+2015-11-15T15:00:00Z,BURGLARY/AUTO,2700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-15T16:00:00Z,BURGLARY/AUTO,2700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-15T17:45:00Z,ROBBERY/STRONG ARM,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-15T21:30:00Z,DRUNK IN PUBLIC ADULT/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-15T21:30:00Z,N&D/PARAPHERNALIA,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-15T21:30:00Z,PSYCH SUBJECT,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-15T21:30:00Z,PENAL CODE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-15T21:50:00Z,BURGLARY/COMMERCIAL,1000 Block E MEADOW CIR,PALO ALTO,94303
+2015-11-15T22:00:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & EMBARCADERO RD,PALO ALTO,94301
+2015-11-16T08:30:00Z,PSYCH SUBJECT,2300 Block WILLIAMS ST,PALO ALTO,94306
+2015-11-16T08:30:00Z,W&I/PROTECTIVE CUSTODY,2300 Block WILLIAMS ST,PALO ALTO,94306
+2015-11-16T10:00:00Z,ACCIDENT PROPERTY DAMAGE,600 Block EL CAMINO REAL,PALO ALTO,94301
+2015-11-16T10:15:00Z,VEHICLE/STORED,600 Block HOMER AV,PALO ALTO,94301
+2015-11-17T11:13:00Z,VEHICLE/STORED,100 Block SANTA RITA AV,PALO ALTO,94301
+2015-11-17T12:19:00Z,CASUALTY/FALL,600 Block COWPER ST,PALO ALTO,94301
+2015-11-17T18:00:00Z,BURGLARY/AUTO,JACARANDA LN & BIRCH ST,PALO ALTO,94306
+2015-11-17T18:15:00Z,THEFT GRAND/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-17T23:30:00Z,LOST PROPERTY/MISC,LYTTON AV & EMERSON ST,PALO ALTO,94301
+2015-11-18T00:35:00Z,TRAFFIC/MISC,EMBARCADERO RD & W BAYSHORE RD,PALO ALTO,94303
+2015-11-18T08:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,1500 Block PAGE MILL RD,PALO ALTO,94304
+2015-11-18T08:30:00Z,BURGLARY/RESIDENTIAL,100 Block ELY PL,PALO ALTO,94306
+2015-11-18T09:40:00Z,ACCIDENT PROPERTY DAMAGE,1000 Block BLOCK HAMILTON AV,PALO ALTO,94301
+2015-11-18T09:50:00Z,TRAFFIC/SUSPENDED LICENSE,EVERETT AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-11-18T10:00:00Z,VANDALISM/MISDEMEANOR,4100 Block EL CAMINO WAY,PALO ALTO,94306
+2015-11-18T10:00:00Z,MISSING ADULT/MISC,900 Block BLAKE WILBUR DR,PALO ALTO,94304
+2015-11-18T11:46:00Z,ACCIDENT PROPERTY DAMAGE,3500 Block BLOCK ALMA ST,PALO ALTO,94306
+2015-11-18T12:15:00Z,N&D/PARAPHERNALIA,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-18T12:15:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-18T12:15:00Z,POSSESS BURGLARY TOOLS,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-18T12:15:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-18T13:13:00Z,THEFT PETTY/MISC,800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-11-18T13:30:00Z,BURGLARY/AUTO,200 Block SHERIDAN AV,PALO ALTO,94306
+2015-11-18T13:30:00Z,BURGLARY/AUTO,200 Block SHERIDAN AV,PALO ALTO,94306
+2015-11-18T13:35:00Z,TRAFFIC/RECKLESS DRIVING,100 Block ALMA ST,PALO ALTO,94301
+2015-11-18T16:32:00Z,POSSESS STOLEN PROP/MISC,600 Block HIGH ST,PALO ALTO,94301
+2015-11-18T16:32:00Z,VEHICLE/TAMPERING,600 Block HIGH ST,PALO ALTO,94301
+2015-11-18T17:30:00Z,MUNI CODE/DRINKING IN PUBLIC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-18T17:56:00Z,PSYCH SUBJECT,1900 Block COWPER ST,PALO ALTO,94301
+2015-11-18T18:18:00Z,MUNI CODE/MISC,200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-18T19:00:00Z,ACCIDENT MINOR INJURY,4100 Block BLOCK WILKIE WAY,PALO ALTO,94306
+2015-11-18T21:20:00Z,MISSING ADULT/MISC,300 Block PASTEUR DR,PALO ALTO,94304
+2015-11-18T23:00:00Z,N&D/PARAPHERNALIA,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-19T00:26:00Z,WARRANT/OTHER AGENCY,DONOHOE ST & CAPITOL AV,"",94303
+2015-11-19T01:10:00Z,BATTERY/SIMPLE,300 Block PASTEUR DR,PALO ALTO,94304
+2015-11-19T06:48:00Z,FELONY HIT & RUN,SERRA ST & EL CAMINO REAL,STANFORD,94306
+2015-11-19T07:52:00Z,ACCIDENT MINOR INJURY,500 Block ALMA ST,PALO ALTO,94301
+2015-11-19T08:12:00Z,ACCIDENT MINOR INJURY,200 Block MIDDLEFIELD RD,PALO ALTO,""
+2015-11-19T10:00:00Z,FOUND PROPERTY/MISC,800 Block ALMA ST,PALO ALTO,94301
+2015-11-19T10:23:00Z,ACCIDENT PROPERTY DAMAGE,PAGE MILL RD & EL CAMINO REAL,PALO ALTO,94306
+2015-11-19T12:00:00Z,ELDER ABUSE/FINANCIAL,3800 Block CORINA WAY,PALO ALTO,94303
+2015-11-19T12:40:00Z,ACCIDENT MINOR INJURY,1500 Block EMBARCADERO RD,PALO ALTO,94303
+2015-11-19T15:15:00Z,ACCIDENT PROPERTY DAMAGE,700 Block SAND HILL RD,PALO ALTO,94304
+2015-11-19T15:23:00Z,ACCIDENT PROPERTY DAMAGE,4100 Block ARASTRADERO RD,PALO ALTO,""
+2015-11-19T17:05:00Z,TRAFFIC/MISC,EL CAMINO REAL & EMBARCADERO RD,PALO ALTO,94301
+2015-11-19T17:45:00Z,MISDEMEANOR/HIT & RUN,700 Block MONTROSE AV,PALO ALTO,94303
+2015-11-19T18:54:00Z,VEHICLE/STOLEN,900 Block EL CAMINO REAL,PALO ALTO,""
+2015-11-19T22:58:00Z,SICK & CARED FOR/MISC,100 Block FOREST AV,PALO ALTO,94301
+2015-11-19T23:13:00Z,DRUNK IN PUBLIC ADULT/MISC,400 Block BRYANT ST,PALO ALTO,94301
+2015-11-20T08:10:00Z,ACCIDENT MINOR INJURY,500 Block ALMA ST,PALO ALTO,94301
+2015-11-20T11:30:00Z,ACCIDENT PROPERTY DAMAGE,4000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-20T13:00:00Z,PSYCH SUBJECT,300 Block FOREST AV,PALO ALTO,94301
+2015-11-20T13:02:00Z,MISDEMEANOR/HIT & RUN,500 Block WAVERLEY ST,PALO ALTO,94301
+2015-11-20T14:30:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-20T16:00:00Z,BURGLARY/AUTO,1900 Block EMBARCADERO RD,PALO ALTO,94303
+2015-11-20T16:55:00Z,THEFT PETTY/SHOPLIFT,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-20T19:30:00Z,THEFT GRAND/BIKE/BIKE PARTS,200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-20T19:58:00Z,DRUNK IN PUBLIC ADULT/MISC,UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-11-20T20:11:00Z,DUI ADULT/ACCIDENT,BIRCH ST & FERNANDO AV,PALO ALTO,94306
+2015-11-20T20:20:00Z,PENAL CODE/RESISTING ARREST,700 Block NEWELL RD,PALO ALTO,94303
+2015-11-20T23:50:00Z,VEHICLE/STORED,500 Block EMERSON ST,PALO ALTO,94301
+2015-11-21T00:35:00Z,N&D/UNDER INFLUENCE,400 Block EMERSON ST,PALO ALTO,94301
+2015-11-21T02:00:00Z,CASUALTY/FALL,500 Block RAMONA ST,PALO ALTO,94301
+2015-11-21T02:35:00Z,ROBBERY/STRONG ARM,UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-11-21T02:35:00Z,DRUNK IN PUBLIC ADULT/MISC,UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-11-21T12:23:00Z,BURGLARY/AUTO,700 Block EMBARCADERO RD,PALO ALTO,94303
+2015-11-21T15:25:00Z,VEHICLE/STORED,EL CAMINO REAL & CHURCHILL AV,PALO ALTO,94306
+2015-11-21T17:40:00Z,WARRANT/OTHER AGENCY,100 Block PAGE MILL RD,PALO ALTO,94304
+2015-11-21T17:40:00Z,N&D/PARAPHERNALIA,100 Block PAGE MILL RD,PALO ALTO,94304
+2015-11-21T17:40:00Z,POSSESS STOLEN PROP/MISC,100 Block PAGE MILL RD,PALO ALTO,94304
+2015-11-21T17:40:00Z,WARRANT/OTHER AGENCY,100 Block PAGE MILL RD,PALO ALTO,94304
+2015-11-21T22:50:00Z,ACCIDENT PROPERTY DAMAGE,800 Block BRYANT ST,PALO ALTO,94301
+2015-11-22T04:19:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-22T09:20:00Z,PSYCH SUBJECT,BARRON AV & EL CAMINO REAL,PALO ALTO,94306
+2015-11-22T15:00:00Z,FOUND PROPERTY/MISC,3200 Block PARK BLVD,PALO ALTO,94306
+2015-11-22T18:25:00Z,PSYCH SUBJECT,800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-11-22T18:30:00Z,BURGLARY/AUTO,400 Block PORTAGE AV,PALO ALTO,94306
+2015-11-22T20:00:00Z,N&D/POSSESSION,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-22T20:00:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-22T21:15:00Z,PSYCH SUBJECT,600 Block ARASTRADERO RD,PALO ALTO,94306
+2015-11-22T22:11:00Z,ACCIDENT PROPERTY DAMAGE,E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-11-22T23:41:00Z,DUI ADULT/ACCIDENT,2600 Block HANOVER ST,PALO ALTO,94304
+2015-11-23T00:28:00Z,PSYCH SUBJECT,400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-23T08:00:00Z,BURGLARY/AUTO,400 Block BRYANT ST,PALO ALTO,94301
+2015-11-23T08:13:00Z,ACCIDENT MINOR INJURY,UNIVERSITY AV,PALO ALTO,""
+2015-11-23T08:20:00Z,THEFT PETTY/BIKE/BIKE PARTS,1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-11-23T09:15:00Z,F&W/DISPOSAL REQUEST,200 Block FOREST AV,PALO ALTO,94301
+2015-11-23T09:33:00Z,THEFT PETTY/BIKE/BIKE PARTS,UNIVERSITY AV & HIGH ST,PALO ALTO,94301
+2015-11-23T09:40:00Z,FOUND PROPERTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-23T09:48:00Z,THEFT PETTY/MISC,400 Block FERNANDO AV,PALO ALTO,94306
+2015-11-23T10:45:00Z,BURGLARY/AUTO,400 Block BRYANT ST,PALO ALTO,94301
+2015-11-23T14:00:00Z,BURGLARY/RESIDENTIAL,500 Block MAYBELL AV,PALO ALTO,94306
+2015-11-23T16:06:00Z,N&D/PARAPHERNALIA,100 Block EL CAMINO REAL,PALO ALTO,""
+2015-11-23T16:38:00Z,TRAFFIC/SUSPENDED LICENSE,SAN ANTONIO RD & E BAYSHORE RD,PALO ALTO,94303
+2015-11-23T21:26:00Z,DRUNK IN PUBLIC ADULT/MISC,200 Block CURTNER AV,PALO ALTO,94306
+2015-11-23T21:52:00Z,B&P/MISC,400 Block WAVERLEY ST,PALO ALTO,94301
+2015-11-24T07:00:00Z,BURGLARY/AUTO,WAVERLEY ST & HAMILTON AV,PALO ALTO,94301
+2015-11-24T08:15:00Z,TRAFFIC/MISC,HAWTHORNE AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-11-24T11:32:00Z,VEHICLE/STOLEN,900 Block INDUSTRIAL AV,PALO ALTO,94303
+2015-11-24T16:10:00Z,ACCIDENT PROPERTY DAMAGE,600 Block FOREST AV,PALO ALTO,94301
+2015-11-24T19:00:00Z,BURGLARY/AUTO,800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-11-24T19:15:00Z,TRAFFIC/SUSPENDED LICENSE,NEWELL RD & EDGEWOOD DR,PALO ALTO,94303
+2015-11-24T22:47:00Z,WARRANT/OTHER AGENCY,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-25T01:30:00Z,TRAFFIC/SUSPENDED LICENSE,NEWELL PL & NEWELL RD,PALO ALTO,94303
+2015-11-27T06:28:00Z,VANDALISM/FELONY,1400 Block ARCADIA PL,PALO ALTO,94303
+2015-11-27T11:20:00Z,WARRANT/OTHER AGENCY,200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-27T19:27:00Z,IDENTITY THEFT/CREDIT CARDS,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-27T21:15:00Z,ANIMAL/ATTACK,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-28T07:22:00Z,PENAL CODE/TERRORIST THREATS,1400 Block CHANNING AV,PALO ALTO,94301
+2015-11-28T09:03:00Z,PSYCH SUBJECT,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-28T11:43:00Z,MISSING JUVENILE/MISC,400 Block SHERMAN AV,PALO ALTO,94306
+2015-11-28T12:15:00Z,VANDALISM/MISDEMEANOR,1900 Block GENG RD,PALO ALTO,94303
+2015-11-28T15:04:00Z,ACCIDENT MINOR INJURY,1000 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2015-11-28T16:00:00Z,OUTSIDE INVESTIGATION/MISC,1 Block CHESTER CIR,"",""
+2015-11-28T17:42:00Z,WARRANT/OTHER AGENCY,GENG RD & EMBARCADERO RD,PALO ALTO,94303
+2015-11-28T18:43:00Z,ACCIDENT PROPERTY DAMAGE,1400 Block BLOCK SAND HILL RD,PALO ALTO,94304
+2015-11-28T21:45:00Z,WARRANT/OTHER AGENCY,UNIVERSITY CIRLE & UNIVERSITY AV,PALO ALTO,94301
+2015-11-29T00:53:00Z,DRUNK IN PUBLIC ADULT/MISC,100 Block LYTTON AV,PALO ALTO,94301
+2015-11-29T01:14:00Z,TRAFFIC/MISC,KIPLING ST & LYTTON AV,PALO ALTO,94301
+2015-11-29T01:48:00Z,DRUNK IN PUBLIC ADULT/MISC,1100 Block BLOCK RAMONA ST,PALO ALTO,94301
+2015-11-29T02:15:00Z,DRUNK IN PUBLIC ADULT/MISC,600 Block RAMONA ST,PALO ALTO,94301
+2015-11-29T09:10:00Z,OUTSIDE INVESTIGATION/MISC,900 Block LAUREL GLEN DR,PALO ALTO,94304
+2015-11-29T12:05:00Z,FOUND PROPERTY/MISC,400 Block HAMILTON AV,PALO ALTO,94301
+2015-11-29T15:30:00Z,IDENTITY THEFT/CREDIT CARDS,3000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-11-29T16:00:00Z,DOMESTIC VIOLENCE/V COURT ORDE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-29T16:00:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-29T18:00:00Z,ASSAULT/SIMPLE,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-29T20:00:00Z,N&D/UNDER INFLUENCE,MITCHELL LN & UNIVERSITY AV,PALO ALTO,94301
+2015-11-29T21:50:00Z,DOMESTIC VIOLENCE/BATTERY,800 Block HOMER AV,PALO ALTO,94301
+2015-11-29T21:50:00Z,PENAL CODE/MISC,800 Block HOMER AV,PALO ALTO,94301
+2015-11-30T00:00:00Z,THEFT PETTY/MISC,1100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-30T08:32:00Z,ACCIDENT PROPERTY DAMAGE,800 Block PALO ALTO AV,PALO ALTO,94301
+2015-11-30T10:00:00Z,THEFT PETTY/SHOPLIFT,200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-11-30T11:11:00Z,ACCIDENT PROPERTY DAMAGE,SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2015-11-30T13:25:00Z,PUBLIC INCIDENT/MISC,3100 Block PORTER DR,PALO ALTO,94304
+2015-11-30T17:28:00Z,THEFT GRAND/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-11-30T19:10:00Z,TRAFFIC/SUSPENDED LICENSE,HAMILTON AV & RAMONA ST,PALO ALTO,94301
+2015-11-30T20:20:00Z,PSYCH SUBJECT,500 Block CHAUCER ST,PALO ALTO,94301
+2015-11-30T20:20:00Z,FAMILY VIOLENCE/MISC,500 Block CHAUCER ST,PALO ALTO,94301
+2015-11-30T20:45:00Z,CHILD ABUSE/EMOTIONAL,3900 Block ECR,PALO ALTO,94306
+2015-11-30T21:30:00Z,TRAFFIC/MISC,EL CAMINO REAL & LOS ROBLES AV,PALO ALTO,94306
+2015-11-30T23:00:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-05T00:17:00Z,MUNI CODE/MISC,100 Block PALO ALTO AV,PALO ALTO,94301
+2015-12-05T01:30:00Z,DRUNK IN PUBLIC ADULT/MISC,200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-05T01:30:00Z,PENAL CODE/RESISTING ARREST,200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-05T05:00:00Z,BURGLARY/RESIDENTIAL,3900 Block BIBBITS DR,PALO ALTO,94303
+2015-12-05T05:00:00Z,THEFT PETTY/FROM AUTO,3900 Block BIBBITS DR,PALO ALTO,94303
+2015-12-05T05:05:00Z,BURGLARY/AUTO,4100 Block SUTHERLAND DR,PALO ALTO,94303
+2015-12-05T11:00:00Z,FOUND PROPERTY/MISC,4200 Block PONCE DR,PALO ALTO,94306
+2015-12-05T12:22:00Z,THEFT PETTY/MISC,3100 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-12-05T12:30:00Z,WARRANT/OTHER AGENCY,WAVERLEY ST & LYTTON AV,PALO ALTO,94301
+2015-12-05T16:27:00Z,WARRANT/OTHER AGENCY,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-05T18:15:00Z,ACCIDENT MINOR INJURY,600 Block EMBARCADERO RD,PALO ALTO,94301
+2015-12-05T20:39:00Z,PSYCH SUBJECT,100 Block MOSHER WAY,PALO ALTO,94304
+2015-12-05T22:40:00Z,DRUNK IN PUBLIC ADULT/MISC,500 Block WEBSTER ST,PALO ALTO,94301
+2015-12-13T01:00:00Z,VEHICLE/STOLEN,4100 Block SCRIPPS AV,PALO ALTO,94306
+2015-12-13T02:14:00Z,DRUNK IN PUBLIC ADULT/MISC,400 Block EMERSON ST,PALO ALTO,94301
+2015-12-13T09:00:00Z,FAMILY VIOLENCE/MISC,3100 Block MORRIS DR,PALO ALTO,94303
+2015-12-13T16:00:00Z,VEHICLE/RECOVERED,1300 Block WAVERLEY ST,PALO ALTO,94301
+2015-12-13T16:45:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,300 Block PASTEUR DR,PALO ALTO,94304
+2015-12-13T17:56:00Z,VANDALISM/MISDEMEANOR,800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-12-13T18:37:00Z,COUNTERFEITING/MISC,400 Block EMERSON ST,PALO ALTO,94301
+2015-12-13T19:12:00Z,PENAL CODE/TERRORIST THREATS,2700 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-13T19:19:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,300 Block PASTEUR DR,PALO ALTO,94304
+2015-12-13T23:30:00Z,WARRANT/OTHER AGENCY,3400 Block WAVERLEY ST,PALO ALTO,94306
+2015-12-14T01:40:00Z,MUNI CODE/MISC,400 Block ALMA ST,PALO ALTO,94301
+2015-12-14T07:46:00Z,FOUND PROPERTY/MISC,400 Block BRYANT ST,PALO ALTO,94301
+2015-12-14T08:14:00Z,PSYCH SUBJECT,BARRON AV & EL CAMINO REAL,PALO ALTO,94306
+2015-12-14T08:19:00Z,ACCIDENT PROPERTY DAMAGE,OREGON AV & WAVERLEY ST,PALO ALTO,94301
+2015-12-14T11:02:00Z,VEHICLE/IMPOUNDED,4100 Block GEORGIA AV,PALO ALTO,94306
+2015-12-14T12:01:00Z,DOMESTIC VIOLENCE/BATTERY,500 Block WEBSTER ST,PALO ALTO,94301
+2015-12-14T12:30:00Z,THEFT PETTY/MISC,MIDDLEFIELD RD & E CHARLESTON RD,PALO ALTO,94306
+2015-12-14T15:30:00Z,VEHICLE/STORED,300 Block HIGH ST,PALO ALTO,94301
+2015-12-14T16:30:00Z,SUICIDE JUVENILE ATTEMPT/MISC,1600 Block ESCOBITA AV,PALO ALTO,94306
+2015-12-14T17:00:00Z,SEX CRIME/MISC,1000 Block TANLAND DR,PALO ALTO,94303
+2015-12-14T18:50:00Z,SUICIDE ADULT ATTEMPT/MISC,200 Block CURTNER AV,PALO ALTO,94306
+2015-12-14T18:55:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,MIDDLEFIELD RD & MELVILLE AV,PALO ALTO,94301
+2015-12-14T20:10:00Z,TRAFFIC/SUSPENDED LICENSE,LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2015-12-14T21:10:00Z,PENAL CODE/RESISTING ARREST,300 Block PASTEUR DR,PALO ALTO,94304
+2015-12-14T21:10:00Z,WARRANT/OTHER AGENCY,300 Block PASTEUR DR,PALO ALTO,94304
+2015-12-15T01:22:00Z,MUNI CODE/DRINKING IN PUBLIC,500 Block COWPER ST,PALO ALTO,94301
+2015-12-15T02:22:00Z,VEHICLE/STORED,4100 Block PARK BLVD,PALO ALTO,94306
+2015-12-15T03:02:00Z,N&D/UNDER INFLUENCE,UNIVERSITY AVE & HWY 101,"",94303
+2015-12-15T08:00:00Z,IDENTITY THEFT/FRAUD,1400 Block HAMILTON AV,PALO ALTO,94301
+2015-12-15T09:05:00Z,OUTSIDE INVESTIGATION/MISC,4100 Block MANUELA AV,PALO ALTO,94306
+2015-12-15T09:59:00Z,LOST PROPERTY/MISC,600 Block WAVERLEY ST,PALO ALTO,94301
+2015-12-15T13:00:00Z,WARRANT/OTHER AGENCY,200 Block FOREST AV,PALO ALTO,94301
+2015-12-15T14:06:00Z,ACCIDENT MINOR INJURY,EL CAMINO REAL & STANFORD AV,PALO ALTO,94306
+2015-12-15T14:45:00Z,THEFT PETTY/BIKE/BIKE PARTS,1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-12-15T15:28:00Z,THEFT PETTY/BIKE/BIKE PARTS,1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-12-15T15:28:00Z,THEFT PETTY/BIKE/BIKE PARTS,1 Block EMBARCADERO RD,PALO ALTO,94301
+2015-12-15T17:20:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-15T17:20:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-15T20:00:00Z,BURGLARY/AUTO,2400 Block ASH ST,PALO ALTO,94306
+2015-12-15T20:37:00Z,TRAFFIC/SUSPENDED LICENSE,FOREST AV & BRYANT ST,PALO ALTO,94301
+2015-12-15T22:30:00Z,OUTSIDE INVESTIGATION/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-15T23:03:00Z,TRAFFIC/MISC,EL CAMINO REAL & LOS ROBLES AV,PALO ALTO,94306
+2015-12-16T02:43:00Z,WARRANT/OTHER AGENCY,800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-12-16T08:10:00Z,ACCIDENT MINOR INJURY,400 Block E CHARLESTON RD,PALO ALTO,94306
+2015-12-16T09:01:00Z,N&D/POSSESSION,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-16T09:30:00Z,ACCIDENT PROPERTY DAMAGE,CHURCHILL AV,PALO ALTO,""
+2015-12-16T12:18:00Z,ACCIDENT PROPERTY DAMAGE,2000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-12-16T12:27:00Z,ACCIDENT MINOR INJURY,4000 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-12-16T12:29:00Z,ACCIDENT PROPERTY DAMAGE,3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-12-16T12:30:00Z,BATTERY/SIMPLE,500 Block HIGH ST,PALO ALTO,94301
+2015-12-16T12:30:00Z,BATTERY/SIMPLE,500 Block HIGH ST,PALO ALTO,94301
+2015-12-16T15:29:00Z,ACCIDENT PROPERTY DAMAGE,EMBARCADERO RD & CHURCHILL AV,PALO ALTO,94301
+2015-12-16T15:40:00Z,TRAFFIC/MISC,100 Block SAN ANTONIO RD,PALO ALTO,""
+2015-12-16T16:09:00Z,ACCIDENT PROPERTY DAMAGE,200 Block HOMER AV,PALO ALTO,94301
+2015-12-16T19:30:00Z,PENAL CODE/MISC,200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-16T21:03:00Z,PENAL CODE/POSSESS BURG TOOLS,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-16T22:00:00Z,UNATTENDED DEATH/MISC,900 Block N CALIFORNIA AV,PALO ALTO,94303
+2015-12-16T22:30:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-12-17T07:55:00Z,ACCIDENT PROPERTY DAMAGE,800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-12-17T09:00:00Z,VEHICLE/STOLEN,HAMILTON AV & EMERSON ST,PALO ALTO,94301
+2015-12-17T11:25:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,100 Block KELLOGG AV,PALO ALTO,94301
+2015-12-17T12:00:00Z,PUBLIC INCIDENT/MISC,500 Block COWPER ST,PALO ALTO,94301
+2015-12-17T12:22:00Z,ACCIDENT PROPERTY DAMAGE,200 Block VINEYARD LN,PALO ALTO,""
+2015-12-17T13:34:00Z,PSYCH SUBJECT,400 Block HOMER AV,PALO ALTO,94301
+2015-12-17T13:34:00Z,ELDER ABUSE/SELF NEGLECT,400 Block HOMER AV,PALO ALTO,94301
+2015-12-17T13:34:00Z,PSYCH SUBJECT,400 Block HOMER AV,PALO ALTO,94301
+2015-12-17T17:00:00Z,THEFT GRAND/SHOPLIFT,100 Block HAMILTON AV,PALO ALTO,94301
+2015-12-17T21:00:00Z,THEFT GRAND/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-17T23:21:00Z,VEHICLE/STORED,400 Block VENTURA AV,PALO ALTO,94306
+2015-12-18T01:20:00Z,DUI ADULT/MISC,RAMONA ST & UNIVERSITY AV,PALO ALTO,94301
+2015-12-18T01:22:00Z,WARRANT/OTHER AGENCY,200 Block HAMILTON AV,PALO ALTO,94301
+2015-12-18T01:22:00Z,DRUNK IN PUBLIC ADULT/MISC,200 Block HAMILTON AV,PALO ALTO,94301
+2015-12-18T01:22:00Z,WARRANT/OTHER AGENCY,200 Block HAMILTON AV,PALO ALTO,94301
+2015-12-18T01:40:00Z,DUI ADULT/MISC,ALMA ST & CHURCHILL AV,PALO ALTO,94306
+2015-12-18T03:05:00Z,TRAFFIC/SUSPENDED LICENSE,E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2015-12-18T06:00:00Z,PSYCH SUBJECT,700 Block ARASTRADERO RD,PALO ALTO,94306
+2015-12-18T08:00:00Z,THEFT PETTY/BIKE/BIKE PARTS,500 Block E MEADOW DR,PALO ALTO,94306
+2015-12-18T09:00:00Z,PSYCH SUBJECT,4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-18T10:45:00Z,VEHICLE/STORED,500 Block SENECA ST,PALO ALTO,94301
+2015-12-18T11:13:00Z,THEFT PETTY/BIKE/BIKE PARTS,UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-12-18T12:40:00Z,PSYCH SUBJECT,700 Block ARASTRADERO RD,PALO ALTO,94306
+2015-12-18T13:04:00Z,THEFT PETTY/SHOPLIFT,800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-12-18T13:59:00Z,THEFT PETTY/BIKE/BIKE PARTS,3700 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94303
+2015-12-18T16:30:00Z,ACCIDENT MINOR INJURY,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-18T21:39:00Z,TRAFFIC/SUSPENDED LICENSE,300 Block SHERMAN AV,PALO ALTO,94306
+2015-12-18T21:39:00Z,DUI ADULT/MISC,300 Block SHERMAN AV,PALO ALTO,94306
+2015-12-18T22:56:00Z,PENAL CODE/MISC,500 Block WEBSTER ST,PALO ALTO,94301
+2015-12-19T05:00:00Z,DRUNK IN PUBLIC,100 Block FOREST AV,PALO ALTO,94301
+2015-12-19T12:27:00Z,ACCIDENT PROPERTY DAMAGE,4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-12-19T12:31:00Z,DUI ADULT/MISC,UNIVERSITY AV & BYRON ST,PALO ALTO,94301
+2015-12-19T13:20:00Z,F&W/DISPOSAL REQUEST,200 Block FOREST AV,PALO ALTO,94301
+2015-12-19T13:30:00Z,BURGLARY/AUTO,1800 Block SAND HILL RD,PALO ALTO,94304
+2015-12-19T14:34:00Z,PSYCH SUBJECT,4000 Block BEN LOMOND DR,PALO ALTO,94306
+2015-12-19T15:33:00Z,MUNI CODE/DRINKING IN PUBLIC,200 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-19T16:20:00Z,CREDIT CARDS/FRAUDULENT USE,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-19T16:20:00Z,THEFT PETTY/MISC,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-19T16:20:00Z,IDENTITY THEFT/CREDIT CARDS,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-19T16:30:00Z,ACCIDENT MINOR INJURY,800 Block OREGON EXPY,PALO ALTO,94303
+2015-12-19T16:45:00Z,PENAL CODE/MISC,EL CAMINO REAL & STANFORD AV,PALO ALTO,94306
+2015-12-19T16:45:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & STANFORD AV,PALO ALTO,94306
+2015-12-19T17:00:00Z,BURGLARY/AUTO,1300 Block SAND HILL RD,PALO ALTO,94304
+2015-12-19T19:48:00Z,WARRANT/OTHER AGENCY,CHAUCER ST & UNIVERSITY AV,PALO ALTO,94301
+2015-12-19T20:05:00Z,VEHICLE/RECOVERED,4100 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94303
+2015-12-19T20:30:00Z,BURGLARY/AUTO,1800 Block CHANNING AV,PALO ALTO,94303
+2015-12-19T20:33:00Z,TRAFFIC/MISC,PALM DR & ARBORETUM RD,STANFORD,""
+2015-12-19T20:48:00Z,ACCIDENT PROPERTY DAMAGE,200 Block COLORADO AV,PALO ALTO,94301
+2015-12-19T21:00:00Z,F&W/MISC,500 Block BRYANT ST,PALO ALTO,94301
+2015-12-19T21:20:00Z,DISTURB PEACE/MISC,2600 Block BLOCK ALMA ST,PALO ALTO,94306
+2015-12-19T21:30:00Z,DUI ADULT/MISC,ALMA ST & EL DORADO AV,PALO ALTO,94306
+2015-12-19T22:08:00Z,PENAL CODE/MISC,HOMER AV,PALO ALTO,94301
+2015-12-19T22:13:00Z,PSYCH SUBJECT,4000 Block EL CERRITO RD,PALO ALTO,94306
+2015-12-19T23:02:00Z,WARRANT/OTHER AGENCY,UNIVERSITY AV & BRYANT ST,PALO ALTO,94301
+2015-12-19T23:30:00Z,BURGLARY/AUTO,1800 Block SAND HILL RD,PALO ALTO,94304
+2015-12-20T00:00:00Z,ELDER ABUSE/PHYSICAL,300 Block W MEADOW DR,PALO ALTO,94306
+2015-12-20T00:00:00Z,THEFT GRAND/BIKE/BIKE PARTS,400 Block HIGH ST,PALO ALTO,94301
+2015-12-20T01:31:00Z,PSYCH SUBJECT,300 Block PASTEUR DR,PALO ALTO,94304
+2015-12-20T03:00:00Z,THEFT PETTY/FROM AUTO,1700 Block SAND HILL RD,PALO ALTO,94304
+2015-12-20T08:30:00Z,PSYCH SUBJECT,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-20T12:00:00Z,EMBEZZLEMENT/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-20T12:00:00Z,EMBEZZLEMENT/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-20T12:00:00Z,THEFT PETTY/MISC,1400 Block DANA AV,PALO ALTO,94301
+2015-12-20T13:18:00Z,FOUND PROPERTY/MISC,1000 Block BLOCK LOMA VERDE AV,PALO ALTO,94303
+2015-12-20T13:18:00Z,FOUND PROPERTY/MISC,1000 Block BLOCK LOMA VERDE AV,PALO ALTO,94303
+2015-12-20T16:22:00Z,WARRANT/OTHER AGENCY,1 Block ENCINA AV,PALO ALTO,94301
+2015-12-20T17:40:00Z,TRAFFIC/SUSPENDED LICENSE,300 Block EMBARCADERO RD,PALO ALTO,94301
+2015-12-20T22:00:00Z,BURGLARY/AUTO,1300 Block OAK CREEK DR,PALO ALTO,94304
+2015-12-22T00:21:00Z,VEHICLE/STOLEN,600 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-12-22T00:21:00Z,BURGLARY/COMMERCIAL,600 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-12-22T00:21:00Z,VANDALISM/FELONY,600 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-12-22T01:00:00Z,DUI ADULT/MISC,400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-22T06:14:00Z,ACCIDENT PROPERTY DAMAGE,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-22T06:14:00Z,ACCIDENT PROPERTY DAMAGE,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-22T06:44:00Z,ACCIDENT PROPERTY DAMAGE,600 Block PAGE MILL RD,PALO ALTO,94306
+2015-12-22T09:04:00Z,ACCIDENT MINOR INJURY,200 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-12-22T11:40:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & MATADERO AV,PALO ALTO,94306
+2015-12-22T12:57:00Z,ACCIDENT MINOR INJURY,N CALIFORNIA AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-12-22T13:26:00Z,THEFT PETTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-22T13:26:00Z,IDENTITY THEFT/CREDIT CARDS,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-22T15:50:00Z,ACCIDENT PROPERTY DAMAGE,500 Block BRYANT ST,PALO ALTO,94301
+2015-12-22T16:27:00Z,ACCIDENT PROPERTY DAMAGE,2100 Block BLOCK W BAYSHORE RD,PALO ALTO,94303
+2015-12-22T17:00:00Z,FOUND PROPERTY/MISC,200 Block GRANT AV,PALO ALTO,94306
+2015-12-22T18:30:00Z,VEHICLE/STOLEN,3600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-22T18:30:00Z,VEHICLE/RECOVERED,3600 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-22T19:15:00Z,PENAL CODE/MISC,HOMER AV,PALO ALTO,94301
+2015-12-22T19:54:00Z,PROWLER/MISC,200 Block LOWELL AV,PALO ALTO,94301
+2015-12-22T20:15:00Z,THEFT PETTY/BIKE/BIKE PARTS,500 Block VISTA AV,PALO ALTO,94306
+2015-12-22T21:15:00Z,PENAL CODE/MISC,400 Block BRYANT ST,PALO ALTO,94301
+2015-12-22T21:50:00Z,TRAFFIC/SUSPENDED LICENSE,W CHARLESTON RD & WILKIE WAY,PALO ALTO,94306
+2015-12-22T21:50:00Z,MUNI CODE/DRINKING IN PUBLIC,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-22T22:05:00Z,DUI ADULT/MISC,2500 Block PARK BLVD,PALO ALTO,94306
+2015-12-22T22:22:00Z,PSYCH SUBJECT,EL CAMINO REAL & CURTNER AV,PALO ALTO,94306
+2015-12-22T23:08:00Z,WARRANT/OTHER AGENCY,3700 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2015-12-23T01:00:00Z,TRAFFIC/SUSPENDED LICENSE,CHURCHILL AV & ALMA ST,PALO ALTO,94306
+2015-12-23T02:05:00Z,DUI ADULT/MISC,EVERETT AV & EMERSON ST,PALO ALTO,94301
+2015-12-23T03:25:00Z,VEHICLE/RECOVERED,100 Block S CALIFORNIA AV,PALO ALTO,94306
+2015-12-23T05:23:00Z,ACCIDENT PROPERTY DAMAGE,UNIVERSITY AV & MIDDLEFIELD RD,PALO ALTO,94301
+2015-12-23T06:30:00Z,N&D/PARAPHERNALIA,3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-23T06:30:00Z,OUTSIDE INVESTIGATION/MISC,3800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-23T11:11:00Z,ACCIDENT PROPERTY DAMAGE,OREGON AV & EMERSON ST,PALO ALTO,94301
+2015-12-23T12:48:00Z,ACCIDENT MINOR INJURY,100 Block EL CAMINO REAL,PALO ALTO,""
+2015-12-23T13:56:00Z,ACCIDENT PROPERTY DAMAGE,1700 Block BLOCK EMBARCADERO RD,PALO ALTO,94303
+2015-12-23T14:05:00Z,WARRANT/OTHER AGENCY,200 Block FOREST AV,PALO ALTO,94301
+2015-12-23T14:34:00Z,ACCIDENT PROPERTY DAMAGE,1800 Block BLOCK UNIVERSITY AV,PALO ALTO,94301
+2015-12-23T15:30:00Z,ASSAULT/PEACE OFFICER,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-23T15:30:00Z,ASSAULT/PEACE OFFICER,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-23T16:45:00Z,THEFT PETTY/SHOPLIFT,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-23T16:45:00Z,WARRANT/OTHER AGENCY,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-23T16:45:00Z,PENAL CODE/MISC,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-23T18:30:00Z,BURGLARY/RESIDENTIAL,4100 Block OLD ADOBE RD,PALO ALTO,94306
+2015-12-23T19:05:00Z,BURGLARY/AUTO,400 Block PORTAGE AV,PALO ALTO,94306
+2015-12-23T19:30:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & CAMBRIDGE AV,MENLO PARK,""
+2015-12-23T19:30:00Z,WARRANT/OTHER AGENCY,EL CAMINO REAL & CAMBRIDGE AV,MENLO PARK,""
+2015-12-23T22:36:00Z,TRAFFIC/SUSPENDED LICENSE,HWY 101 N & OREGON EXPY,PALO ALTO,94303
+2015-12-23T23:12:00Z,F&W/CONCEALED WEAPON,E CHARLESTON RD & FABIAN WAY,PALO ALTO,94303
+2015-12-23T23:12:00Z,TRAFFIC/EVADE,E CHARLESTON RD & FABIAN WAY,PALO ALTO,94303
+2015-12-23T23:12:00Z,WARRANT/OTHER AGENCY,E CHARLESTON RD & FABIAN WAY,PALO ALTO,94303
+2015-12-24T00:10:00Z,FOUND PROPERTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-24T00:41:00Z,DUI ADULT/MISC,800 Block LOMA VERDE AV,PALO ALTO,94303
+2015-12-24T01:30:00Z,DUI ADULT/MISC,100 Block ALMA ST,PALO ALTO,94301
+2015-12-24T02:52:00Z,DUI ADULT/MISC,100 Block ALMA ST,PALO ALTO,94301
+2015-12-24T10:20:00Z,WARRANT/OTHER AGENCY,200 Block FOREST AV,PALO ALTO,94301
+2015-12-24T12:35:00Z,DUI ADULT/MISC,HAMILTON AV & SENECA ST,PALO ALTO,94301
+2015-12-24T17:15:00Z,PENAL CODE/DISOBEY COURT ORDER,200 Block SHERIDAN AV,PALO ALTO,94306
+2015-12-24T18:55:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,3000 Block ALMA ST,PALO ALTO,94306
+2015-12-24T19:00:00Z,BURGLARY/COMMERCIAL,800 Block EL CAMINO REAL,PALO ALTO,94301
+2015-12-24T19:30:00Z,TRAFFIC/MISC,E CHARLESTON RD & MIDDLEFIELD RD,PALO ALTO,94306
+2015-12-24T20:55:00Z,N&D/UNDER INFLUENCE,WILLIAMS ST & CALIFORNIA AV,PALO ALTO,94306
+2015-12-24T20:55:00Z,N&D/UNDER INFLUENCE,WILLIAMS ST & CALIFORNIA AV,PALO ALTO,94306
+2015-12-24T20:55:00Z,PENAL CODE/POSSESS BURG TOOLS,WILLIAMS ST & CALIFORNIA AV,PALO ALTO,94306
+2015-12-24T21:40:00Z,TRAFFIC/SUSPENDED LICENSE,600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-12-24T21:40:00Z,TRAFFIC/MISC,600 Block LOS ROBLES AV,PALO ALTO,94306
+2015-12-24T21:45:00Z,DUI ADULT/ACCIDENT,SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2015-12-24T21:45:00Z,MISDEMEANOR/HIT & RUN,SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2015-12-24T22:52:00Z,TRAFFIC/EVADE,SAN ANTONIO RD & MIDDLEFIELD RD,PALO ALTO,94303
+2015-12-24T22:52:00Z,TRAFFIC/SUSPENDED LICENSE,SAN ANTONIO RD & MIDDLEFIELD RD,PALO ALTO,94303
+2015-12-25T01:10:00Z,TRAFFIC/SUSPENDED LICENSE,LYTTON AV & HIGH ST,PALO ALTO,94301
+2015-12-25T02:12:00Z,BURGLARY/COMMERCIAL,500 Block WAVERLEY ST,PALO ALTO,94301
+2015-12-25T02:32:00Z,DUI ADULT/MISC,900 Block SAN ANTONIO RD,PALO ALTO,94303
+2015-12-25T03:29:00Z,DUI ADULT/MISC,700 Block ALMA ST,PALO ALTO,94301
+2015-12-25T03:29:00Z,PENAL CODE/RESISTING ARREST,GREER RD & COLORADO AV,PALO ALTO,94303
+2015-12-25T08:20:00Z,MISSING JUVENILE/MISC,400 Block SAN ANTONIO RD,PALO ALTO,94306
+2015-12-25T11:00:00Z,BURGLARY/RESIDENTIAL,100 Block LOWELL AV,PALO ALTO,94301
+2015-12-25T11:11:00Z,WARRANT/OTHER AGENCY,2100 Block W BAYSHORE RD,PALO ALTO,94303
+2015-12-26T14:15:00Z,PENAL CODE/FALSE INFO TO POLIC,2600 Block W EL CAMINO REAL,MOUNTAIN VIEW,""
+2015-12-26T14:15:00Z,WARRANT/PALO ALTO,2600 Block W EL CAMINO REAL,MOUNTAIN VIEW,""
+2015-12-26T17:45:00Z,WARRANT/OTHER AGENCY,300 Block PASTEUR DR,PALO ALTO,94304
+2015-12-26T17:46:00Z,PENAL CODE/FALSE INFO TO POLIC,500 Block MAYBELL AV,PALO ALTO,94306
+2015-12-26T18:17:00Z,BATTERY/SIMPLE,1 Block ENCINA AV,PALO ALTO,94301
+2015-12-26T18:17:00Z,DISTURB PEACE/MISC,1 Block ENCINA AV,PALO ALTO,94301
+2015-12-26T19:00:00Z,PSYCH SUBJECT,200 Block FOREST AV,PALO ALTO,94301
+2015-12-26T20:53:00Z,TRAFFIC/SUSPENDED LICENSE,500 Block WAVERLEY ST,PALO ALTO,94301
+2015-12-27T00:44:00Z,WARRANT/OTHER AGENCY,CAMPUS DR & QUARRY RD,STANFORD,94304
+2015-12-27T09:30:00Z,TRAFFIC/STOLEN/LOST PLATE,2400 Block W BAYSHORE RD,PALO ALTO,94303
+2015-12-27T12:05:00Z,DUI ADULT/MISC,UNIVERSITY AV & HIGH ST,PALO ALTO,94301
+2015-12-27T13:07:00Z,DOMESTIC VIOLENCE/BATTERY,900 Block BRYANT ST,PALO ALTO,94301
+2015-12-27T13:07:00Z,DOMESTIC VIOLENCE/BATTERY,900 Block BRYANT ST,PALO ALTO,94301
+2015-12-27T13:42:00Z,DUI ADULT/ACCIDENT,600 Block BLOCK BRYANT ST,PALO ALTO,94301
+2015-12-27T13:55:00Z,PSYCH SUBJECT,600 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-27T15:30:00Z,BURGLARY/AUTO,2300 Block EMBARCADERO RD,PALO ALTO,94303
+2015-12-27T18:11:00Z,DRUNK IN PUBLIC ADULT/MISC,400 Block BRYANT ST,PALO ALTO,94301
+2015-12-27T20:35:00Z,PENAL CODE/MISC,500 Block WEBSTER ST,PALO ALTO,94301
+2015-12-27T23:00:00Z,THEFT PETTY/FROM AUTO,1300 Block OAK CREEK DR,PALO ALTO,94304
+2015-12-28T10:30:00Z,VANDALISM/FELONY,900 Block AMARILLO AV,PALO ALTO,94303
+2015-12-28T10:40:00Z,THEFT PETTY/SHOPLIFT,300 Block PORTAGE AV,PALO ALTO,94306
+2015-12-28T11:15:00Z,VEHICLE/STORED,1000 Block RAMONA ST,PALO ALTO,94301
+2015-12-28T11:39:00Z,N&D/POSSESSION,400 Block LYTTON AV,PALO ALTO,94301
+2015-12-28T11:39:00Z,N&D/PARAPHERNALIA,400 Block LYTTON AV,PALO ALTO,94301
+2015-12-28T11:39:00Z,WARRANT/OTHER AGENCY,400 Block LYTTON AV,PALO ALTO,94301
+2015-12-28T12:00:00Z,IDENTITY THEFT/MISC.,3500 Block WAVERLEY ST,PALO ALTO,94306
+2015-12-28T12:00:00Z,UNATTENDED DEATH/MISC,3000 Block EMERSON ST,PALO ALTO,94306
+2015-12-28T12:55:00Z,TRAFFIC/MISC,MIDDLEFIELD RD & UNIVERSITY AV,PALO ALTO,94301
+2015-12-28T14:00:00Z,THEFT GRAND/SHOPLIFT,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-28T14:00:00Z,F&W/BRANDISHING,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-28T15:10:00Z,VEHICLE/STORED,400 Block EL VERANO AV,PALO ALTO,94306
+2015-12-28T15:30:00Z,PSYCH SUBJECT,700 Block EL CAMINO REAL,PALO ALTO,94301
+2015-12-28T15:49:00Z,TRAFFIC/SUSPENDED LICENSE,3000 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-28T17:15:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,4000 Block MIDDLEFIELD RD,PALO ALTO,94303
+2015-12-28T21:30:00Z,SEXUAL ASSAULT/RAPE,300 Block COLLEGE AV,PALO ALTO,94306
+2015-12-28T21:30:00Z,ASSAULT WITH DEADLY WEAPON,300 Block COLLEGE AV,PALO ALTO,94306
+2015-12-28T21:30:00Z,DOMESTIC VIOLENCE/THREATS,300 Block COLLEGE AV,PALO ALTO,94306
+2015-12-28T21:30:00Z,SEXUAL ASSAULT/SODOMY,300 Block COLLEGE AV,PALO ALTO,94306
+2015-12-28T21:30:00Z,SEXUAL ASSAULT/FOREIGN OBJECT,300 Block COLLEGE AV,PALO ALTO,94306
+2015-12-28T21:30:00Z,PENAL CODE/MISC,300 Block COLLEGE AV,PALO ALTO,94306
+2015-12-28T21:42:00Z,PENAL CODE/MISC,500 Block WEBSTER ST,PALO ALTO,94301
+2015-12-28T22:15:00Z,MUNI CODE/MISC,500 Block WEBSTER ST,PALO ALTO,94301
+2015-12-28T22:30:00Z,MUNI CODE/MISC,400 Block BRYANT ST,PALO ALTO,94301
+2015-12-28T22:30:00Z,MUNI CODE/MISC,400 Block BRYANT ST,PALO ALTO,94301
+2015-12-28T23:15:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-28T23:59:00Z,IDENTITY THEFT/MISC.,3300 Block ALMA ST,PALO ALTO,94306
+2015-12-29T00:00:00Z,THEFT GRAND/SCAM,400 Block STANFORD AV,PALO ALTO,94306
+2015-12-29T05:41:00Z,SICK & CARED FOR/MISC,600 Block TOWLE WAY,PALO ALTO,94306
+2015-12-29T10:30:00Z,BURGLARY/AUTO,2300 Block EMBARCADERO RD,PALO ALTO,94303
+2015-12-29T10:40:00Z,VEHICLE/STORED,100 Block HEATHER LN,PALO ALTO,94303
+2015-12-29T11:00:00Z,THEFT PETTY/BIKE/BIKE PARTS,300 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-29T12:00:00Z,BURGLARY/AUTO,400 Block PORTAGE AV,PALO ALTO,94306
+2015-12-29T12:40:00Z,ACCIDENT MINOR INJURY,100 Block OREGON EXPY,PALO ALTO,94306
+2015-12-29T13:36:00Z,LOST PROPERTY/MISC,KINGSLEY AV & BRYANT ST,PALO ALTO,94301
+2015-12-29T14:00:00Z,WARRANT/OTHER AGENCY,200 Block FOREST AV,PALO ALTO,94301
+2015-12-29T14:25:00Z,ACCIDENT MINOR INJURY,900 Block EMBARCADERO RD,PALO ALTO,94303
+2015-12-29T18:59:00Z,DRUNK IN PUBLIC ADULT/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-29T19:15:00Z,TRAFFIC/SUSPENDED LICENSE,SAN ANTONIO RD & NITA AV,PALO ALTO,94306
+2015-12-29T20:50:00Z,TRAFFIC/SUSPENDED LICENSE,SERRA ST & EL CAMINO REAL,STANFORD,94306
+2015-12-29T22:05:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & CALIFORNIA AV,PALO ALTO,94306
+2015-12-29T22:29:00Z,PENAL CODE/MISC,300 Block HAMILTON AV,PALO ALTO,94301
+2015-12-29T22:31:00Z,PENAL CODE/MISC,300 Block HAMILTON AV,PALO ALTO,94301
+2015-12-29T22:39:00Z,ACCIDENT MINOR INJURY,RAMONA ST & UNIVERSITY AV,PALO ALTO,94301
+2015-12-29T22:41:00Z,PENAL CODE/MISC,500 Block WEBSTER ST,PALO ALTO,94301
+2015-12-30T00:15:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2015-12-30T05:59:00Z,THEFT PETTY/BIKE/BIKE PARTS,700 Block COLORADO AV,PALO ALTO,94303
+2015-12-30T06:02:00Z,THEFT GRAND/BIKE/BIKE PARTS,2800 Block MIDDLEFIELD RD,PALO ALTO,94306
+2015-12-30T07:15:00Z,N&D/POSSESSION,1200 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-12-30T07:15:00Z,N&D/PARAPHERNALIA,1200 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-12-30T07:15:00Z,WARRANT/OTHER AGENCY,1200 Block MIDDLEFIELD RD,PALO ALTO,94301
+2015-12-30T11:11:00Z,N&D/PARAPHERNALIA,4000 Block BLOCK SCRIPPS AV,PALO ALTO,94306
+2015-12-30T11:11:00Z,PENAL CODE/MISC,4000 Block BLOCK SCRIPPS AV,PALO ALTO,94306
+2015-12-30T11:30:00Z,THEFT PETTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-30T12:27:00Z,THEFT GRAND/BIKE/BIKE PARTS,100 Block SEALE AV,PALO ALTO,94301
+2015-12-30T15:03:00Z,THEFT GRAND/MISC,2400 Block W BAYSHORE RD,PALO ALTO,94303
+2015-12-30T15:50:00Z,BATTERY/PEACE OFFICER,EL CAMINO REAL & SAND HILL RD,PALO ALTO,94304
+2015-12-30T16:37:00Z,ACCIDENT MINOR INJURY,900 Block EMBARCADERO RD,PALO ALTO,94303
+2015-12-30T17:00:00Z,ACCIDENT MINOR INJURY,500 Block HIGH ST,PALO ALTO,94301
+2015-12-30T17:00:00Z,THEFT GRAND/MISC,100 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-30T19:30:00Z,BURGLARY/AUTO,4100 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-30T21:32:00Z,MUNI CODE/MISC,BOYCE AV & FOREST AV,PALO ALTO,94301
+2015-12-30T22:15:00Z,CHILD ABUSE/EMOTIONAL,1100 Block COLORADO AV,PALO ALTO,94303
+2015-12-30T22:45:00Z,DOMESTIC VIOLENCE/BATTERY,800 Block COWPER ST,PALO ALTO,94301
+2015-12-31T00:00:00Z,BURGLARY/AUTO,1800 Block SAND HILL RD,PALO ALTO,94304
+2015-12-31T00:01:00Z,VANDALISM/MISDEMEANOR,400 Block ALMA ST,PALO ALTO,94301
+2015-12-31T00:11:00Z,N&D/PARAPHERNALIA,1800 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-31T01:50:00Z,BURGLARY/COMMERCIAL,500 Block WAVERLEY ST,PALO ALTO,94301
+2015-12-31T02:18:00Z,DUI ADULT/MISC,ALMA ST & UNIVERSITY AV,PALO ALTO,94301
+2015-12-31T04:00:00Z,BURGLARY/AUTO,200 Block VENTURA AV,PALO ALTO,94306
+2015-12-31T08:08:00Z,THEFT GRAND/BIKE/BIKE PARTS,100 Block HAWTHORNE AV,PALO ALTO,94301
+2015-12-31T08:08:00Z,THEFT GRAND/BIKE/BIKE PARTS,100 Block HAWTHORNE AV,PALO ALTO,94301
+2015-12-31T08:53:00Z,LOST PROPERTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-31T11:14:00Z,ACCIDENT PROPERTY DAMAGE,400 Block UNIVERSITY AV,PALO ALTO,94301
+2015-12-31T12:15:00Z,ACCIDENT PROPERTY DAMAGE,300 Block HOMER AV,PALO ALTO,94301
+2015-12-31T12:34:00Z,ACCIDENT PROPERTY DAMAGE,4200 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-31T13:00:00Z,ACCIDENT PROPERTY DAMAGE,2700 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94306
+2015-12-31T13:37:00Z,VEHICLE/STORED,800 Block RORKE WAY,PALO ALTO,94303
+2015-12-31T14:00:00Z,VEHICLE/STOLEN,200 Block CURTNER AV,PALO ALTO,94306
+2015-12-31T15:01:00Z,LOST PROPERTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2015-12-31T15:09:00Z,THEFT PETTY/BIKE/BIKE PARTS,1800 Block EL CAMINO REAL,PALO ALTO,94306
+2015-12-31T15:20:00Z,TRAFFIC/SUSPENDED LICENSE,4100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-12-31T16:00:00Z,TRAFFIC/SUSPENDED LICENSE,LA DONNA AV & LOS ROBLES AV,PALO ALTO,94306
+2015-12-31T16:00:00Z,PENAL CODE/MISC,LA DONNA AV & LOS ROBLES AV,PALO ALTO,94306
+2015-12-31T17:00:00Z,MISSING JUVENILE/MISC,4000 Block VILLA VERA,PALO ALTO,94306
+2015-12-31T17:45:00Z,VANDALISM/MISDEMEANOR,200 Block CALIFORNIA AV,PALO ALTO,94306
+2015-12-31T18:00:00Z,SUICIDE ADULT/MISC,600 Block GEORGIA AV**,PALO ALTO,94306
+2015-12-31T19:05:00Z,ACCIDENT MINOR INJURY,600 Block RAMONA ST,PALO ALTO,94301
+2015-12-31T21:18:00Z,PENAL CODE/FALSE INFO TO POLIC,2100 Block E BAYSHORE RD,PALO ALTO,94303
+2015-12-31T21:18:00Z,TRAFFIC/SUSPENDED LICENSE,2100 Block E BAYSHORE RD,PALO ALTO,94303
+2015-12-31T21:18:00Z,WARRANT/OTHER AGENCY,2100 Block E BAYSHORE RD,PALO ALTO,94303
+2015-12-31T22:14:00Z,DUI ADULT/MISC,PAGE MILL RD & PORTER DR,PALO ALTO,""
+2015-12-31T23:59:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,1900 Block EMBARCADERO RD,PALO ALTO,94303
+2016-01-01T00:40:00Z,THEFT PETTY/BIKE/BIKE PARTS,400 Block LYTTON AV,PALO ALTO,94301
+2016-01-01T00:45:00Z,ANIMAL/MISC,200 Block FOREST AV,PALO ALTO,94301
+2016-01-01T00:53:00Z,DUI ADULT/MISC,N CALIFORNIA AV & ALMA ST,PALO ALTO,94301
+2016-01-01T01:20:00Z,DRUNK IN PUBLIC ADULT/MISC,600 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-01T04:44:00Z,DOMESTIC VIOLENCE/MISC,3100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-01T04:44:00Z,WARRANT/OTHER AGENCY,3100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-01T12:00:00Z,HIT & RUN/PROPERTY DAMAGE,900 Block HAMILTON AV,PALO ALTO,94301
+2016-01-01T13:13:00Z,ACCIDENT PROPERTY DAMAGE,2100 Block SAINT FRANCIS DR,PALO ALTO,94303
+2016-01-01T15:35:00Z,EMBEZZLEMENT/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-01T22:19:00Z,DUI JUVENILE/MISC,3000 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-02T00:16:00Z,TRAFFIC/SUSPENDED LICENSE,NEWELL RD & EDGEWOOD DR,PALO ALTO,94303
+2016-01-02T02:00:00Z,WARRANT/OTHER AGENCY,100 Block PALO ALTO AV,PALO ALTO,94301
+2016-01-02T03:38:00Z,MUNI CODE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-02T03:50:00Z,DRIVING WITH A SUSPENDED OR RE,2200 Block BLOCK E BAYSHORE RD,PALO ALTO,94303
+2016-01-02T09:25:00Z,PSYCH SUBJECT,1100 Block STANLEY WAY,PALO ALTO,94303
+2016-01-02T10:15:00Z,WARRANT/OTHER AGENCY,800 Block SAN ANTONIO RD,PALO ALTO,94303
+2016-01-02T11:30:00Z,THEFT PETTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-02T12:07:00Z,PSYCH SUBJECT,600 Block ARASTRADERO RD,PALO ALTO,94306
+2016-01-02T13:00:00Z,THEFT PETTY/MISC,500 Block N CALIFORNIA AV,PALO ALTO,94301
+2016-01-02T13:29:00Z,ACCIDENT MINOR INJURY,HIGH ST & UNIVERSITY AV,PALO ALTO,94301
+2016-01-02T15:30:00Z,TRAFFIC/SUSPENDED LICENSE,1200 Block EMBARCADERO RD,PALO ALTO,94303
+2016-01-02T18:31:00Z,N&D/PARAPHERNALIA,ALMA ST & HAMILTON AV,PALO ALTO,94301
+2016-01-02T20:05:00Z,WARRANT/OTHER AGENCY,2200 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-02T21:08:00Z,THEFT PETTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-02T23:45:00Z,MUNI CODE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-03T00:01:00Z,UNATTENDED DEATH/MISC,600 Block ASHTON AV,PALO ALTO,94306
+2016-01-03T01:52:00Z,DUI ADULT/MISC,400 Block RAMONA ST,PALO ALTO,94301
+2016-01-03T02:50:00Z,DUI ADULT/MISC,HOMER AV & RAMONA ST,PALO ALTO,94301
+2016-01-03T05:21:00Z,TRAFFIC/SUSPENDED LICENSE,PAGE MILL RD & ASH ST,PALO ALTO,94306
+2016-01-03T12:00:00Z,FOUND PROPERTY/MISC,700 Block PALO ALTO AV,PALO ALTO,94301
+2016-01-03T14:30:00Z,THEFT PETTY/FROM AUTO,900 Block INDUSTRIAL AV,PALO ALTO,94303
+2016-01-03T15:07:00Z,ACCIDENT PROPERTY DAMAGE,4200 Block SUZANNE DR,PALO ALTO,94306
+2016-01-03T18:00:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-03T18:00:00Z,TRAFFIC/SUSPENDED LICENSE,400 Block COWPER ST,PALO ALTO,94301
+2016-01-03T18:00:00Z,VEHICLE/STOLEN,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-03T23:00:00Z,WARRANT/OTHER AGENCY,OREGON EXPY & GREER RD,PALO ALTO,94303
+2016-01-04T01:51:00Z,BURGLARY/COMMERCIAL,3000 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-04T08:11:00Z,ACCIDENT MINOR INJURY,300 Block MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-04T09:10:00Z,ACCIDENT MINOR INJURY,PAGE MILL RD & PARK BLVD,PALO ALTO,94306
+2016-01-04T09:23:00Z,OUTSIDE INVESTIGATION/MISC,900 Block QUARRY RD,STANFORD,94304
+2016-01-04T11:01:00Z,THEFT PETTY/MISC,3100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-04T14:18:00Z,THEFT GRAND/SHOPLIFT,400 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-04T14:49:00Z,ACCIDENT PROPERTY DAMAGE,UNIVERSITY AV & EL CAMINO REAL,PALO ALTO,94301
+2016-01-04T15:30:00Z,TRAFFIC/SUSPENDED LICENSE,100 Block EL CAMINO REAL,PALO ALTO,""
+2016-01-04T15:32:00Z,CREDIT CARDS/FRAUDULENT USE,800 Block EL CAMINO REAL,PALO ALTO,94301
+2016-01-04T16:00:00Z,MISSING JUVENILE/MISC,500 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-04T18:00:00Z,BATTERY/SIMPLE,200 Block HAWTHORNE AV,PALO ALTO,94301
+2016-01-04T18:00:00Z,DISTURB PEACE/MISC,200 Block HAWTHORNE AV,PALO ALTO,94301
+2016-01-04T18:00:00Z,WARRANT/OTHER AGENCY,200 Block HAWTHORNE AV,PALO ALTO,94301
+2016-01-04T21:00:00Z,MISSING ADULT/MISC,1800 Block CLARKE AVE,"",94303
+2016-01-05T09:55:00Z,ACCIDENT MINOR INJURY,3800 Block BLOCK MIRANDA AV,PALO ALTO,94304
+2016-01-05T12:00:00Z,MISDEMEANOR/HIT & RUN,SAN ANTONIO RD & E BAYSHORE RD,PALO ALTO,94303
+2016-01-05T12:00:00Z,IDENTITY THEFT/OUTSIDE INVEST,4000 Block BEN LOMOND DR,PALO ALTO,94306
+2016-01-05T12:00:00Z,BURGLARY/RESIDENTIAL,1700 Block CHANNING AV,PALO ALTO,94303
+2016-01-05T14:26:00Z,THEFT GRAND/MISC,400 Block WAVERLEY ST,PALO ALTO,94301
+2016-01-05T16:27:00Z,TRAFFIC/MISC,UNIVERSITY AV & HIGH ST,PALO ALTO,94301
+2016-01-05T18:15:00Z,BURGLARY/AUTO,500 Block HIGH ST,PALO ALTO,94301
+2016-01-05T18:30:00Z,BURGLARY/RESIDENTIAL,3200 Block MADDUX DR,PALO ALTO,94303
+2016-01-05T18:45:00Z,BURGLARY/AUTO,500 Block HIGH ST,PALO ALTO,94301
+2016-01-05T19:30:00Z,BURGLARY/AUTO,1800 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-05T20:38:00Z,F&W/CONCEALED WEAPON,400 Block BRYANT ST,PALO ALTO,94301
+2016-01-05T20:38:00Z,N&D/POSSESSION,400 Block BRYANT ST,PALO ALTO,94301
+2016-01-05T20:38:00Z,N&D/PARAPHERNALIA,400 Block BRYANT ST,PALO ALTO,94301
+2016-01-05T20:38:00Z,N&D/UNDER INFLUENCE,400 Block BRYANT ST,PALO ALTO,94301
+2016-01-05T20:50:00Z,UNATTENDED DEATH/MISC,1500 Block DANA AV,PALO ALTO,94303
+2016-01-05T21:15:00Z,TRAFFIC/SUSPENDED LICENSE,1000 Block ALMA ST,PALO ALTO,94301
+2016-01-06T01:07:00Z,DRUNK IN PUBLIC ADULT/MISC,600 Block EL CAMINO REAL,PALO ALTO,94301
+2016-01-06T03:04:00Z,TRAFFIC/SUSPENDED LICENSE,UNIVERSITY AV & FLORENCE ST,PALO ALTO,94301
+2016-01-06T08:19:00Z,ACCIDENT MINOR INJURY,PAGE MILL RD & HANSEN WAY,PALO ALTO,94304
+2016-01-06T09:00:00Z,FOUND PROPERTY/MISC,2200 Block BIRCH ST,PALO ALTO,94306
+2016-01-06T09:00:00Z,THEFT PETTY/FROM AUTO,600 Block EL CAMINO REAL,PALO ALTO,94301
+2016-01-06T11:40:00Z,THEFT PETTY/MISC,200 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-06T11:40:00Z,IDENTITY THEFT/CREDIT CARDS,200 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-06T12:00:00Z,VANDALISM/FELONY,300 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-06T13:27:00Z,ACCIDENT MINOR INJURY,EMBARCADERO RD & WAVERLEY ST,PALO ALTO,94301
+2016-01-06T15:00:00Z,LOST PROPERTY/MISC,800 Block EL CAMINO REAL,PALO ALTO,94301
+2016-01-06T16:25:00Z,OUTSIDE INVESTIGATION/MISC,200 Block WALNUT ST,"",""
+2016-01-06T17:50:00Z,IDENTITY THEFT/CREDIT CARDS,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-06T17:50:00Z,BURGLARY/COMMERCIAL,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-06T17:50:00Z,PENAL CODE/POSSESS BURG TOOLS,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-06T17:50:00Z,IDENTITY THEFT/CREDIT CARDS,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-06T20:37:00Z,TRAFFIC/STOLEN/LOST PLATE,1800 Block PAGE MILL RD,PALO ALTO,94304
+2016-01-06T22:03:00Z,THEFT PETTY/MISC,500 Block FOREST AV,PALO ALTO,94301
+2016-01-06T22:03:00Z,PENAL CODE/TRESPASS,500 Block FOREST AV,PALO ALTO,94301
+2016-01-06T23:06:00Z,WARRANT/OTHER AGENCY,100 Block CHANNING AV,PALO ALTO,94301
+2016-01-07T00:00:00Z,FOUND PROPERTY/MISC,3500 Block LAGUNA AV,PALO ALTO,94306
+2016-01-07T00:01:00Z,IDENTITY THEFT/MISC.,700 Block LA PARA AV,PALO ALTO,94306
+2016-01-07T09:30:00Z,FOUND PROPERTY/MISC,500 Block BARRON AV,PALO ALTO,94306
+2016-01-07T13:00:00Z,TRAFFIC/MISC,EL CAMINO REAL & MAYBELL AV,PALO ALTO,94306
+2016-01-07T13:50:00Z,MUNI CODE/MISC,300 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-07T14:30:00Z,VANDALISM/FELONY,900 Block AMARILLO AV,PALO ALTO,94303
+2016-01-07T15:00:00Z,VANDALISM/MISDEMEANOR,1100 Block AMARILLO AV,PALO ALTO,94303
+2016-01-07T15:27:00Z,ACCIDENT MINOR INJURY,CHANNING AV & WEBSTER ST,PALO ALTO,94301
+2016-01-07T19:00:00Z,BURGLARY ATTEMPT/AUTO,300 Block SHERMAN AV,PALO ALTO,94306
+2016-01-07T21:00:00Z,THEFT GRAND/FROM AUTO,300 Block COLLEGE AV,PALO ALTO,94306
+2016-01-07T21:00:00Z,PENAL CODE/MISC,ALMA ST & HOMER AV,PALO ALTO,94301
+2016-01-07T21:29:00Z,DRUNK IN PUBLIC ADULT/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-08T00:08:00Z,BATTERY/SIMPLE,400 Block EMERSON ST,PALO ALTO,94301
+2016-01-08T00:08:00Z,DRUNK IN PUBLIC ADULT/MISC,400 Block EMERSON ST,PALO ALTO,94301
+2016-01-08T01:43:00Z,DUI ADULT/MISC,400 Block HAMILTON AV,PALO ALTO,94301
+2016-01-08T03:07:00Z,DUI ADULT/MISC,3800 Block FABIAN WAY,PALO ALTO,94303
+2016-01-08T08:30:00Z,EDUCATION CODE/MISC,400 Block FERNE AV,PALO ALTO,94306
+2016-01-08T09:34:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,1900 Block EMBARCADERO RD,PALO ALTO,94303
+2016-01-08T15:51:00Z,VEHICLE/STOLEN,3700 Block STARR KING CIR,PALO ALTO,94306
+2016-01-08T16:00:00Z,FOUND PROPERTY/MISC,800 Block MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-08T17:00:00Z,BURGLARY/AUTO,300 Block SHERMAN AV,PALO ALTO,94306
+2016-01-08T20:40:00Z,BURGLARY/AUTO,300 Block SHERMAN AV,PALO ALTO,94306
+2016-01-08T23:31:00Z,PENAL CODE/MISC,500 Block WEBSTER ST,PALO ALTO,94301
+2016-01-08T23:48:00Z,FOUND PROPERTY/MISC,400 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-09T05:30:00Z,ARSON/STRUCTURE,3400 Block KENNETH DR,PALO ALTO,94303
+2016-01-09T09:04:00Z,CASUALTY/FALL,100 Block CALIFORNIA AV,PALO ALTO,94306
+2016-01-09T09:46:00Z,TRAFFIC/SUSPENDED LICENSE,LYTTON AV & HIGH ST,PALO ALTO,94301
+2016-01-09T11:15:00Z,WARRANT/OTHER AGENCY,400 Block WEBSTER ST,PALO ALTO,94301
+2016-01-09T13:49:00Z,ROBBERY/STRONG ARM,500 Block STANFORD AV,PALO ALTO,""
+2016-01-09T16:00:00Z,MISSING JUVENILE/MISC,2600 Block ALMA ST,PALO ALTO,94306
+2016-01-09T16:00:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,3900 Block FABIAN WAY,PALO ALTO,94303
+2016-01-09T16:00:00Z,BURGLARY/COMMERCIAL,200 Block SHERIDAN AV,PALO ALTO,94306
+2016-01-09T16:18:00Z,MISDEMEANOR/HIT & RUN,600 Block MAYBELL AV,PALO ALTO,94306
+2016-01-09T19:35:00Z,VANDALISM/MISDEMEANOR,400 Block EMERSON ST,PALO ALTO,94301
+2016-01-09T19:35:00Z,VANDALISM/MISDEMEANOR,400 Block EMERSON ST,PALO ALTO,94301
+2016-01-09T19:35:00Z,PENAL CODE/MISC,400 Block EMERSON ST,PALO ALTO,94301
+2016-01-09T20:00:00Z,PENAL CODE/MISC,300 Block PASTEUR DR,PALO ALTO,94304
+2016-01-09T21:25:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & W CHARLESTON RD,PALO ALTO,94306
+2016-01-09T21:40:00Z,BURGLARY/COMMERCIAL,4100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-09T22:25:00Z,TRAFFIC/RECKLESS DRIVING,800 Block COLORADO AV,PALO ALTO,94303
+2016-01-09T22:25:00Z,TRAFFIC/SUSPENDED LICENSE,800 Block COLORADO AV,PALO ALTO,94303
+2016-01-09T22:25:00Z,TRAFFIC/RECKLESS DRIVING,800 Block COLORADO AV,PALO ALTO,94303
+2016-01-09T22:25:00Z,DRUNK IN PUBLIC ADULT/MISC,800 Block COLORADO AV,PALO ALTO,94303
+2016-01-10T00:39:00Z,PENAL CODE/MISC,500 Block WEBSTER ST,PALO ALTO,94301
+2016-01-10T09:55:00Z,FAMILY VIOLENCE/MISC,4100 Block SUTHERLAND DR,PALO ALTO,94303
+2016-01-10T12:00:00Z,THEFT PETTY/FROM AUTO,400 Block ALMA ST,PALO ALTO,94301
+2016-01-10T17:30:00Z,VANDALISM/FELONY,500 Block GUINDA ST,PALO ALTO,94301
+2016-01-10T17:30:00Z,PENAL CODE/TRESPASS,500 Block GUINDA ST,PALO ALTO,94301
+2016-01-10T17:30:00Z,DRUNK IN PUBLIC ADULT/MISC,500 Block GUINDA ST,PALO ALTO,94301
+2016-01-10T17:49:00Z,ACCIDENT MINOR INJURY,2400 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-10T20:15:00Z,BURGLARY ATTEMPT/RESIDENTIAL,1100 Block HAMILTON AV,PALO ALTO,94301
+2016-01-10T23:07:00Z,PENAL CODE/MISC,EL CAMINO REAL & W CHARLESTON RD,PALO ALTO,94306
+2016-01-10T23:07:00Z,PENAL CODE/MISC,EL CAMINO REAL & W CHARLESTON RD,PALO ALTO,94306
+2016-01-10T23:30:00Z,THEFT PETTY/FROM AUTO,200 Block SHERIDAN AV,PALO ALTO,94306
+2016-01-11T03:30:00Z,TRAFFIC/SUSPENDED LICENSE,SAND HILL RD & EL CAMINO REAL,PALO ALTO,94304
+2016-01-11T08:55:00Z,MISDEMEANOR/HIT & RUN,3300 Block KENNETH DR,PALO ALTO,94303
+2016-01-11T09:10:00Z,ACCIDENT MINOR INJURY,COLORADO AV & ALMA ST,PALO ALTO,94301
+2016-01-11T11:55:00Z,TRAFFIC/SUSPENDED LICENSE,300 Block EVERETT AV,PALO ALTO,94301
+2016-01-11T12:40:00Z,VEHICLE/STORED,3800 Block PARK BLVD,PALO ALTO,94306
+2016-01-11T13:41:00Z,THEFT GRAND/SHOPLIFT,400 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-11T15:50:00Z,VEHICLE/STOLEN,1100 Block OREGON AV,PALO ALTO,94303
+2016-01-11T15:50:00Z,ROBBERY/CAR JACK,1100 Block OREGON AV,PALO ALTO,94303
+2016-01-11T15:50:00Z,ROBBERY/STRONG ARM,1100 Block OREGON AV,PALO ALTO,94303
+2016-01-11T15:50:00Z,BURGLARY/RESIDENTIAL,1100 Block OREGON AV,PALO ALTO,94303
+2016-01-11T15:50:00Z,VANDALISM/FELONY,1100 Block OREGON AV,PALO ALTO,94303
+2016-01-11T16:45:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-11T16:55:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-11T17:10:00Z,BURGLARY/AUTO,2500 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-11T17:25:00Z,BURGLARY ATTEMPT/AUTO,400 Block PORTAGE AV,PALO ALTO,94306
+2016-01-11T17:30:00Z,BURGLARY/AUTO,300 Block HAMILTON AV,PALO ALTO,94301
+2016-01-11T19:00:00Z,BURGLARY/AUTO,400 Block LYTTON AV,PALO ALTO,94301
+2016-01-11T19:00:00Z,BURGLARY/AUTO,500 Block HIGH ST,PALO ALTO,94301
+2016-01-11T19:40:00Z,BURGLARY/AUTO,400 Block WEBSTER ST,PALO ALTO,94301
+2016-01-11T20:00:00Z,MUNI CODE/DRINKING IN PUBLIC,400 Block FLORENCE ST,PALO ALTO,94301
+2016-01-11T20:10:00Z,BURGLARY/AUTO,400 Block PORTAGE AV,PALO ALTO,94306
+2016-01-11T20:46:00Z,TRAFFIC/SUSPENDED LICENSE,1500 Block BLOCK PAGE MILL RD,PALO ALTO,94304
+2016-01-11T21:28:00Z,PSYCH SUBJECT,UNIVERSITY AV & EMERSON ST,PALO ALTO,94301
+2016-01-11T23:30:00Z,MUNI CODE/DRINKING IN PUBLIC,3800 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-12T03:43:00Z,PENAL CODE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-12T03:43:00Z,ASSAULT/PEACE OFFICER,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-12T03:43:00Z,PENAL CODE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-12T09:00:00Z,THEFT PETTY/BIKE/BIKE PARTS,4200 Block NEWBERRY CT,PALO ALTO,94306
+2016-01-12T09:27:00Z,VEHICLE/STORED,3900 Block PARK BLVD,PALO ALTO,94306
+2016-01-12T11:05:00Z,VEHICLE/IMPOUNDED,400 Block RAMONA ST,PALO ALTO,94301
+2016-01-12T11:33:00Z,ROBBERY/STRONG ARM,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-12T13:28:00Z,ACCIDENT PROPERTY DAMAGE,500 Block OREGON AV,PALO ALTO,94301
+2016-01-12T14:30:00Z,THEFT PETTY/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-12T15:45:00Z,ACCIDENT PROPERTY DAMAGE,DINAHS CT & EL CAMINO REAL,PALO ALTO,94306
+2016-01-12T18:53:00Z,BURGLARY/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-12T22:28:00Z,N&D/PARAPHERNALIA,EL CAMINO WAY & JAMES RD,PALO ALTO,94306
+2016-01-12T23:26:00Z,TRAFFIC/SUSPENDED LICENSE,4200 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-13T00:00:00Z,DOMESTIC VIOLENCE/BATTERY,400 Block JAMES RD,PALO ALTO,94306
+2016-01-13T00:00:00Z,CHILD ABUSE/PHYSICAL,400 Block JAMES RD,PALO ALTO,94306
+2016-01-13T00:00:00Z,DOMESTIC VIOLENCE/BATTERY,400 Block JAMES RD,PALO ALTO,94306
+2016-01-13T08:15:00Z,BURGLARY/AUTO,200 Block SHERIDAN AV,PALO ALTO,94306
+2016-01-13T09:10:00Z,ACCIDENT MINOR INJURY,E CHARLESTON RD & INDUSTRIAL AV,MOUNTAIN VIEW,94303
+2016-01-13T09:50:00Z,TRAFFIC/MISC,HWY 101 N & ELLIS ST,MOUNTAIN VIEW,""
+2016-01-13T11:30:00Z,TRAFFIC/SUSPENDED LICENSE,2000 Block LOUIS RD,PALO ALTO,94303
+2016-01-13T12:00:00Z,WARRANT/OTHER AGENCY,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-13T12:20:00Z,SUICIDE ADULT/MISC,800 Block BRUCE DR,PALO ALTO,94303
+2016-01-13T13:27:00Z,TRAFFIC/SUSPENDED LICENSE,QUARRY RD & PEAR LN,PALO ALTO,94304
+2016-01-13T14:20:00Z,VEHICLE/STORED,200 Block EVERETT AV,PALO ALTO,94301
+2016-01-13T14:21:00Z,LOST PROPERTY/MISC,700 Block EMBARCADERO RD,PALO ALTO,94303
+2016-01-13T18:15:00Z,BURGLARY/AUTO,PARK BLVD & SHERIDAN AV,PALO ALTO,94306
+2016-01-13T18:15:00Z,BURGLARY/AUTO,PARK BLVD & SHERIDAN AV,PALO ALTO,94306
+2016-01-13T20:00:00Z,BURGLARY/AUTO,SHERIDAN AV & PARK BLVD,PALO ALTO,94306
+2016-01-13T20:30:00Z,BURGLARY/AUTO,200 Block SHERIDAN AV,PALO ALTO,94306
+2016-01-13T23:00:00Z,TRAFFIC/SUSPENDED LICENSE,900 Block INDUSTRIAL AV,PALO ALTO,94303
+2016-01-14T08:00:00Z,FOUND PROPERTY/MISC,700 Block WAVERLEY ST,PALO ALTO,94301
+2016-01-14T09:13:00Z,ACCIDENT MINOR INJURY,2600 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2016-01-14T09:57:00Z,ACCIDENT PROPERTY DAMAGE,200 Block CALIFORNIA AV,PALO ALTO,94306
+2016-01-14T10:40:00Z,TRAFFIC/SUSPENDED LICENSE,E BAYSHORE & HWY 101,PALO ALTO,""
+2016-01-14T10:50:00Z,ACCIDENT PROPERTY DAMAGE,EMBARCADERO RD & BRYANT ST,PALO ALTO,94301
+2016-01-14T12:30:00Z,LOST PROPERTY/MISC,600 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-14T12:37:00Z,ACCIDENT PROPERTY DAMAGE,300 Block SHERMAN AV,PALO ALTO,94306
+2016-01-14T16:00:00Z,ACCIDENT PROPERTY DAMAGE,100 Block LYTTON AV,PALO ALTO,94301
+2016-01-14T18:30:00Z,BURGLARY/AUTO,700 Block HIGH ST,PALO ALTO,94301
+2016-01-14T18:30:00Z,BURGLARY/AUTO,700 Block HIGH ST,PALO ALTO,94301
+2016-01-14T20:30:00Z,BURGLARY/AUTO,4100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-14T21:15:00Z,BURGLARY/AUTO,300 Block SHERMAN AV,PALO ALTO,94306
+2016-01-15T09:30:00Z,BURGLARY/RESIDENTIAL,4200 Block BRIARWOOD WAY,PALO ALTO,94306
+2016-01-15T11:30:00Z,BURGLARY/RESIDENTIAL,1500 Block WALNUT DR,PALO ALTO,94303
+2016-01-15T11:40:00Z,BURGLARY/RESIDENTIAL,700 Block GREER RD,PALO ALTO,94303
+2016-01-15T18:00:00Z,THEFT PETTY/FROM AUTO,500 Block VISTA AV,PALO ALTO,94306
+2016-01-15T19:30:00Z,BURGLARY/AUTO,400 Block CALIFORNIA AV,PALO ALTO,94306
+2016-01-15T19:50:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,500 Block PATRICIA LN,PALO ALTO,94303
+2016-01-15T20:30:00Z,BURGLARY/AUTO,300 Block SHERMAN AV,PALO ALTO,94306
+2016-01-15T21:10:00Z,DUI ADULT/ACCIDENT,100 Block EL CAMINO REAL,PALO ALTO,""
+2016-01-15T21:51:00Z,WARRANT/OTHER AGENCY,400 Block EMERSON ST,PALO ALTO,94301
+2016-01-16T01:02:00Z,DUI ADULT/ACCIDENT,W CHARLESTON RD & EL CAMINO REAL,PALO ALTO,94306
+2016-01-16T01:02:00Z,TRAFFIC/SUSPENDED LICENSE,W CHARLESTON RD & EL CAMINO REAL,PALO ALTO,94306
+2016-01-16T01:02:00Z,MISDEMEANOR/HIT & RUN,W CHARLESTON RD & EL CAMINO REAL,PALO ALTO,94306
+2016-01-16T02:00:00Z,DUI ADULT/ACCIDENT,PARK BLVD & PAGE MILL RD,PALO ALTO,94306
+2016-01-16T10:00:00Z,VANDALISM/FELONY,900 Block SHAUNA LN,PALO ALTO,94306
+2016-01-16T10:58:00Z,VEHICLE/STORED,500 Block KELLY WAY,PALO ALTO,94306
+2016-01-16T11:27:00Z,TRAFFIC/SUSPENDED LICENSE,SAN ANTONIO RD & LEGHORN ST,PALO ALTO,94303
+2016-01-16T13:00:00Z,THEFT PETTY/FROM AUTO,500 Block ARASTRADERO RD,PALO ALTO,94306
+2016-01-16T14:00:00Z,THEFT PETTY/SHOPLIFT,300 Block PORTAGE AV,PALO ALTO,94306
+2016-01-16T14:09:00Z,ACCIDENT PROPERTY DAMAGE,600 Block HAMILTON AV,PALO ALTO,94301
+2016-01-16T17:00:00Z,VEHICLE/STOLEN,500 Block MCKELLAR LN,PALO ALTO,94306
+2016-01-16T17:30:00Z,VEHICLE/STOLEN,1100 Block WELCH RD,PALO ALTO,94304
+2016-01-16T19:00:00Z,THEFT PETTY/FROM AUTO,100 Block COLERIDGE AV,PALO ALTO,94301
+2016-01-16T19:00:00Z,IDENTITY THEFT/FRAUD,100 Block COLERIDGE AV,PALO ALTO,94301
+2016-01-16T19:06:00Z,N&D/PARAPHERNALIA,RAMONA ST & HAMILTON AV,PALO ALTO,94301
+2016-01-16T19:06:00Z,N&D/PARAPHERNALIA,RAMONA ST & HAMILTON AV,PALO ALTO,94301
+2016-01-16T19:20:00Z,TRAFFIC/SUSPENDED LICENSE,RAMONA ST & HAMILTON AV,PALO ALTO,94301
+2016-01-17T00:52:00Z,DRUNK IN PUBLIC ADULT/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-17T02:12:00Z,PENAL CODE/FALSE INFO TO POLIC,LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2016-01-17T02:12:00Z,WARRANT/OTHER AGENCY,LOS ROBLES AV & EL CAMINO REAL,PALO ALTO,94306
+2016-01-17T04:00:00Z,DUI ADULT/MISC,E CHARLESTON RD & FABIAN WAY,PALO ALTO,94303
+2016-01-17T06:22:00Z,ACCIDENT MINOR INJURY,4200 Block BLOCK LOS PALOS AV,PALO ALTO,94306
+2016-01-17T11:40:00Z,VEHICLE/RECOVERED,500 Block ARASTRADERO RD,PALO ALTO,94306
+2016-01-17T11:46:00Z,TRAFFIC/SUSPENDED LICENSE,OREGON AV & ROSS RD,PALO ALTO,94303
+2016-01-17T11:50:00Z,THEFT PETTY/FROM AUTO,2700 Block KIPLING ST,PALO ALTO,94306
+2016-01-17T17:35:00Z,THEFT PETTY/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-17T17:35:00Z,THEFT PETTY/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-17T19:00:00Z,PSYCH SUBJECT,500 Block BARRON AV,PALO ALTO,94306
+2016-01-17T20:40:00Z,TRAFFIC/SUSPENDED LICENSE,E BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2016-01-17T21:44:00Z,N&D/UNDER INFLUENCE,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-17T23:38:00Z,WARRANT/OTHER AGENCY,FRANCIS DR ST & CHANNING AV,PALO ALTO,94303
+2016-01-18T00:00:00Z,VEHICLE/STORED,900 Block GUINDA ST,PALO ALTO,94301
+2016-01-18T06:01:00Z,BURGLARY/AUTO,100 Block CHANNING AV,PALO ALTO,94301
+2016-01-18T08:25:00Z,N&D/PARAPHERNALIA,700 Block URBAN LN,PALO ALTO,94301
+2016-01-18T08:39:00Z,PENAL CODE/TRESPASS,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-18T08:39:00Z,N&D/POSSESSION,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-18T08:39:00Z,PENAL CODE/TRESPASS,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-18T08:39:00Z,PENAL CODE/MISC,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-18T11:54:00Z,LOST PROPERTY/MISC,300 Block PORTAGE AV,PALO ALTO,94306
+2016-01-18T16:20:00Z,TRAFFIC/MISC,2500 Block BLOCK W BAYSHORE RD,PALO ALTO,94303
+2016-01-18T16:30:00Z,BURGLARY/RESIDENTIAL,500 Block KELLY WAY,PALO ALTO,94306
+2016-01-18T16:57:00Z,THEFT GRAND/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-18T19:00:00Z,VANDALISM/MISDEMEANOR,2400 Block W BAYSHORE RD,PALO ALTO,94303
+2016-01-19T00:00:00Z,N&D/POSSESS/SALES,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-19T00:00:00Z,N&D/PARAPHERNALIA,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-19T00:00:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-19T00:00:00Z,PENAL CODE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-19T00:00:00Z,HIT & RUN/PROPERTY DAMAGE,100 Block WALTER HAYS DR,PALO ALTO,94303
+2016-01-19T00:02:00Z,TRAFFIC/MISC,EL CAMINO REAL & LOS ROBLES AV,PALO ALTO,94306
+2016-01-19T04:13:00Z,MUNI CODE/SOLICIT W/O PERMIT,700 Block JOSINA AV,PALO ALTO,94306
+2016-01-19T04:52:00Z,TRAFFIC/MISC,EL CAMINO REAL & EL CAMINO WAY,PALO ALTO,94306
+2016-01-19T10:30:00Z,PSYCH SUBJECT,700 Block ARASTRADERO RD,PALO ALTO,94306
+2016-01-19T10:58:00Z,VEHICLE/STORED,1000 Block COLORADO AV,PALO ALTO,94303
+2016-01-19T12:45:00Z,ACCIDENT MINOR INJURY,200 Block PASTEUR DR,PALO ALTO,94304
+2016-01-19T13:30:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-19T13:30:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-19T13:50:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-19T14:15:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-19T15:45:00Z,ACCIDENT PROPERTY DAMAGE,200 Block CAMBRIDGE AV,PALO ALTO,94306
+2016-01-19T16:18:00Z,ACCIDENT PROPERTY DAMAGE,2800 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2016-01-19T16:50:00Z,ACCIDENT PROPERTY DAMAGE,3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2016-01-19T17:17:00Z,TRAFFIC/MISC,GRANT AV & EL CAMINO REAL,PALO ALTO,94306
+2016-01-19T18:30:00Z,BURGLARY/AUTO,4200 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-19T18:45:00Z,BURGLARY/AUTO,300 Block SHERMAN AV,PALO ALTO,94306
+2016-01-19T19:00:00Z,BURGLARY/AUTO,400 Block TASSO ST,PALO ALTO,94301
+2016-01-19T20:00:00Z,MUNI CODE/SOLICIT W/O PERMIT,4100 Block BYRON ST,PALO ALTO,94306
+2016-01-19T21:46:00Z,ACCIDENT MINOR INJURY,MIDDLEFIELD RD & OREGON EXPY,PALO ALTO,94301
+2016-01-20T08:00:00Z,DOMESTIC VIOLENCE/BATTERY,500 Block SAND HILL RD,PALO ALTO,94304
+2016-01-20T08:57:00Z,ACCIDENT MINOR INJURY,500 Block ALMA ST,PALO ALTO,94301
+2016-01-20T11:58:00Z,THEFT PETTY/BIKE/BIKE PARTS,1 Block EMBARCADERO RD,PALO ALTO,94301
+2016-01-20T11:58:00Z,THEFT PETTY/BIKE/BIKE PARTS,1 Block EMBARCADERO RD,PALO ALTO,94301
+2016-01-20T14:15:00Z,PSYCH SUBJECT,300 Block N CALIFORNIA AV,PALO ALTO,94301
+2016-01-20T16:00:00Z,VEHICLE/STORED,200 Block HOMER AV,PALO ALTO,94301
+2016-01-20T16:15:00Z,WARRANT/OTHER AGENCY,1600 Block BLOCK MARIPOSA AV,PALO ALTO,94306
+2016-01-20T16:40:00Z,BURGLARY/AUTO,200 Block EL CAMINO REAL,PALO ALTO,94301
+2016-01-20T16:50:00Z,BURGLARY/AUTO,2600 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-20T17:58:00Z,DUI ADULT/ACCIDENT,400 Block ALMA ST,PALO ALTO,94301
+2016-01-20T18:30:00Z,THEFT GRAND/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-20T18:34:00Z,ACCIDENT MINOR INJURY,LYTTON AV & BRYANT ST,PALO ALTO,94301
+2016-01-20T20:00:00Z,THEFT GRAND/MISC,4100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-20T20:35:00Z,ACCIDENT MINOR INJURY,400 Block ALMA ST,PALO ALTO,94301
+2016-01-20T23:15:00Z,ROBBERY/ARMED,700 Block COLORADO AV,PALO ALTO,94303
+2016-01-20T23:15:00Z,ROBBERY/ARMED,700 Block COLORADO AV,PALO ALTO,94303
+2016-01-21T02:29:00Z,TRAFFIC/MISC,700 Block OREGON EXPY,PALO ALTO,94306
+2016-01-21T03:53:00Z,POSSESS STOLEN PROP/MISC,1400 Block HAMILTON AV,PALO ALTO,94301
+2016-01-21T08:10:00Z,ACCIDENT PROPERTY DAMAGE,800 Block E CHARLESTON RD,PALO ALTO,94303
+2016-01-21T08:30:00Z,LOST PROPERTY/MISC,MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2016-01-21T15:53:00Z,ACCIDENT PROPERTY DAMAGE,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-21T16:00:00Z,MUNI CODE/SOLICIT W/O PERMIT,500 Block MAYBELL AV,PALO ALTO,94306
+2016-01-21T19:00:00Z,IDENTITY THEFT/MISC.,1500 Block MARIPOSA AV,PALO ALTO,94306
+2016-01-21T20:15:00Z,BURGLARY/AUTO,3300 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-21T20:30:00Z,BURGLARY/AUTO,2500 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-21T20:30:00Z,BURGLARY/AUTO,2500 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-21T20:45:00Z,BURGLARY/AUTO,4100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-21T21:06:00Z,BURGLARY/AUTO,1900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-21T21:06:00Z,BURGLARY/AUTO,1900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-21T22:06:00Z,FOUND PROPERTY/MISC,2300 Block WAVERLEY ST,PALO ALTO,94301
+2016-01-22T01:35:00Z,DRIVING WITH A SUSPENDED OR RE,W BAYSHORE RD & EMBARCADERO RD,PALO ALTO,94303
+2016-01-22T04:38:00Z,BURGLARY/AUTO,2900 Block CLARA DR,PALO ALTO,94303
+2016-01-22T09:45:00Z,TRAFFIC/SUSPENDED LICENSE,FRANCIS DR ST & CHANNING AV,PALO ALTO,94303
+2016-01-22T10:00:00Z,BURGLARY/RESIDENTIAL,4200 Block MANUELA AV,PALO ALTO,94306
+2016-01-22T12:00:00Z,IDENTITY THEFT/MISC.,2000 Block HANOVER ST,PALO ALTO,94306
+2016-01-22T12:26:00Z,ACCIDENT PROPERTY DAMAGE,400 Block SHERMAN AV,PALO ALTO,94306
+2016-01-22T12:59:00Z,ACCIDENT PROPERTY DAMAGE,2900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2016-01-22T13:00:00Z,VANDALISM/FELONY,3000 Block HANOVER ST,PALO ALTO,94304
+2016-01-22T14:22:00Z,THEFT PETTY/BIKE/BIKE PARTS,500 Block ARASTRADERO RD,PALO ALTO,94306
+2016-01-22T15:13:00Z,LOST PROPERTY/MISC,WAVERLEY ST & SEALE AV,PALO ALTO,94301
+2016-01-22T16:00:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-22T17:00:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-22T17:00:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-22T17:00:00Z,FAMILY VIOLENCE/BATTERY,100 Block MONROE DR,PALO ALTO,94306
+2016-01-22T17:30:00Z,BURGLARY/AUTO,400 Block PORTAGE AV,PALO ALTO,94306
+2016-01-22T18:00:00Z,VANDALISM/MISD GRAFFITI,2100 Block EDGEWOOD DR,PALO ALTO,94303
+2016-01-22T18:40:00Z,ACCIDENT PROPERTY DAMAGE,2300 Block SIERRA CT,PALO ALTO,94303
+2016-01-22T18:44:00Z,DRUNK IN PUBLIC ADULT/MISC,400 Block FLORENCE ST,PALO ALTO,94301
+2016-01-22T20:30:00Z,N&D/POSSESSION,300 Block QUARRY RD,PALO ALTO,94304
+2016-01-23T02:15:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-23T03:52:00Z,DRUNK IN PUBLIC ADULT/MISC,200 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-23T08:10:00Z,DOMESTIC VIOLENCE/MISC,600 Block LOS ROBLES AV,PALO ALTO,94306
+2016-01-23T15:41:00Z,ACCIDENT PROPERTY DAMAGE,100 Block MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-23T16:00:00Z,THEFT PETTY/MISC,3400 Block ROSS RD,PALO ALTO,94303
+2016-01-23T16:34:00Z,BURGLARY/COMMERCIAL,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-23T23:50:00Z,DUI ADULT/MISC,ALMA ST & E CHARLESTON RD,PALO ALTO,94306
+2016-01-24T01:07:00Z,DRUNK IN PUBLIC ADULT/MISC,400 Block EMERSON ST,PALO ALTO,94301
+2016-01-24T01:20:00Z,DOMESTIC VIOLENCE/V COURT ORDE,400 Block LYTTON AV,PALO ALTO,94301
+2016-01-24T01:20:00Z,PENAL CODE/MISC,400 Block LYTTON AV,PALO ALTO,94301
+2016-01-24T02:46:00Z,DRUNK IN PUBLIC ADULT/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-24T03:10:00Z,DUI ADULT/MISC,OREGON EXPY & GREER RD,PALO ALTO,94303
+2016-01-24T10:10:00Z,VEHICLE/RECOVERED,3700 Block BLOCK LINDERO DR,PALO ALTO,94306
+2016-01-24T11:56:00Z,ACCIDENT PROPERTY DAMAGE,CHURCHILL AV,PALO ALTO,""
+2016-01-24T16:33:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-24T17:20:00Z,THEFT PETTY/SHOPLIFT,300 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-24T17:20:00Z,N&D/UNDER INFLUENCE,300 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-24T17:20:00Z,THEFT PETTY/SHOPLIFT,300 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-24T18:24:00Z,ACCIDENT PROPERTY DAMAGE,3400 Block BLOCK ALMA ST,PALO ALTO,94306
+2016-01-24T20:40:00Z,TRAFFIC/SUSPENDED LICENSE,COWPER ST & LYTTON AV,PALO ALTO,94301
+2016-01-24T21:10:00Z,PENAL CODE/MISC,500 Block MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-24T21:10:00Z,MUNI CODE/MISC,500 Block MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-24T21:10:00Z,N&D/POSSESSION,500 Block MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-24T21:10:00Z,PENAL CODE/MISC,500 Block MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-24T21:35:00Z,TRAFFIC/SUSPENDED LICENSE,SAN ANTONIO RD & E CHARLESTON RD,PALO ALTO,94303
+2016-01-24T23:46:00Z,DRUNK IN PUBLIC ADULT/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-25T00:00:00Z,BATTERY/SIMPLE,300 Block CALIFORNIA AV,PALO ALTO,94306
+2016-01-25T03:14:00Z,ELDER ABUSE/SELF NEGLECT,700 Block DE SOTO DR,PALO ALTO,94303
+2016-01-25T07:41:00Z,ACCIDENT PROPERTY DAMAGE,600 Block ALMA ST,PALO ALTO,94301
+2016-01-25T07:50:00Z,VEHICLE/STORED,800 Block COWPER ST,PALO ALTO,94301
+2016-01-25T10:50:00Z,PSYCH SUBJECT,700 Block ARASTRADERO RD,PALO ALTO,94306
+2016-01-25T11:00:00Z,BURGLARY/AUTO,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-25T12:06:00Z,VANDALISM/MISDEMEANOR,EMERSON ST & HOMER AV,PALO ALTO,94301
+2016-01-25T13:42:00Z,FOUND PROPERTY/MISC,1500 Block CHANNING AV,PALO ALTO,94303
+2016-01-25T16:50:00Z,BURGLARY/AUTO,2300 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-25T18:28:00Z,ACCIDENT MINOR INJURY,200 Block HAMILTON AV,PALO ALTO,94301
+2016-01-25T18:30:00Z,THEFT PETTY/FROM AUTO,1100 Block CLARK WAY,PALO ALTO,94304
+2016-01-25T18:32:00Z,POSSESS STOLEN PROP/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-25T19:00:00Z,BURGLARY/AUTO,500 Block HIGH ST,PALO ALTO,94301
+2016-01-25T20:45:00Z,TRAFFIC/SUSPENDED LICENSE,2000 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2016-01-25T21:30:00Z,PSYCH SUBJECT,400 Block SPRUCE LN,PALO ALTO,94306
+2016-01-26T01:15:00Z,PSYCH SUBJECT,600 Block FOREST AV,PALO ALTO,94301
+2016-01-26T01:40:00Z,MUNI CODE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-26T01:41:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-26T01:41:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-26T01:50:00Z,BATTERY/SIMPLE,EL CAMINO REAL & N SAN ANTONIO RD,"",""
+2016-01-26T02:53:00Z,WARRANT/OTHER AGENCY,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-26T08:34:00Z,VEHICLE/STORED,1100 Block CHANNING AV,PALO ALTO,94301
+2016-01-26T08:48:00Z,ACCIDENT PROPERTY DAMAGE,300 Block KIPLING ST,PALO ALTO,94301
+2016-01-26T09:57:00Z,ACCIDENT MINOR INJURY,100 Block PASTEUR DR,PALO ALTO,94304
+2016-01-26T14:30:00Z,BICYCLE/ABANDONED,200 Block PALO ALTO AV,PALO ALTO,94301
+2016-01-26T14:53:00Z,MISDEMEANOR/HIT & RUN,3100 Block BLOCK ALMA ST,PALO ALTO,94306
+2016-01-26T17:00:00Z,BURGLARY/AUTO,500 Block HIGH ST,PALO ALTO,94301
+2016-01-26T17:32:00Z,ACCIDENT PROPERTY DAMAGE,400 Block CALIFORNIA AV,PALO ALTO,94306
+2016-01-26T17:57:00Z,ACCIDENT MINOR INJURY,BRYANT ST & COLORADO AV,PALO ALTO,94301
+2016-01-26T18:56:00Z,DRUNK IN PUBLIC ADULT/MISC,500 Block BRYANT ST,PALO ALTO,94301
+2016-01-26T19:39:00Z,OUTSIDE INVESTIGATION/MISC,400 Block WAVERLEY ST,PALO ALTO,94301
+2016-01-27T00:55:00Z,WARRANT/OTHER AGENCY,1900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2016-01-27T01:10:00Z,WARRANT/OTHER AGENCY,3800 Block MIRANDA AV,PALO ALTO,94304
+2016-01-27T01:13:00Z,TRAFFIC/SUSPENDED LICENSE,HAMILTON AV & COWPER ST,PALO ALTO,94301
+2016-01-27T09:30:00Z,BURGLARY/AUTO,2300 Block EMBARCADERO RD,PALO ALTO,94303
+2016-01-27T10:00:00Z,BURGLARY/AUTO,2300 Block EMBARCADERO RD,PALO ALTO,94303
+2016-01-27T10:24:00Z,BURGLARY/AUTO,2300 Block EMBARCADERO RD,PALO ALTO,94303
+2016-01-27T11:20:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & EMBARCADERO RD,PALO ALTO,94301
+2016-01-27T12:35:00Z,TRAFFIC/SUSPENDED LICENSE,800 Block EL CAMINO REAL,PALO ALTO,94301
+2016-01-27T12:52:00Z,FOUND PROPERTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-27T15:10:00Z,TRAFFIC/MISC,3800 Block BLOCK ALMA ST,PALO ALTO,94306
+2016-01-27T15:30:00Z,CREDIT CARDS/FRAUDULENT USE,500 Block LYTTON AV,PALO ALTO,94301
+2016-01-27T18:45:00Z,BURGLARY/AUTO,4100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-27T19:30:00Z,BURGLARY/AUTO,4100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-27T20:00:00Z,BURGLARY ATTEMPT/AUTO,4100 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-27T21:10:00Z,DRUNK IN PUBLIC ADULT/MISC,3800 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-28T08:00:00Z,BURGLARY ATTEMPT/RESIDENTIAL,2400 Block W BAYSHORE RD,PALO ALTO,94303
+2016-01-28T08:30:00Z,VEHICLE/IMPOUNDED,1 Block ENCINA AV,PALO ALTO,94301
+2016-01-28T09:30:00Z,SUSPICIOUS CIRCUMSTANCE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-28T09:55:00Z,ACCIDENT MINOR INJURY,HWY 101 N & SAN ANTONIO RD,MOUNTAIN VIEW,""
+2016-01-28T10:44:00Z,ACCIDENT PROPERTY DAMAGE,W EL CAMINO REAL & LANE AV,MOUNTAIN VIEW,""
+2016-01-28T10:55:00Z,VEHICLE/IMPOUNDED,1500 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-28T11:39:00Z,VEHICLE/STORED,400 Block KINGSLEY AV,PALO ALTO,94301
+2016-01-28T11:47:00Z,ACCIDENT MINOR INJURY,1300 Block EMBARCADERO,PALO ALTO,94303
+2016-01-28T12:03:00Z,CASUALTY/FALL,URBAN LN & ENCINA AV,PALO ALTO,94301
+2016-01-28T16:09:00Z,ACCIDENT PROPERTY DAMAGE,3000 Block BRYANT ST,PALO ALTO,94306
+2016-01-28T16:55:00Z,VEHICLE/STOLEN,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-28T18:45:00Z,CASUALTY/FALL,1000 Block COLORADO AV,PALO ALTO,94303
+2016-01-29T08:00:00Z,TRAFFIC/SUSPENDED LICENSE,600 Block HAMILTON AV,PALO ALTO,94301
+2016-01-29T08:24:00Z,TRAFFIC/SUSPENDED LICENSE,700 Block EMBARCADERO RD,PALO ALTO,94303
+2016-01-29T09:00:00Z,PENAL CODE/DISOBEY COURT ORDER,300 Block CALIFORNIA AV,PALO ALTO,94306
+2016-01-29T09:10:00Z,THEFT PETTY/BIKE/BIKE PARTS,200 Block CHARLES MARX WAY,PALO ALTO,94304
+2016-01-29T09:37:00Z,FOUND PROPERTY/MISC,200 Block HAMILTON AV,PALO ALTO,94301
+2016-01-29T11:35:00Z,TRAFFIC/SUSPENDED LICENSE,NEWELL RD & PITMAN AV,PALO ALTO,94301
+2016-01-29T11:50:00Z,ACCIDENT MINOR INJURY,400 Block CURTNER AV,PALO ALTO,94306
+2016-01-29T12:39:00Z,ACCIDENT MINOR INJURY,UNIVERSITY AV,PALO ALTO,""
+2016-01-29T13:00:00Z,VANDALISM/FELONY,500 Block HIGH ST,PALO ALTO,94301
+2016-01-29T13:40:00Z,BURGLARY/COMMERCIAL,1800 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-29T15:00:00Z,THEFT PETTY/BIKE/BIKE PARTS,3700 Block MIDDLEFIELD RD,PALO ALTO,94303
+2016-01-29T16:56:00Z,ACCIDENT MINOR INJURY,FOREST AV & MIDDLEFIELD RD,PALO ALTO,94301
+2016-01-29T17:00:00Z,BURGLARY ATTEMPT/AUTO,500 Block HIGH ST,PALO ALTO,94301
+2016-01-29T17:45:00Z,VANDALISM/MISDEMEANOR,400 Block RAMONA ST,PALO ALTO,94301
+2016-01-29T18:42:00Z,THEFT PETTY/SHOPLIFT,300 Block PORTAGE AV,PALO ALTO,94306
+2016-01-29T21:00:00Z,DRUNK IN PUBLIC ADULT/MISC,EL DORADO AV & COWPER ST,PALO ALTO,94306
+2016-01-29T22:02:00Z,ACCIDENT MINOR INJURY,200 Block UNIVERSITY AV,PALO ALTO,94301
+2016-01-29T23:08:00Z,DUI ADULT/ACCIDENT,3000 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-30T01:15:00Z,DOMESTIC VIOLENCE/ASSAULT,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-30T01:30:00Z,FOUND PROPERTY/MISC,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-01-30T10:15:00Z,PSYCH SUBJECT,4100 Block ABEL AV,PALO ALTO,94306
+2016-01-30T12:55:00Z,SUSP CIRC/SEX CRIME,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-01-30T16:30:00Z,BURGLARY/AUTO,400 Block PORTAGE AV,PALO ALTO,94306
+2016-01-30T16:30:00Z,BURGLARY/AUTO,400 Block PORTAGE AV,PALO ALTO,94306
+2016-01-30T22:20:00Z,TRAFFIC/MISC,UNIVERSITY AV & WOODLAND AV,"",94303
+2016-01-31T00:11:00Z,DUI ADULT/MISC,HAMILTON AV & EMERSON ST,PALO ALTO,94301
+2016-01-31T00:45:00Z,VANDALISM/FELONY,4000 Block ORME ST,PALO ALTO,94306
+2016-01-31T08:42:00Z,VEHICLE/STOLEN,3300 Block PARK BLVD,PALO ALTO,94306
+2016-01-31T08:51:00Z,PENAL CODE/MISC,2800 Block MIDDLEFIELD RD,PALO ALTO,94306
+2016-01-31T12:00:00Z,BICYCLE/ABANDONED,3200 Block COWPER ST,PALO ALTO,94306
+2016-01-31T12:30:00Z,PSYCH SUBJECT,500 Block EVERETT AV,PALO ALTO,94301
+2016-01-31T14:21:00Z,MUNI CODE/SOLICIT W/O PERMIT,EL CAMINO REAL & MEDICAL FOUNDATION WAY,PALO ALTO,94301
+2016-01-31T14:30:00Z,THEFT GRAND/MISC,3400 Block ROSS RD,PALO ALTO,94303
+2016-01-31T17:00:00Z,VEHICLE/STOLEN,ENCINA AV,PALO ALTO,94301
+2016-01-31T17:45:00Z,BURGLARY/AUTO,400 Block BRYANT ST,PALO ALTO,94301
+2016-01-31T18:00:00Z,BURGLARY/AUTO,500 Block HIGH ST,PALO ALTO,94301
+2016-01-31T19:40:00Z,BURGLARY/AUTO,400 Block BRYANT ST,PALO ALTO,94301
+2016-01-31T20:30:00Z,PENAL CODE/FALSE INFO TO POLIC,UNIVERSITY AV & WAVERLEY ST,PALO ALTO,94301
+2016-01-31T21:20:00Z,TRAFFIC/MISC,BRYANT ST & LYTTON AV,PALO ALTO,94301
+2016-01-31T21:50:00Z,TRAFFIC/SUSPENDED LICENSE,HAMILTON AV & BRYANT ST,PALO ALTO,94301
+2016-01-31T22:30:00Z,TRAFFIC/SUSPENDED LICENSE,3100 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2016-01-31T23:54:00Z,N&D/UNDER INFLUENCE,400 Block WAVERLEY ST,PALO ALTO,94301
+2016-02-01T08:00:00Z,PSYCH SUBJECT,600 Block SAN ANTONIO RD,PALO ALTO,94306
+2016-02-01T08:34:00Z,THEFT PETTY/BIKE/BIKE PARTS,1100 Block CLARK WAY,PALO ALTO,94304
+2016-02-01T11:11:00Z,FOUND PROPERTY/MISC,200 Block FOREST AV,PALO ALTO,94301
+2016-02-01T11:30:00Z,MISSING ADULT/MISC,200 Block WHITCLEM DR,PALO ALTO,94306
+2016-02-01T11:57:00Z,ACCIDENT PROPERTY DAMAGE,500 Block E CHARLESTON RD,PALO ALTO,94306
+2016-02-01T12:33:00Z,ACCIDENT PROPERTY DAMAGE,500 Block HIGH ST,PALO ALTO,94301
+2016-02-01T17:23:00Z,ACCIDENT MINOR INJURY,3800 Block BLOCK MIDDLEFIELD RD,PALO ALTO,94303
+2016-02-01T17:56:00Z,ACCIDENT MINOR INJURY,GREENMANOR CT & OREGON EXPY,PALO ALTO,94301
+2016-02-01T18:30:00Z,BURGLARY/AUTO,3200 Block EL CAMINO REAL,PALO ALTO,94306
+2016-02-01T18:30:00Z,BURGLARY/AUTO,3200 Block EL CAMINO REAL,PALO ALTO,94306
+2016-02-01T18:33:00Z,FOUND PROPERTY/MISC,ENCINA AV,PALO ALTO,94301
+2016-02-01T18:48:00Z,WARRANT/OTHER AGENCY,3000 Block PAGE MILL RD,PALO ALTO,94304
+2016-02-01T19:15:00Z,ACCIDENT MINOR INJURY,OREGON EXPY & BRYANT ST,PALO ALTO,94301
+2016-02-01T20:28:00Z,DOMESTIC VIOLENCE/V COURT ORDE,UNIVERSITY AV & MAPLE ST,PALO ALTO,94301
+2016-02-01T22:29:00Z,WARRANT/OTHER AGENCY,3900 Block EL CAMINO REAL,PALO ALTO,94306
+2016-02-02T00:40:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO WAY & W MEADOW DR,PALO ALTO,94306
+2016-02-02T01:42:00Z,N&D/POSSESSION,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-02-02T01:42:00Z,N&D/PARAPHERNALIA,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-02-02T01:42:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-02-02T01:53:00Z,N&D/UNDER INFLUENCE,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-02-02T03:31:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & STANFORD AV,PALO ALTO,94306
+2016-02-02T03:31:00Z,PENAL CODE/FALSE INFO TO POLIC,EL CAMINO REAL & STANFORD AV,PALO ALTO,94306
+2016-02-02T03:31:00Z,PENAL CODE/RESISTING ARREST,EL CAMINO REAL & STANFORD AV,PALO ALTO,94306
+2016-02-02T03:31:00Z,IDENTITY THEFT/CREDIT CARDS,EL CAMINO REAL & STANFORD AV,PALO ALTO,94306
+2016-02-02T07:45:00Z,MISSING ADULT/MISC,900 Block BRYANT ST,PALO ALTO,94301
+2016-02-02T07:47:00Z,BURGLARY/COMMERCIAL,1500 Block PAGE MILL RD,PALO ALTO,94304
+2016-02-02T09:04:00Z,THEFT PETTY/BIKE/BIKE PARTS,1 Block EMBARCADERO RD,PALO ALTO,94301
+2016-02-02T09:45:00Z,ACCIDENT MINOR INJURY,OBERLIN ST & COLLEGE AV,PALO ALTO,94306
+2016-02-02T09:49:00Z,FELONY HIT & RUN,ALMA ST & TENNYSON AV,PALO ALTO,94306
+2016-02-02T10:41:00Z,ACCIDENT PROPERTY DAMAGE,ALMA ST & E CHARLESTON RD,PALO ALTO,94306
+2016-02-02T10:56:00Z,ACCIDENT PROPERTY DAMAGE,600 Block E MEADOW DR,PALO ALTO,94306
+2016-02-02T11:20:00Z,VEHICLE/IMPOUNDED,1400 Block BLOCK EL CAMINO REAL,PALO ALTO,""
+2016-02-02T11:50:00Z,ACCIDENT PROPERTY DAMAGE,1800 Block SAND HILL RD,PALO ALTO,94304
+2016-02-02T12:07:00Z,LOST PROPERTY/MISC,300 Block CALIFORNIA AV,PALO ALTO,94301
+2016-02-02T12:51:00Z,DOMESTIC VIOLENCE/BATTERY,4100 Block ABEL AVE,PALO ALTO,94306
+2016-02-02T12:51:00Z,CHILD ABUSE/EMOTIONAL,4100 Block ABEL AVE,PALO ALTO,94306
+2016-02-02T12:51:00Z,DOMESTIC VIOLENCE/BATTERY,4100 Block ABEL AVE,PALO ALTO,94306
+2016-02-02T13:00:00Z,FOUND PROPERTY/MISC,200 Block FOREST AV,PALO ALTO,94301
+2016-02-02T14:28:00Z,ACCIDENT PROPERTY DAMAGE,1300 Block BLOCK HAMILTON AV,PALO ALTO,94301
+2016-02-02T16:09:00Z,THEFT PETTY/BIKE/BIKE PARTS,1700 Block SAND HILL RD,PALO ALTO,94304
+2016-02-02T18:30:00Z,SEX CRIME/MISC,500 Block EMERSON ST,PALO ALTO,94301
+2016-02-02T19:30:00Z,BURGLARY/AUTO,EL CAMINO REAL & PARK BLVD,PALO ALTO,94306
+2016-02-02T20:50:00Z,TRAFFIC/SUSPENDED LICENSE,MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2016-02-02T20:50:00Z,WARRANT/OTHER AGENCY,MIDDLEFIELD RD & SAN ANTONIO RD,PALO ALTO,94303
+2016-02-03T01:15:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & ARASTRADERO RD,PALO ALTO,94306
+2016-02-03T02:00:00Z,MUNI CODE/MISC,400 Block MITCHELL LN,PALO ALTO,94301
+2016-02-03T09:00:00Z,VEHICLE/STORED,1400 Block EL CAMINO REAL,PALO ALTO,""
+2016-02-03T09:00:00Z,OUTSIDE INVESTIGATION/MISC,800 Block SAN ANTONIO RD,PALO ALTO,94303
+2016-02-03T10:14:00Z,LOST PROPERTY/MISC,300 Block WAVERLEY ST,PALO ALTO,94301
+2016-02-03T10:18:00Z,WARRANT/OTHER AGENCY,500 Block HIGH ST,PALO ALTO,94301
+2016-02-03T11:00:00Z,FOUND PROPERTY/MISC,1000 Block PAGE MILL RD,PALO ALTO,94304
+2016-02-03T11:30:00Z,ACCIDENT PROPERTY DAMAGE,400 Block E CHARLESTON RD,PALO ALTO,94306
+2016-02-03T12:08:00Z,ACCIDENT MINOR INJURY,700 Block UNIVERSITY AV,PALO ALTO,94301
+2016-02-03T13:34:00Z,MISDEMEANOR/HIT & RUN,400 Block EL CAMINO REAL,PALO ALTO,""
+2016-02-03T15:33:00Z,TRAFFIC/MISC,EL CAMINO REAL & SAND HILL RD,PALO ALTO,94304
+2016-02-03T18:00:00Z,BURGLARY/AUTO,300 Block SHERMAN AV,PALO ALTO,94306
+2016-02-03T19:00:00Z,DOMESTIC VIOLENCE/BATTERY,1 Block ENCINA AV,PALO ALTO,94301
+2016-02-03T19:00:00Z,DOMESTIC VIOLENCE/V COURT ORDE,1 Block ENCINA AV,PALO ALTO,94301
+2016-02-03T20:50:00Z,TRAFFIC/SUSPENDED LICENSE,N CALIFORNIA AV & EMBARCADERO RD,PALO ALTO,94303
+2016-02-03T21:40:00Z,DRUNK IN PUBLIC ADULT/MISC,500 Block ARASTRADERO RD,PALO ALTO,94306
+2016-02-03T21:40:00Z,BATTERY/SIMPLE,500 Block ARASTRADERO RD,PALO ALTO,94306
+2016-02-03T21:40:00Z,VANDALISM/MISDEMEANOR,500 Block ARASTRADERO RD,PALO ALTO,94306
+2016-02-03T21:40:00Z,DRUNK IN PUBLIC ADULT/MISC,500 Block ARASTRADERO RD,PALO ALTO,94306
+2016-02-03T22:45:00Z,DRUNK IN PUBLIC ADULT/MISC,700 Block CALIFORNIA AV,PALO ALTO,94304
+2016-02-04T01:44:00Z,VEHICLE/IMPOUNDED,EMBARCADERO RD & GREER RD,PALO ALTO,94303
+2016-02-04T03:00:00Z,PENAL CODE/MISC,1 Block UNIVERSITY AV,PALO ALTO,94301
+2016-02-04T13:40:00Z,FOUND PROPERTY/MISC,500 Block EMERSON ST,PALO ALTO,94301
+2016-02-04T15:18:00Z,ACCIDENT MINOR INJURY,2200 Block SOUTH CT,PALO ALTO,94301
+2016-02-04T17:32:00Z,ACCIDENT PROPERTY DAMAGE,4200 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2016-02-04T18:30:00Z,BURGLARY/COMMERCIAL,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-02-04T18:30:00Z,FORGERY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-02-04T18:30:00Z,THEFT GRAND/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-02-04T18:30:00Z,IDENTITY THEFT/FRAUD,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-02-04T18:58:00Z,BURGLARY/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-02-04T18:58:00Z,N&D/POSSESSION,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-02-04T18:58:00Z,N&D/PARAPHERNALIA,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-02-04T19:23:00Z,TRAFFIC/SUSPENDED LICENSE,EL CAMINO REAL & LOS ROBLES AV,PALO ALTO,94306
+2016-02-04T19:45:00Z,PSYCH SUBJECT,200 Block OXFORD AV,PALO ALTO,94306
+2016-02-05T01:13:00Z,DUI ADULT/MISC,EMBARCADERO RD & W BAYSHORE RD,PALO ALTO,94303
+2016-02-05T16:21:00Z,ACCIDENT PROPERTY DAMAGE,PAGE MILL RD & EL CAMINO REAL,PALO ALTO,94306
+2016-02-05T18:16:00Z,FOUND PROPERTY/MISC,3600 Block MIDDLEFIELD RD,PALO ALTO,94303
+2016-02-05T20:25:00Z,WARRANT/OTHER AGENCY,TERMINAL BLVD & BRODERICK WAY,MOUNTAIN VIEW,""
+2016-02-05T21:33:00Z,DRUNK IN PUBLIC ADULT/MISC,500 Block RAMONA ST,PALO ALTO,94301
+2016-02-05T23:28:00Z,DRUNK IN PUBLIC ADULT/MISC,100 Block EMERSON ST,PALO ALTO,94301
+2016-02-06T00:00:00Z,BURGLARY/RESIDENTIAL,500 Block VISTA AV,PALO ALTO,94306
+2016-02-06T00:20:00Z,FOUND PROPERTY/MISC,200 Block FOREST AV,PALO ALTO,94301
+2016-02-06T01:34:00Z,PSYCH SUBJECT,300 Block EL VERANO AV,PALO ALTO,94306
+2016-02-06T02:00:00Z,ELDER ABUSE/PHYSICAL,2700 Block EL CAMINO REAL,PALO ALTO,94306
+2016-02-06T14:23:00Z,THEFT PETTY/MISC,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-02-06T16:30:00Z,BURGLARY/AUTO,2300 Block EMBARCADERO RD,PALO ALTO,94303
+2016-02-06T17:03:00Z,PSYCH SUBJECT,700 Block EMERSON ST,PALO ALTO,94301
+2016-02-06T17:28:00Z,THEFT PETTY/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
+2016-02-06T18:30:00Z,BURGLARY/AUTO,2500 Block EL CAMINO REAL,PALO ALTO,94306
+2016-02-06T18:57:00Z,ACCIDENT PROPERTY DAMAGE,400 Block SHERMAN AV,PALO ALTO,94306
+2016-02-06T20:25:00Z,THEFT GRAND/SHOPLIFT,400 Block UNIVERSITY AV,PALO ALTO,94301
+2016-02-07T00:52:00Z,THEFT PETTY/FROM AUTO,1600 Block CASTILLEJA AV,PALO ALTO,94306
+2016-02-07T02:08:00Z,MUNI CODE/MISC,200 Block UNIVERSITY AV,PALO ALTO,94301
+2016-02-07T09:02:00Z,VEHICLE/STORED,NEWELL RD & EMBARCADERO RD,PALO ALTO,94303
+2016-02-07T10:28:00Z,THEFT GRAND/SHOPLIFT,300 Block UNIVERSITY AV,PALO ALTO,94301
+2016-02-07T16:00:00Z,PSYCH SUBJECT,QUARRY RD & WELCH RD,PALO ALTO,94304
+2016-02-07T16:15:00Z,DOMESTIC VIOLENCE/BATTERY,600 Block SAN ANTONIO AV,PALO ALTO,94306
+2016-02-07T16:24:00Z,THEFT PETTY/SHOPLIFT,100 Block EL CAMINO REAL,PALO ALTO,94304
diff --git a/measure/src/main/resources/crime_report_truth.csv b/measure/src/main/resources/crime_report_truth.csv
new file mode 100644
index 0000000..24f49ad
--- /dev/null
+++ b/measure/src/main/resources/crime_report_truth.csv
@@ -0,0 +1,2 @@
+city_name
+PALO ALTO
\ No newline at end of file
diff --git a/measure/src/main/resources/env-batch.json b/measure/src/main/resources/env-batch.json
index fd9261d..8dd1948 100644
--- a/measure/src/main/resources/env-batch.json
+++ b/measure/src/main/resources/env-batch.json
@@ -7,10 +7,10 @@
},
"sinks": [
{
- "name": "console",
+ "name": "consoleSink",
"type": "CONSOLE",
"config": {
- "max.log.lines": 10
+ "numRows": 20
}
},
{
diff --git a/measure/src/main/resources/log4j.properties b/measure/src/main/resources/log4j.properties
index ff9399b..ee52ebc 100644
--- a/measure/src/main/resources/log4j.properties
+++ b/measure/src/main/resources/log4j.properties
@@ -16,8 +16,6 @@
# specific language governing permissions and limitations
# under the License.
#
-
-
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
diff --git a/measure/src/main/scala/org/apache/griffin/measure/Application.scala b/measure/src/main/scala/org/apache/griffin/measure/Application.scala
index 88bcc16..b57c9c5 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/Application.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/Application.scala
@@ -119,6 +119,8 @@
if (!success) {
sys.exit(-5)
+ } else {
+ sys.exit(0)
}
}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/Loggable.scala b/measure/src/main/scala/org/apache/griffin/measure/Loggable.scala
index b53f6a3..43db488 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/Loggable.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/Loggable.scala
@@ -17,8 +17,7 @@
package org.apache.griffin.measure
-import org.apache.log4j.Level
-import org.apache.log4j.Logger
+import org.apache.log4j.{Level, Logger}
trait Loggable {
diff --git a/measure/src/main/scala/org/apache/griffin/measure/configuration/dqdefinition/DQConfig.scala b/measure/src/main/scala/org/apache/griffin/measure/configuration/dqdefinition/DQConfig.scala
index f94a01a..1765f4d 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/configuration/dqdefinition/DQConfig.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/configuration/dqdefinition/DQConfig.scala
@@ -17,8 +17,11 @@
package org.apache.griffin.measure.configuration.dqdefinition
+import scala.util.Try
+
import com.fasterxml.jackson.annotation.{JsonInclude, JsonProperty}
import com.fasterxml.jackson.annotation.JsonInclude.Include
+import io.netty.util.internal.StringUtil
import org.apache.commons.lang.StringUtils
import org.apache.griffin.measure.configuration.enums._
@@ -47,6 +50,7 @@
@JsonProperty("process.type") private val procType: String,
@JsonProperty("data.sources") private val dataSources: List[DataSourceParam],
@JsonProperty("evaluate.rule") private val evaluateRule: EvaluateRuleParam,
+ @JsonProperty("measures") private val measures: Seq[MeasureParam],
@JsonProperty("sinks") private val sinks: List[String] = Nil)
extends Param {
def getName: String = name
@@ -63,6 +67,7 @@
._1
}
def getEvaluateRule: EvaluateRuleParam = evaluateRule
+ def getMeasures: Seq[MeasureParam] = measures
def getSinkNames: Seq[String] = sinks
def getValidSinkTypes: Seq[SinkType] = SinkType.validSinkTypes(sinks)
@@ -70,9 +75,82 @@
assert(StringUtils.isNotBlank(name), "dq config name should not be blank")
assert(StringUtils.isNotBlank(procType), "process.type should not be blank")
assert(dataSources != null, "data.sources should not be null")
- assert(evaluateRule != null, "evaluate.rule should not be null")
getDataSources.foreach(_.validate())
- evaluateRule.validate()
+
+ if (measures != null && measures.nonEmpty) {
+ measures.foreach(_.validate())
+
+ val repeatedMeasures = measures
+ .map(_.getName)
+ .groupBy(x => x)
+ .mapValues(_.size)
+ .filter(_._2 > 1)
+ .keys
+
+ assert(
+ repeatedMeasures.isEmpty,
+ s"Measure names must be unique. " +
+ s"Duplicate Measures names ['${repeatedMeasures.mkString("', '")}'] were found.")
+
+ val invalidMeasureSources = measures
+ .map(_.getDataSource)
+ .map(dataSource => (dataSource, getDataSources.exists(_.getName.matches(dataSource))))
+ .filterNot(_._2)
+ .map(_._1)
+
+ assert(
+ invalidMeasureSources.isEmpty,
+ s"Measure source(s) undefined." +
+ s" Unknown source(s) ['${invalidMeasureSources.mkString("', '")}'] were found.")
+ } else if (evaluateRule != null) {
+ evaluateRule.validate()
+ } else {
+ assert(
+ assertion = false,
+ "Either 'measure' or 'evaluate.rule' must be defined in the Application Config.")
+ }
+ }
+}
+
+trait ConfigParam extends Param {
+ @JsonProperty("name")
+ private val name: String = StringUtils.EMPTY
+
+ @JsonProperty("type")
+ private val configType: String = StringUtils.EMPTY
+
+ @JsonProperty("config")
+ private val config: Map[String, Any] = Map.empty
+
+ def getName: String = name
+ def getType: String = configType
+ def getConfig: Map[String, Any] = config
+}
+
+case class MeasureParam(
+ @JsonProperty("name") private val name: String,
+ @JsonProperty("type") private val measureType: String,
+ @JsonProperty("data.source") private val dataSource: String,
+ @JsonProperty("config") private val config: Map[String, Any] = Map.empty,
+ @JsonProperty("out") private val outputs: List[RuleOutputParam] = Nil)
+ extends Param {
+
+ def getName: String = name
+
+ def getType: MeasureTypes.MeasureType = MeasureTypes.withNameWithDefault(measureType)
+
+ def getConfig: Map[String, Any] = config
+
+ def getDataSource: String = dataSource
+
+ def getOutputs: Seq[RuleOutputParam] = if (outputs != null) outputs else Nil
+
+ def getOutputOpt(tp: OutputType): Option[RuleOutputParam] =
+ getOutputs.find(_.getOutputType == tp)
+
+ override def validate(): Unit = {
+ assert(!StringUtil.isNullOrEmpty(dataSource), "data.source should not be empty or null")
+ assert(!getType.equals(MeasureTypes.Unknown), s"Unknown measure type '$measureType' provided")
}
}
@@ -114,17 +192,17 @@
@JsonProperty("type") private val conType: String,
@JsonProperty("dataframe.name") private val dataFrameName: String,
@JsonProperty("config") private val config: Map[String, Any],
- @JsonProperty("pre.proc") private val preProc: List[RuleParam])
+ @JsonProperty("pre.proc") private val preProc: List[String])
extends Param {
def getType: String = conType
def getDataFrameName(defName: String): String =
if (dataFrameName != null) dataFrameName else defName
def getConfig: Map[String, Any] = if (config != null) config else Map[String, Any]()
- def getPreProcRules: Seq[RuleParam] = if (preProc != null) preProc else Nil
+ def getPreProcRules: Seq[String] = if (preProc != null) preProc else Nil
def validate(): Unit = {
assert(StringUtils.isNotBlank(conType), "data connector type should not be empty")
- getPreProcRules.foreach(_.validate())
+ getPreProcRules.forall(rule => !StringUtil.isNullOrEmpty(rule))
}
}
@@ -183,27 +261,9 @@
def getErrorConfs: Seq[RuleErrorConfParam] = if (errorConfs != null) errorConfs else Nil
- def replaceInDfName(newName: String): RuleParam = {
- if (StringUtils.equals(newName, inDfName)) this
- else RuleParam(dslType, dqType, newName, outDfName, rule, details, cache, outputs)
- }
- def replaceOutDfName(newName: String): RuleParam = {
- if (StringUtils.equals(newName, outDfName)) this
- else RuleParam(dslType, dqType, inDfName, newName, rule, details, cache, outputs)
- }
- def replaceInOutDfName(in: String, out: String): RuleParam = {
- if (StringUtils.equals(inDfName, in) && StringUtils.equals(outDfName, out)) this
- else RuleParam(dslType, dqType, in, out, rule, details, cache, outputs)
- }
- def replaceRule(newRule: String): RuleParam = {
- if (StringUtils.equals(newRule, rule)) this
- else RuleParam(dslType, dqType, inDfName, outDfName, newRule, details, cache, outputs)
- }
-
def validate(): Unit = {
- assert(
- !(getDslType.equals(GriffinDsl) && getDqType.equals(Unknown)),
- "unknown dq type for griffin dsl")
+ assert(!StringUtil.isNullOrEmpty(dqType), "DQ type cannot be null.")
+ assert(Try(getDqType).isSuccess, s"Undefined measure type '$dqType' encountered.")
getOutputs.foreach(_.validate())
getErrorConfs.foreach(_.validate())
diff --git a/measure/src/main/scala/org/apache/griffin/measure/configuration/enums/DslType.scala b/measure/src/main/scala/org/apache/griffin/measure/configuration/enums/DslType.scala
index 58981a7..7421cba 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/configuration/enums/DslType.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/configuration/enums/DslType.scala
@@ -28,7 +28,7 @@
object DslType extends GriffinEnum {
type DslType = Value
- val SparkSql, DfOps, DfOpr, DfOperations, GriffinDsl, DataFrameOpsType = Value
+ val SparkSql, GriffinDsl = Value
/**
*
@@ -41,10 +41,6 @@
.getOrElse(GriffinDsl)
override def withNameWithDefault(name: String): enums.DslType.Value = {
- val dslType = withNameWithDslType(name)
- dslType match {
- case DfOps | DfOpr | DfOperations => DataFrameOpsType
- case _ => dslType
- }
+ withNameWithDslType(name)
}
}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/configuration/enums/MeasureTypes.scala b/measure/src/main/scala/org/apache/griffin/measure/configuration/enums/MeasureTypes.scala
new file mode 100644
index 0000000..8b12b6d
--- /dev/null
+++ b/measure/src/main/scala/org/apache/griffin/measure/configuration/enums/MeasureTypes.scala
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.configuration.enums
+
+/**
+ * Types of Griffin measures.
+ * <li> - The completeness of data source based on user defined expressions</li>
+ */
+object MeasureTypes extends GriffinEnum {
+
+ type MeasureType = Value
+
+ val Completeness, Duplication, Profiling, Accuracy, SparkSQL, SchemaConformance = Value
+
+ override def withNameWithDefault(name: String): MeasureType = {
+ super.withNameWithDefault(name)
+ }
+}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/context/DQContext.scala b/measure/src/main/scala/org/apache/griffin/measure/context/DQContext.scala
index fa1468c..c72f06c 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/context/DQContext.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/context/DQContext.scala
@@ -66,15 +66,15 @@
implicit val encoder: Encoder[String] = Encoders.STRING
val functionNames: Seq[String] = sparkSession.catalog.listFunctions.map(_.name).collect.toSeq
- val dataSourceTimeRanges: Map[String, TimeRange] = loadDataSources()
+ var dataSourceTimeRanges: Map[String, TimeRange] = _
def loadDataSources(): Map[String, TimeRange] = {
- dataSources.map { ds =>
+ dataSourceTimeRanges = dataSources.map { ds =>
(ds.name, ds.loadData(this))
}.toMap
- }
- printTimeRanges()
+ dataSourceTimeRanges
+ }
private val sinkFactory = SinkFactory(sinkParams, name)
private val defaultSinks: Seq[Sink] = createSinks(contextId.timestamp)
@@ -105,16 +105,4 @@
dataFrameCache.clearAllTrashDataFrames()
}
- private def printTimeRanges(): Unit = {
- if (dataSourceTimeRanges.nonEmpty) {
- val timeRangesStr = dataSourceTimeRanges
- .map { pair =>
- val (name, timeRange) = pair
- s"$name -> (${timeRange.begin}, ${timeRange.end}]"
- }
- .mkString(", ")
- println(s"data source timeRanges: $timeRangesStr")
- }
- }
-
}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/context/MetricWrapper.scala b/measure/src/main/scala/org/apache/griffin/measure/context/MetricWrapper.scala
index c503d6a..ac3ded3 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/context/MetricWrapper.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/context/MetricWrapper.scala
@@ -19,15 +19,17 @@
import scala.collection.mutable.{Map => MutableMap}
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure._
+
/**
* wrap metrics into one, each calculation produces one metric map
*/
case class MetricWrapper(name: String, applicationId: String) extends Serializable {
- val _Name = "name"
- val _Timestamp = "tmst"
- val _Value = "value"
- val _Metadata = "metadata"
+ val JobName = "job_name"
+ val Timestamp = "tmst"
+ val ApplicationID = "applicationId"
val metrics: MutableMap[Long, Map[String, Any]] = MutableMap()
@@ -39,17 +41,32 @@
metrics += (timestamp -> newValue)
}
- def flush: Map[Long, Map[String, Any]] = {
+ def flush(measureParamOpt: Option[MeasureParam] = None): Map[Long, Map[String, Any]] = {
metrics.toMap.map { pair =>
- val (timestamp, value) = pair
- (
- timestamp,
- Map[String, Any](
- _Name -> name,
- _Timestamp -> timestamp,
- _Value -> value,
- _Metadata -> Map("applicationId" -> applicationId)))
+ {
+ val (timestamp, value) = pair
+ val metrics = if (value.contains(Metrics)) value(Metrics) else value
+ val jobDetails =
+ Map(
+ JobName -> name,
+ Timestamp -> timestamp,
+ ApplicationID -> applicationId,
+ Metrics -> metrics)
+
+ val measureDetails = measureParamOpt
+ .map(
+ mp =>
+ Map(
+ MeasureName -> mp.getName,
+ MeasureType -> mp.getType.toString,
+ DataSource -> mp.getDataSource))
+ .getOrElse(Map.empty)
+
+ (timestamp, jobDetails ++ measureDetails)
+ }
}
}
+ def clear(): Unit = metrics.clear()
+
}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/context/streaming/checkpoint/offset/OffsetCheckpointInZK.scala b/measure/src/main/scala/org/apache/griffin/measure/context/streaming/checkpoint/offset/OffsetCheckpointInZK.scala
index 6a8b005..4c2362d 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/context/streaming/checkpoint/offset/OffsetCheckpointInZK.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/context/streaming/checkpoint/offset/OffsetCheckpointInZK.scala
@@ -17,14 +17,15 @@
package org.apache.griffin.measure.context.streaming.checkpoint.offset
+import scala.collection.JavaConverters._
+import scala.util.matching.Regex
+
import org.apache.curator.framework.{CuratorFramework, CuratorFrameworkFactory}
import org.apache.curator.framework.imps.CuratorFrameworkState
import org.apache.curator.framework.recipes.locks.InterProcessMutex
import org.apache.curator.retry.ExponentialBackoffRetry
import org.apache.curator.utils.ZKPaths
import org.apache.zookeeper.CreateMode
-import scala.collection.JavaConverters._
-import scala.util.matching.Regex
import org.apache.griffin.measure.context.streaming.checkpoint.lock.CheckpointLockInZK
diff --git a/measure/src/main/scala/org/apache/griffin/measure/datasource/DataSourceFactory.scala b/measure/src/main/scala/org/apache/griffin/measure/datasource/DataSourceFactory.scala
index 7049063..f834950 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/datasource/DataSourceFactory.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/datasource/DataSourceFactory.scala
@@ -17,7 +17,7 @@
package org.apache.griffin.measure.datasource
-import scala.util.Success
+import scala.util._
import org.apache.spark.sql.SparkSession
import org.apache.spark.streaming.StreamingContext
@@ -66,11 +66,15 @@
timestampStorage,
streamingCacheClientOpt) match {
case Success(connector) => Some(connector)
- case _ => None
+ case Failure(exception) =>
+ error("Error initializing data source with name '$name'.", exception)
+ throw exception
}
Some(DataSource(name, dataSourceParam, dataConnectors, streamingCacheClientOpt))
- case None => None
+ case None =>
+ error(s"Connector for data source with name '$name' is invalid.")
+ throw new IllegalStateException()
}
}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/datasource/connector/DataConnector.scala b/measure/src/main/scala/org/apache/griffin/measure/datasource/connector/DataConnector.scala
index 481c9f9..0d3317c 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/datasource/connector/DataConnector.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/datasource/connector/DataConnector.scala
@@ -20,6 +20,7 @@
import java.util.concurrent.atomic.AtomicLong
import scala.collection.mutable
+import scala.util._
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.sql.functions._
@@ -29,9 +30,7 @@
import org.apache.griffin.measure.configuration.enums.ProcessType.BatchProcessType
import org.apache.griffin.measure.context.{ContextId, DQContext, TimeRange}
import org.apache.griffin.measure.datasource.TimestampStorage
-import org.apache.griffin.measure.job.builder.DQJobBuilder
import org.apache.griffin.measure.step.builder.ConstantColumns
-import org.apache.griffin.measure.step.builder.preproc.PreProcParamMaker
trait DataConnector extends Loggable with Serializable {
@@ -59,38 +58,33 @@
val context = createContext(ms)
val timestamp = context.contextId.timestamp
- val suffix = context.contextId.id
- val dcDfName = dcParam.getDataFrameName("this")
-
+ val thisTable = dcParam.getDataFrameName("this")
try {
saveTmst(timestamp) // save timestamp
- dfOpt.flatMap { df =>
- val (preProcRules, thisTable) =
- PreProcParamMaker.makePreProcRules(dcParam.getPreProcRules, suffix, dcDfName)
+ val processedDf = dfOpt match {
+ case Some(df) =>
+ context.compileTableRegister.registerTable(thisTable)
- // init data
- context.compileTableRegister.registerTable(thisTable)
- context.runTimeTableRegister.registerTable(thisTable, df)
+ dcParam.getPreProcRules.foldLeft(df)((dataFrame, rule) => {
+ Try {
+ context.runTimeTableRegister.registerTable(thisTable, dataFrame)
- // build job
- val preprocJob = DQJobBuilder.buildDQJob(context, preProcRules)
-
- // job execute
- preprocJob.execute(context)
-
- // out data
- val outDf = context.sparkSession.table(s"`$thisTable`")
-
- // add tmst column
- val withTmstDf = outDf.withColumn(ConstantColumns.tmst, lit(timestamp))
-
- // clean context
- context.clean()
-
- Some(withTmstDf)
+ sparkSession.sql(rule)
+ } match {
+ case Success(value) => value
+ case Failure(exception) =>
+ val errorMsg =
+ s"Exception occurred while preprocessing dataset with name '$thisTable'"
+ error(errorMsg, exception)
+ throw exception
+ }
+ })
+ case None => null
}
+ Option(processedDf)
+ .map(_.withColumn(ConstantColumns.tmst, lit(timestamp)))
} catch {
case e: Throwable =>
error(s"pre-process of data connector [$id] error: ${e.getMessage}", e)
diff --git a/measure/src/main/scala/org/apache/griffin/measure/datasource/connector/batch/ElasticSearchGriffinDataConnector.scala b/measure/src/main/scala/org/apache/griffin/measure/datasource/connector/batch/ElasticSearchGriffinDataConnector.scala
index 597695e..ab35fb6 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/datasource/connector/batch/ElasticSearchGriffinDataConnector.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/datasource/connector/batch/ElasticSearchGriffinDataConnector.scala
@@ -19,7 +19,7 @@
import java.io.{BufferedReader, ByteArrayInputStream, InputStreamReader}
import java.net.URI
-import java.util
+import java.util.{Iterator => JavaIterator, Map => JavaMap}
import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer
@@ -67,7 +67,7 @@
val port: String = config.getString(Port, "")
val fields: Seq[String] = config.getStringArr(Fields, Seq[String]())
val sql: String = config.getString(Sql, "")
- val sqlMode: Boolean = config.getBoolean(SqlMode, false)
+ val sqlMode: Boolean = config.getBoolean(SqlMode, defValue = false)
val size: Int = config.getInt(Size, 100)
override def data(ms: Long): (Option[DataFrame], TimeRange) = {
@@ -84,7 +84,7 @@
import sparkSession.implicits._
val rdd: RDD[String] = sparkSession.sparkContext.parallelize(answer._2.lines.toList)
val reader: DataFrameReader = sparkSession.read
- reader.option("header", true).option("inferSchema", true)
+ reader.option("header", value = true).option("inferSchema", value = true)
val df: DataFrame = reader.csv(rdd.toDS())
val dfOpt = Some(df)
val preDfOpt = preProcess(dfOpt, ms)
@@ -109,16 +109,16 @@
val data = ArrayBuffer[Map[String, Number]]()
if (answer._1) {
- val arrayAnswers: util.Iterator[JsonNode] =
+ val arrayAnswers: JavaIterator[JsonNode] =
parseString(answer._2).get("hits").get("hits").elements()
while (arrayAnswers.hasNext) {
val answer = arrayAnswers.next()
val values = answer.get("_source").get("value")
- val fields: util.Iterator[util.Map.Entry[String, JsonNode]] = values.fields()
+ val fields: JavaIterator[JavaMap.Entry[String, JsonNode]] = values.fields()
val fieldsMap = mutable.Map[String, Number]()
while (fields.hasNext) {
- val fld: util.Map.Entry[String, JsonNode] = fields.next()
+ val fld: JavaMap.Entry[String, JsonNode] = fields.next()
fieldsMap.put(fld.getKey, fld.getValue.numberValue())
}
data += fieldsMap.toMap
diff --git a/measure/src/main/scala/org/apache/griffin/measure/execution/Measure.scala b/measure/src/main/scala/org/apache/griffin/measure/execution/Measure.scala
new file mode 100644
index 0000000..0caac17
--- /dev/null
+++ b/measure/src/main/scala/org/apache/griffin/measure/execution/Measure.scala
@@ -0,0 +1,170 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution
+
+import scala.reflect.ClassTag
+
+import org.apache.commons.lang3.StringUtils
+import org.apache.spark.sql.{Column, DataFrame, SparkSession}
+import org.apache.spark.sql.functions._
+
+import org.apache.griffin.measure.Loggable
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.utils.ParamUtil._
+
+/**
+ * Measure
+ *
+ * An abstraction for a data quality measure implementation.
+ */
+trait Measure extends Loggable {
+ import Measure._
+
+ /**
+ * SparkSession for this Griffin Application.
+ */
+ val sparkSession: SparkSession
+
+ /**
+ * Object representation of user defined measure.
+ */
+ val measureParam: MeasureParam
+
+ /**
+ * If this measure supports record writing.
+ */
+ val supportsRecordWrite: Boolean
+
+ /**
+ * If this measure supports metric writing.
+ */
+ val supportsMetricWrite: Boolean
+
+ /**
+ * Metric values column.
+ */
+ final val valueColumn = s"${MeasureColPrefix}_${measureParam.getName}"
+
+ /**
+ * Helper method to get a typed value from measure configuration based on given key.
+ *
+ * @param key given key for which the value needs to be fetched.
+ * @param defValue default value in case of no value.
+ * @tparam T type of value to get.
+ * @return value for given key
+ */
+ def getFromConfig[T: ClassTag](key: String, defValue: T): T = {
+ measureParam.getConfig.getAnyRef[T](key, defValue)
+ }
+
+ /**
+ * Enriches metrics dataframe with some additional keys.
+ */
+ // todo add status col to persist blank metrics if the measure fails
+ def preProcessMetrics(input: DataFrame): DataFrame = {
+ if (supportsMetricWrite) {
+ input.withColumn(Metrics, col(valueColumn)).select(Metrics)
+ } else input
+ }
+
+ /**
+ * Enriches records dataframe with a status column marking rows as good or bad based on values.
+ */
+ def preProcessRecords(input: DataFrame): DataFrame = {
+ if (supportsRecordWrite) {
+ input
+ .withColumn(Status, when(col(valueColumn) === 0, Good).otherwise(Bad))
+ .drop(valueColumn)
+ } else input
+ }
+
+ /**
+ * Implementation of this measure.
+ *
+ * @return tuple of records dataframe and metric dataframe
+ */
+ def impl(): (DataFrame, DataFrame)
+
+ /**
+ * Implementation should define validtion checks in this method (if required).
+ * This method needs to be called explicitly call this method (preferably during measure creation).
+ *
+ * Defaults to no-op.
+ */
+ def validate(): Unit = {}
+
+ /**
+ * Executes this measure specific transformation on input data source.
+ *
+ * @param batchId batch id to append in case of streaming source.
+ * @return enriched tuple of records dataframe and metric dataframe
+ */
+ def execute(batchId: Option[Long] = None): (DataFrame, DataFrame) = {
+ val (recordsDf, metricDf) = impl()
+
+ val processedRecordDf = preProcessRecords(recordsDf)
+ val processedMetricDf = preProcessMetrics(metricDf)
+
+ val res = batchId match {
+ case Some(batchId) =>
+ implicit val bId: Long = batchId
+ (appendBatchIdIfAvailable(processedRecordDf), appendBatchIdIfAvailable(processedMetricDf))
+ case None => (processedRecordDf, processedMetricDf)
+ }
+
+ res
+ }
+
+ /**
+ * Appends batch id to metrics in case of streaming sources.
+ *
+ * @param input metric dataframe
+ * @param batchId batch id to append
+ * @return updated metric dataframe
+ */
+ private def appendBatchIdIfAvailable(input: DataFrame)(implicit batchId: Long): DataFrame = {
+ input.withColumn(BatchId, typedLit[Long](batchId))
+ }
+
+}
+
+/**
+ * Measure Constants.
+ */
+object Measure {
+
+ final val DataSource = "data_source"
+ final val Expression = "expr"
+ final val MeasureColPrefix = "__measure"
+ final val Status = "__status"
+ final val BatchId = "__batch_id"
+ final val MeasureName = "measure_name"
+ final val MeasureType = "measure_type"
+ final val MetricName = "metric_name"
+ final val MetricValue = "metric_value"
+ final val Metrics = "metrics"
+ final val Good = "good"
+ final val Bad = "bad"
+
+ final val Total: String = "total"
+ final val BadRecordDefinition = "bad.record.definition"
+ final val AllColumns: String = "*"
+
+ final val emptyCol: Column = lit(StringUtils.EMPTY)
+
+}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/execution/MeasureExecutor.scala b/measure/src/main/scala/org/apache/griffin/measure/execution/MeasureExecutor.scala
new file mode 100644
index 0000000..a84dff0
--- /dev/null
+++ b/measure/src/main/scala/org/apache/griffin/measure/execution/MeasureExecutor.scala
@@ -0,0 +1,266 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution
+
+import java.util.Date
+import java.util.concurrent.Executors
+
+import scala.concurrent.{ExecutionContext, ExecutionContextExecutorService, Future}
+import scala.util._
+
+import org.apache.commons.lang3.StringUtils
+import org.apache.spark.sql.{DataFrame, SparkSession}
+
+import org.apache.griffin.measure.Loggable
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.configuration.enums.{MeasureTypes, OutputType}
+import org.apache.griffin.measure.configuration.enums.FlattenType.DefaultFlattenType
+import org.apache.griffin.measure.context.{ContextId, DQContext}
+import org.apache.griffin.measure.execution.impl._
+import org.apache.griffin.measure.step.write.{MetricFlushStep, MetricWriteStep, RecordWriteStep}
+
+/**
+ * MeasureExecutor
+ *
+ * This acts as the starting point for the execution of different data quality measures
+ * defined by the users in `DQConfig`. Execution of the measures involves the following steps,
+ * - Create a fix pool of threads which will be used to execute measures in parallel
+ * - For each measure defined per data source,
+ * - Caching data source(s) if necessary
+ * - In parallel do the following,
+ * - Create Measure entity (transformation step)
+ * - Write Metrics if required and if supported (metric write step)
+ * - Write Records if required and if supported (record write step)
+ * - Clear internal objects (metric flush step)
+ * - Un caching data source(s) if cached already.
+ *
+ * In contrast to the execution of `GriffinDslDQStepBuilder`, `MeasureExecutor` executes each of
+ * the defined measures independently. This means that the outputs (metrics and records) are written
+ * independently for each measure.
+ *
+ * @param context Instance of `DQContext`
+ */
+case class MeasureExecutor(context: DQContext) extends Loggable {
+
+ /**
+ * SparkSession for this Griffin Application.
+ */
+ private val sparkSession: SparkSession = context.sparkSession
+
+ /**
+ * Enable or disable caching of data sources before execution. Defaults to `true`.
+ */
+ private val cacheDataSources: Boolean = sparkSession.sparkContext.getConf
+ .getBoolean("spark.griffin.measure.cacheDataSources", defaultValue = true)
+
+ /**
+ * Size of thread pool for parallel measure execution.
+ * Defaults to number of processors available to the spark driver JVM.
+ */
+ private val numThreads: Int = sparkSession.sparkContext.getConf
+ .getInt("spark.griffin.measure.parallelism", Runtime.getRuntime.availableProcessors())
+
+ /**
+ * Service to handle threaded execution of tasks (measures).
+ */
+ private implicit val ec: ExecutionContextExecutorService =
+ ExecutionContext.fromExecutorService(Executors.newFixedThreadPool(numThreads))
+
+ /**
+ * Starting point of measure execution.
+ *
+ * @param measureParams Object representation(s) of user defined measure(s).
+ */
+ def execute(measureParams: Seq[MeasureParam]): Unit = {
+ implicit val measureCountByDataSource: Map[String, Int] = measureParams
+ .map(_.getDataSource)
+ .groupBy(x => x)
+ .mapValues(_.length)
+
+ measureParams
+ .groupBy(measureParam => measureParam.getDataSource)
+ .foreach(measuresForSource => {
+ val dataSourceName = measuresForSource._1
+ val measureParams = measuresForSource._2
+
+ withCacheIfNecessary(dataSourceName, {
+ val dataSource = sparkSession.read.table(dataSourceName)
+
+ if (dataSource.isStreaming) {
+ // TODO this is a no op as streaming queries need to be registered.
+
+ dataSource.writeStream
+ .foreachBatch((_, batchId) => {
+ executeMeasures(measureParams, Some(batchId))
+ })
+ } else {
+ executeMeasures(measureParams)
+ }
+ })
+ })
+ }
+
+ /**
+ * Performs a function with cached data source if necessary.
+ * Caches data sources if it has more than 1 measure defined for it, and, `cacheDataSources` is `true`.
+ * After the function is complete, the data source is uncached.
+ *
+ * @param dataSourceName name of data source
+ * @param f function to perform
+ * @param measureCountByDataSource number of measures for each data source
+ * @return
+ */
+ private def withCacheIfNecessary(dataSourceName: String, f: => Unit)(
+ implicit measureCountByDataSource: Map[String, Int]): Unit = {
+ val numMeasures = measureCountByDataSource(dataSourceName)
+ var isCached = false
+ if (cacheDataSources && numMeasures > 1) {
+ info(
+ s"Caching data source with name '$dataSourceName' as $numMeasures measures are applied on it.")
+ sparkSession.catalog.cacheTable(dataSourceName)
+ isCached = true
+ }
+
+ f
+
+ if (isCached) {
+ sparkSession.catalog.uncacheTable(dataSourceName)
+ }
+ }
+
+ /**
+ * Executes measures for a data sources. Involves the following steps,
+ * - Transformation
+ * - Persist metrics if required
+ * - Persist records if required
+ *
+ * All measures are executed in parallel.
+ *
+ * @param measureParams Object representation(s) of user defined measure(s).
+ * @param batchId Option batch Id in case of streaming sources to identify micro batches.
+ */
+ private def executeMeasures(
+ measureParams: Seq[MeasureParam],
+ batchId: Option[Long] = None): Unit = {
+ val batchDetailsOpt = batchId.map(bId => s"for batch id $bId").getOrElse(StringUtils.EMPTY)
+
+ // define the tasks
+ val tasks: Map[String, Future[_]] = (for (i <- measureParams.indices)
+ yield {
+ val measureParam = measureParams(i)
+ val measureName = measureParam.getName
+
+ (measureName, Future {
+ val currentContext = context.cloneDQContext(ContextId(new Date().getTime))
+ info(s"Started execution of measure with name '$measureName'")
+
+ val measure = createMeasure(measureParam)
+ val (recordsDf, metricsDf) = measure.execute(batchId)
+
+ persistMetrics(currentContext, measure, metricsDf)
+ persistRecords(currentContext, measure, recordsDf)
+
+ MetricFlushStep(Some(measureParam)).execute(currentContext)
+ })
+ }).toMap
+
+ tasks.foreach(task =>
+ task._2.onComplete {
+ case Success(_) =>
+ info(s"Successfully executed measure with name '${task._1}' $batchDetailsOpt")
+ case Failure(e) =>
+ error(s"Error executing measure with name '${task._1}' $batchDetailsOpt", e)
+ })
+
+ Thread.sleep(1000)
+
+ while (!tasks.forall(_._2.isCompleted)) {
+ info(
+ s"Measures with name ${tasks.filterNot(_._2.isCompleted).keys.mkString("['", "', '", "']")} " +
+ s"are still executing.")
+ Thread.sleep(1000)
+ }
+
+ info(
+ s"Completed execution of all measures for data source with name '${measureParams.head.getDataSource}'.")
+ }
+
+ /**
+ * Instantiates measure implementations based on the user defined configurations.
+ *
+ * @param measureParam Object representation of user defined a measure.
+ * @return
+ */
+ private def createMeasure(measureParam: MeasureParam): Measure = {
+ measureParam.getType match {
+ case MeasureTypes.Completeness => CompletenessMeasure(sparkSession, measureParam)
+ case MeasureTypes.Duplication => DuplicationMeasure(sparkSession, measureParam)
+ case MeasureTypes.Profiling => ProfilingMeasure(sparkSession, measureParam)
+ case MeasureTypes.Accuracy => AccuracyMeasure(sparkSession, measureParam)
+ case MeasureTypes.SparkSQL => SparkSQLMeasure(sparkSession, measureParam)
+ case MeasureTypes.SchemaConformance => SchemaConformanceMeasure(sparkSession, measureParam)
+ case _ =>
+ val errorMsg = s"Measure type '${measureParam.getType}' is not supported."
+ val exception = new NotImplementedError(errorMsg)
+ error(errorMsg, exception)
+ throw exception
+ }
+ }
+
+ /**
+ * Persists records to one or more sink based on the user defined measure configuration.
+ *
+ * @param context DQ Context.
+ * @param measure a measure implementation
+ * @param recordsDf records dataframe to persist.
+ */
+ private def persistRecords(context: DQContext, measure: Measure, recordsDf: DataFrame): Unit = {
+ val measureParam: MeasureParam = measure.measureParam
+
+ measureParam.getOutputOpt(OutputType.RecordOutputType) match {
+ case Some(_) =>
+ if (measure.supportsRecordWrite) {
+ recordsDf.createOrReplaceTempView("recordsDf")
+ RecordWriteStep(measureParam.getName, "recordsDf").execute(context)
+ } else warn(s"Measure with name '${measureParam.getName}' doesn't support record write")
+ case None =>
+ }
+ }
+
+ /**
+ * Persists metrics to one or more sink based on the user defined measure configuration.
+ *
+ * @param context DQ Context.
+ * @param measure a measure implementation
+ * @param metricsDf metrics dataframe to persist
+ */
+ private def persistMetrics(context: DQContext, measure: Measure, metricsDf: DataFrame): Unit = {
+ val measureParam: MeasureParam = measure.measureParam
+
+ measureParam.getOutputOpt(OutputType.MetricOutputType) match {
+ case Some(_) =>
+ if (measure.supportsMetricWrite) {
+ val metricDfName = s"${measureParam.getName}_metricsDf"
+ metricsDf.createOrReplaceTempView(metricDfName)
+ MetricWriteStep(measureParam.getName, metricDfName, DefaultFlattenType).execute(context)
+ } else warn(s"Measure with name '${measureParam.getName}' doesn't support metric write")
+ case None =>
+ }
+ }
+
+}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/execution/impl/AccuracyMeasure.scala b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/AccuracyMeasure.scala
new file mode 100644
index 0000000..d33efc8
--- /dev/null
+++ b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/AccuracyMeasure.scala
@@ -0,0 +1,249 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import java.util.Locale
+
+import io.netty.util.internal.StringUtil
+import org.apache.spark.sql.{Column, DataFrame, SparkSession}
+import org.apache.spark.sql.functions._
+import org.apache.spark.sql.types.StringType
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure
+import org.apache.griffin.measure.step.builder.ConstantColumns
+
+/**
+ * Accuracy Measure.
+ *
+ * Data accuracy refers to the degree to which the values of a said attribute in a data source agree
+ * with an identified reference truth data (source of correct information).
+ * In-accurate data may come from different sources like,
+ * - Dynamically computed values,
+ * - the result of a manual workflow,
+ * - irate customers, etc.
+ *
+ * Accuracy measure quantifies the extent to which data sets contains are correct, reliable and certified
+ * values that are free of error. Higher accuracy values signify that the said data set represents
+ * the "real-life" values/ objects that it intends to model.
+ *
+ * Accuracy measure is comparative in nature - attributes of data source to be checked are compared with
+ * attributes of another reference source. Thus, unlike other measures/ dimensions, Accuracy
+ * relies on definition of 2 sources,
+ * - the reference (truth) source which contains the good/ correct/ accurate values.
+ * - the actual data source to be assessed and measured for data accuracy.
+ *
+ * @param sparkSession SparkSession for this Griffin Application.
+ * @param measureParam Object representation of this measure and its configuration.
+ */
+case class AccuracyMeasure(sparkSession: SparkSession, measureParam: MeasureParam)
+ extends Measure {
+
+ /**
+ * Representation of a single accuracy expression object.
+ *
+ * @param sourceCol name of source column
+ * @param refCol name of reference column
+ */
+ case class AccuracyExpr(sourceCol: String, refCol: String)
+
+ import AccuracyMeasure._
+ import Measure._
+
+ /**
+ * Accuracy measure supports record and metric write
+ */
+ override val supportsRecordWrite: Boolean = true
+
+ override val supportsMetricWrite: Boolean = true
+
+ /**
+ * The value for expr is a json array of comparison objects where each object has 2 fields -
+ * `source.col` and `ref.col` which must be actual columns in the source and reference data sets respectively.
+ * This key is mandatory and expr array must not be empty i.e. at least one comparison must be defined.
+ */
+ val exprOpt: Option[Seq[Map[String, String]]] =
+ Option(getFromConfig[Seq[Map[String, String]]](Expression, null))
+
+ /**
+ * This is a mandatory parameter which selects the data source which will be used as reference.
+ * This is a mandatory parameter and this data source must be defined in the sources section
+ * of the application configuration.
+ */
+ val refSource: String = getFromConfig[String](ReferenceSourceStr, null)
+
+ validate()
+
+ /**
+ * Performs a measurement of common values as a join between the mapped columns of the reference and source
+ * data sets.
+ *
+ * Accuracy produces the following 3 metrics as result,
+ * - Total records
+ * - Accurate records
+ * - In accurate records
+ *
+ * @return tuple of records dataframe and metric dataframe
+ */
+ override def impl(): (DataFrame, DataFrame) = {
+ val originalSource = sparkSession.read.table(measureParam.getDataSource)
+ val originalCols = originalSource.columns
+
+ val dataSource = addColumnPrefix(originalSource, SourcePrefixStr)
+
+ val refDataSource =
+ addColumnPrefix(sparkSession.read.table(refSource).drop(ConstantColumns.tmst), refPrefixStr)
+
+ val accuracyExprs = exprOpt.get
+ .map(toAccuracyExpr)
+ .distinct
+ .map(x => AccuracyExpr(s"$SourcePrefixStr${x.sourceCol}", s"$refPrefixStr${x.refCol}"))
+
+ val joinExpr =
+ accuracyExprs
+ .map(e => col(e.sourceCol) === col(e.refCol))
+ .reduce(_ and _)
+
+ val indicatorExpr =
+ accuracyExprs
+ .map(e => coalesce(col(e.sourceCol), emptyCol) notEqual coalesce(col(e.refCol), emptyCol))
+ .reduce(_ or _)
+
+ val nullExpr = accuracyExprs.map(e => col(e.sourceCol).isNull).reduce(_ or _)
+
+ val recordsDf = removeColumnPrefix(
+ dataSource
+ .join(refDataSource, joinExpr, "left")
+ .withColumn(valueColumn, when(indicatorExpr or nullExpr, 1).otherwise(0)),
+ SourcePrefixStr)
+ .select((originalCols :+ valueColumn).map(col): _*)
+
+ val selectCols =
+ Seq(Total, AccurateStr, InAccurateStr).map(e =>
+ map(lit(MetricName), lit(e), lit(MetricValue), col(e).cast(StringType)))
+ val metricColumn: Column = array(selectCols: _*).as(valueColumn)
+
+ val metricDf = recordsDf
+ .withColumn(Total, lit(1))
+ .agg(sum(Total).as(Total), sum(valueColumn).as(InAccurateStr))
+ .withColumn(AccurateStr, col(Total) - col(InAccurateStr))
+ .select(metricColumn)
+
+ (recordsDf, metricDf)
+ }
+
+ /**
+ * JSON representation of the `expr` is deserialized as Map internally which is now converted to an
+ * `AccuracyExpr` representation for a fixed structure across all expression object(s).
+ *
+ * @param map map representation of the `expr`
+ * @return instance of `AccuracyExpr`
+ */
+ private def toAccuracyExpr(map: Map[String, String]): AccuracyExpr = {
+ assert(map.contains(SourceColStr), s"'$SourceColStr' must be defined.")
+ assert(map.contains(ReferenceColStr), s"'$ReferenceColStr' must be defined.")
+
+ AccuracyExpr(map(SourceColStr), map(ReferenceColStr))
+ }
+
+ /**
+ * Validates if the expression is not null and non empty along with some dataset specific validations.
+ */
+ override def validate(): Unit = {
+ assert(exprOpt.isDefined, s"'$Expression' must be defined.")
+ assert(exprOpt.get.flatten.nonEmpty, s"'$Expression' must not be empty or of invalid type.")
+
+ assert(
+ !StringUtil.isNullOrEmpty(refSource),
+ s"'$ReferenceSourceStr' must not be null, empty or of invalid type.")
+
+ assert(
+ sparkSession.catalog.tableExists(refSource),
+ s"Reference source with name '$refSource' does not exist.")
+
+ val datasourceName = measureParam.getDataSource
+
+ val dataSourceCols =
+ sparkSession.read.table(datasourceName).columns.map(_.toLowerCase(Locale.ROOT)).toSet
+ val refDataSourceCols =
+ sparkSession.read.table(refSource).columns.map(_.toLowerCase(Locale.ROOT)).toSet
+
+ val accuracyExpr = exprOpt.get.map(toAccuracyExpr).distinct
+ val (forDataSource, forRefDataSource) =
+ accuracyExpr
+ .map(
+ e =>
+ (
+ (e.sourceCol, dataSourceCols.contains(e.sourceCol)),
+ (e.refCol, refDataSourceCols.contains(e.refCol))))
+ .unzip
+
+ val invalidColsDataSource = forDataSource.filterNot(_._2)
+ val invalidColsRefSource = forRefDataSource.filterNot(_._2)
+
+ assert(
+ invalidColsDataSource.isEmpty,
+ s"Column(s) [${invalidColsDataSource.map(_._1).mkString(", ")}] " +
+ s"do not exist in data set with name '$datasourceName'")
+
+ assert(
+ invalidColsRefSource.isEmpty,
+ s"Column(s) [${invalidColsRefSource.map(_._1).mkString(", ")}] " +
+ s"do not exist in reference data set with name '$refSource'")
+ }
+
+ /**
+ * Helper method to prepend a prefix to all column names to uniquely identify them.
+ * In case if they exist in both source and target data sets there is no collision.
+ *
+ * @param dataFrame data set
+ * @param prefix prefix to set
+ * @return
+ */
+ private def addColumnPrefix(dataFrame: DataFrame, prefix: String): DataFrame = {
+ val columns = dataFrame.columns
+ columns.foldLeft(dataFrame)((df, c) => df.withColumnRenamed(c, s"$prefix$c"))
+ }
+
+ /**
+ * Helper method to strip a prefix from all column names that previously helped in uniquely identify them.
+ *
+ * @param dataFrame data set
+ * @param prefix prefix to remove
+ * @return
+ */
+ private def removeColumnPrefix(dataFrame: DataFrame, prefix: String): DataFrame = {
+ val columns = dataFrame.columns
+ columns.foldLeft(dataFrame)((df, c) => df.withColumnRenamed(c, c.stripPrefix(prefix)))
+ }
+}
+
+/**
+ * Accuracy measure constants
+ */
+object AccuracyMeasure {
+ final val SourcePrefixStr: String = "__source_"
+ final val refPrefixStr: String = "__ref_"
+
+ final val ReferenceSourceStr: String = "ref.source"
+ final val SourceColStr: String = "source.col"
+ final val ReferenceColStr: String = "ref.col"
+
+ final val AccurateStr: String = "accurate"
+ final val InAccurateStr: String = "inaccurate"
+}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/execution/impl/CompletenessMeasure.scala b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/CompletenessMeasure.scala
new file mode 100644
index 0000000..fbbadc6
--- /dev/null
+++ b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/CompletenessMeasure.scala
@@ -0,0 +1,112 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import io.netty.util.internal.StringUtil
+import org.apache.spark.sql.{Column, DataFrame, SparkSession}
+import org.apache.spark.sql.functions._
+import org.apache.spark.sql.types.StringType
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure
+
+/**
+ * Completeness Measure.
+ *
+ * Completeness refers to the degree to which values are present in a data collection.
+ * When data is incomplete due to unavailability (missing records), this does not represent a lack of completeness.
+ * As far as an individual datum is concerned, only two situations are possible - either a value is assigned
+ * to the attribute in question or not. The latter case is usually represented by a `null` value.
+ *
+ * @param sparkSession SparkSession for this Griffin Application.
+ * @param measureParam Object representation of this measure and its configuration.
+ */
+case class CompletenessMeasure(sparkSession: SparkSession, measureParam: MeasureParam)
+ extends Measure {
+
+ import Measure._
+
+ /**
+ * Completeness Constants
+ */
+ final val Complete: String = "complete"
+ final val InComplete: String = "incomplete"
+
+ /**
+ * Completeness measure supports record and metric write
+ */
+ override val supportsRecordWrite: Boolean = true
+
+ override val supportsMetricWrite: Boolean = true
+
+ /**
+ * The value for expr is a SQL-like expression string which definition this completeness.
+ * For more complex definitions, expressions can be clubbed with AND and OR.
+ *
+ * For a tabular data set with columns name, email and age, some examples of `expr` are mentioned below,
+ * - name is NULL
+ * - name is NULL and age is NULL
+ * - email NOT RLIKE `'^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$'` (without ` and `)
+ * Note: This expression describes the bad or incomplete records. This means that
+ * for "expr": "zipcode is NULL" the records which contain null in zipcode column are considered as incomplete.
+ */
+ val exprOpt: Option[String] = Option(getFromConfig[String](Expression, null))
+
+ validate()
+
+ /**
+ * Completeness evaluates the user provided `expr` for each row of the input dataset.
+ * Each row that fails this expression is tagged as incomplete record(s), all other record(s) are complete.
+ *
+ * Completeness produces the following 3 metrics as result,
+ * - Total records
+ * - Complete records
+ * - Incomplete records
+ *
+ * @return tuple of records dataframe and metric dataframe
+ */
+ override def impl(): (DataFrame, DataFrame) = {
+ val exprStr = exprOpt.get
+
+ val selectCols =
+ Seq(Total, Complete, InComplete).map(e =>
+ map(lit(MetricName), lit(e), lit(MetricValue), col(e).cast(StringType)))
+ val metricColumn: Column = array(selectCols: _*).as(valueColumn)
+
+ val input = sparkSession.read.table(measureParam.getDataSource)
+ val badRecordsDf = input.withColumn(valueColumn, when(expr(exprStr), 1).otherwise(0))
+
+ val metricDf = badRecordsDf
+ .withColumn(Total, lit(1))
+ .agg(sum(Total).as(Total), sum(valueColumn).as(InComplete))
+ .withColumn(Complete, col(Total) - col(InComplete))
+ .select(metricColumn)
+
+ (badRecordsDf, metricDf)
+ }
+
+ /**
+ * Validates if expression is defined and is non empty.
+ */
+ override def validate(): Unit = {
+ assert(exprOpt.isDefined, s"'$Expression' must be defined.")
+ assert(exprOpt.nonEmpty, s"'$Expression' must not be empty.")
+
+ assert(!StringUtil.isNullOrEmpty(exprOpt.get), s"'$Expression' must not be null or empty.")
+ }
+}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/execution/impl/DuplicationMeasure.scala b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/DuplicationMeasure.scala
new file mode 100644
index 0000000..359a80e
--- /dev/null
+++ b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/DuplicationMeasure.scala
@@ -0,0 +1,180 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import io.netty.util.internal.StringUtil
+import org.apache.commons.lang3.StringUtils
+import org.apache.spark.sql.{Column, DataFrame, SparkSession}
+import org.apache.spark.sql.expressions.Window
+import org.apache.spark.sql.functions._
+import org.apache.spark.sql.types.StringType
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure
+
+/**
+ * Duplication Measure.
+ *
+ * Asserting the measure of duplication of the entities within a data set implies that
+ * no entity exists more than once within the data set and that there is a key that can be used
+ * to uniquely access each entity.
+ *
+ * For example, in a master product table, each product must appear once and be assigned a unique
+ * identifier that represents that product within a system or across multiple applications/ systems.
+ *
+ * Duplication measures the redundancies in a dataset in terms of the following metrics,
+ * - Duplicate: the number of values that are the same as other values in the list
+ * - Distinct: the number of non-null values that are different from each other (Non-unique + Unique)
+ * - Non Unique: the number of values that have at least one duplicate in the list
+ * - Unique: the number of values that have no duplicates
+ *
+ * @param sparkSession SparkSession for this Griffin Application.
+ * @param measureParam Object representation of this measure and its configuration.
+ */
+case class DuplicationMeasure(sparkSession: SparkSession, measureParam: MeasureParam)
+ extends Measure {
+
+ import DuplicationMeasure._
+ import Measure._
+
+ /**
+ * Metrics of redundancies
+ */
+ private final val duplicationMeasures = Seq(Total, Duplicate, Unique, NonUnique, Distinct)
+
+ /**
+ * The value for `expr` is a comma separated string of columns in the data asset on which the
+ * duplication measure is to be executed. `expr` is an optional key for Duplication measure, i.e.,
+ * if it is not defined, the entire row will be checked by duplication measure.
+ */
+ val exprs: String = getFromConfig[String](Expression, null)
+
+ /**
+ * Its value defines what exactly would be considered as a bad record after this measure
+ * computes redundancies on the data asset. Since the redundancies are calculated as `duplicate`,
+ * `unique`, `non_unique`, and `distinct`, the value of this key must also be one of these values.
+ * This key is mandatory and must be defined with appropriate value.
+ */
+ private val badnessExpr = getFromConfig[String](BadRecordDefinition, StringUtils.EMPTY)
+
+ validate()
+
+ /**
+ * Duplication measure supports record and metric write
+ */
+ override val supportsRecordWrite: Boolean = true
+
+ override val supportsMetricWrite: Boolean = true
+
+ /**
+ * The Duplication measure calculates the all metrics of redundancies for the input dataset.
+ * Users can choose which of these metrics defines a "bad record" for them by defining `BadRecordDefinition`
+ * with a supported value.
+ *
+ * Duplication produces the following 5 metrics as result,
+ * - Total records
+ * - Duplicate records
+ * - Unique records
+ * - NonUnique records
+ * - Distinct records
+ *
+ * @return tuple of records dataframe and metric dataframe
+ */
+ override def impl(): (DataFrame, DataFrame) = {
+ val input = sparkSession.read.table(measureParam.getDataSource)
+ val cols = keyCols(input).map(col)
+
+ val isNullCol = cols.map(x => x.isNull).reduce(_ and _)
+ val duplicateCol = when(col(__Temp) > 1, 1).otherwise(0)
+ val uniqueCol = when(not(isNullCol) and col(Unique) === 1, 1).otherwise(0)
+ val distinctCol =
+ when(not(isNullCol) and (col(Unique) === 1 or col(NonUnique) === 1), 1).otherwise(0)
+ val nonUniqueCol =
+ when(not(isNullCol) and col(Unique) =!= 1 and (col(__Temp) - col(NonUnique) === 0), 1)
+ .otherwise(0)
+
+ val window = Window.partitionBy(cols: _*).orderBy(cols: _*)
+
+ val aggDf = input
+ .select(col(AllColumns), row_number().over(window).as(__Temp))
+ .withColumn(IsNull, isNullCol)
+ .withColumn(Duplicate, duplicateCol)
+ .withColumn(Unique, count(lit(1)).over(window))
+ .withColumn(Unique, uniqueCol)
+ .withColumn(NonUnique, min(__Temp).over(window))
+ .withColumn(NonUnique, nonUniqueCol)
+ .withColumn(Distinct, distinctCol)
+ .withColumn(Total, lit(1))
+ .withColumn(valueColumn, col(badnessExpr))
+ .drop(__Temp, IsNull)
+
+ val metricAggCols = duplicationMeasures.map(m => sum(m).as(m))
+
+ val selectCols = duplicationMeasures.map(e =>
+ map(lit(MetricName), lit(e), lit(MetricValue), col(e).cast(StringType)))
+ val metricColumn: Column = array(selectCols: _*).as(valueColumn)
+
+ val metricDf = aggDf
+ .agg(metricAggCols.head, metricAggCols.tail: _*)
+ .select(metricColumn)
+
+ val badRecordsDf = aggDf.drop(duplicationMeasures: _*)
+
+ (badRecordsDf, metricDf)
+ }
+
+ /**
+ * Since `expr` is a comma separated string of columns, these provided columns must exist in the dataset.
+ * `BadRecordDefinition` must be defined with one of the supported values.
+ */
+ override def validate(): Unit = {
+ val input = sparkSession.read.table(measureParam.getDataSource)
+ val kc = keyCols(input)
+
+ assert(kc.nonEmpty, s"Columns defined in '$Expression' is empty.")
+ kc.foreach(c =>
+ assert(input.columns.contains(c), s"Provided column '$c' does not exist in the dataset."))
+
+ assert(
+ !StringUtil.isNullOrEmpty(badnessExpr),
+ s"Invalid value '$badnessExpr' provided for $BadRecordDefinition")
+
+ assert(badnessExpr match {
+ case Duplicate | Unique | NonUnique | Distinct => true
+ case _ => false
+ }, s"Invalid value '$badnessExpr' was provided for $BadRecordDefinition")
+ }
+
+ private def keyCols(input: DataFrame): Array[String] = {
+ if (StringUtil.isNullOrEmpty(exprs)) input.columns
+ else exprs.split(",").map(_.trim)
+ }.distinct
+
+}
+
+/**
+ * Duplication measure constants
+ */
+object DuplicationMeasure {
+ final val IsNull: String = "is_null"
+ final val Duplicate: String = "duplicate"
+ final val Unique: String = "unique"
+ final val NonUnique: String = "non_unique"
+ final val Distinct: String = "distinct"
+ final val __Temp: String = "__temp"
+}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/execution/impl/ProfilingMeasure.scala b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/ProfilingMeasure.scala
new file mode 100644
index 0000000..52d8bff
--- /dev/null
+++ b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/ProfilingMeasure.scala
@@ -0,0 +1,263 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import java.util.Locale
+
+import org.apache.spark.sql._
+import org.apache.spark.sql.functions._
+import org.apache.spark.sql.types._
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure
+import org.apache.griffin.measure.execution.Measure._
+import org.apache.griffin.measure.step.builder.ConstantColumns
+
+/**
+ * Profiling measure.
+ *
+ * Data processing and its analysis can't truly be complete without data profiling -
+ * reviewing source data for content and quality. Data profiling helps to find data quality rules and
+ * requirements that will support a more thorough data quality assessment in a later step.
+ *
+ * The process of Data profiling involves:
+ * - Collecting descriptive statistics like min, max, count and sum
+ * - Collecting data types, length and recurring patterns
+ * - Discovering metadata and assessing its accuracy, etc.
+ *
+ * A common problem in data management circles is the confusion around what is meant by
+ * Data profiling as opposed to Data Quality Assessment due to the interchangeable use of these 2 terms.
+ *
+ * Data Profiling helps us create a huge amount of insight into the quality levels of our
+ * data and helps to find data quality rules and requirements that will support a more thorough
+ * data quality assessment in a later step. For example, data profiling can help us to discover value
+ * frequencies, formats and patterns for each attribute in the data asset. Using data profiling alone
+ * we can find some perceived defects and outliers in the data asset, and we end up with a whole
+ * range of clues based on which correct Quality assessment measures can be defined like
+ * completeness/ distinctness etc.
+ *
+ * @param sparkSession SparkSession for this Griffin Application.
+ * @param measureParam Object representation of this measure and its configuration.
+ */
+case class ProfilingMeasure(sparkSession: SparkSession, measureParam: MeasureParam)
+ extends Measure {
+
+ import ProfilingMeasure._
+
+ /**
+ * Profiling measure supports only metric write
+ */
+ override val supportsRecordWrite: Boolean = false
+
+ override val supportsMetricWrite: Boolean = true
+
+ /**
+ * The value for `expr` is a comma separated string of columns in the data asset on which the
+ * profiling measure is to be executed. `expr` is an optional key for Profiling measure,
+ * i.e., if it is not defined, all columns in the data set will be profiled.
+ */
+ val exprOpt: Option[String] = Option(getFromConfig[String](Expression, null))
+
+ /**
+ * The value for this key is boolean. If this is `true`, the distinct counts will be approximated
+ * to allow up to 5% error. Approximate counts are usually faster by are less accurate. If this is set
+ * to `false`, then the counts will be 100% accurate.
+ */
+ val roundScale: Int = getFromConfig[java.lang.Integer](RoundScaleStr, 3)
+
+ /**
+ * The value of this key determines what percentage of data is to be profiled. The decimal value
+ * belongs to range [0.0, 1.0], where 0.0 means the whole dataset will be skipped, 1.0 means the whole
+ * dataset will be profiled. An intermediate value, say 0.5 will approximately take random 50% of
+ * the dataset rows (without replacement) and perform profiling on it.
+ *
+ * This option can be used when the dataset to be profiled is large, and an approximate profile is needed.
+ */
+ val dataSetSample: Double = getFromConfig[java.lang.Double](DataSetSampleStr, 1.0)
+
+ /**
+ * Several resultant metrics of profiling measure are floating-point numbers. This key controls to extent
+ * to which these floating-point numbers are rounded. For example, if `round.scale = 2` then all
+ * floating-point metric values will be rounded to 2 decimal places.
+ */
+ val approxDistinctCount: Boolean =
+ getFromConfig[java.lang.Boolean](ApproxDistinctCountStr, true)
+
+ /**
+ * Various metrics are calculated for columns of the data set. If expr is correctly defined,
+ * then metrics are generated for only the given subset of columns else, its generated for all columns.
+ *
+ * List of profiling metrics that are generated,
+ * - avg_col_len
+ * - max_col_len
+ * - min_col_len
+ * - avg
+ * - max
+ * - min
+ * - approx_distinct_count OR distinct_count
+ * - variance
+ * - kurtosis
+ * - std_dev
+ * - total
+ * - data_type
+ *
+ * @return tuple of records dataframe and metric dataframe
+ */
+ override def impl(): (DataFrame, DataFrame) = {
+ info(s"Selecting random ${dataSetSample * 100}% of the rows for profiling.")
+ val input = sparkSession.read.table(measureParam.getDataSource).sample(dataSetSample)
+ val profilingColNames = exprOpt
+ .getOrElse(input.columns.mkString(","))
+ .split(",")
+ .map(_.trim.toLowerCase(Locale.ROOT))
+ .toSet
+
+ val profilingCols =
+ input.schema.fields.filter(f =>
+ profilingColNames.contains(f.name) && !f.name.equalsIgnoreCase(ConstantColumns.tmst))
+
+ assert(
+ profilingCols.nonEmpty,
+ s"Invalid columns [${profilingCols.map(_.name).mkString(", ")}] were provided for profiling.")
+
+ val profilingExprs = profilingCols.foldLeft(Array.empty[Column])((exprList, field) => {
+ val colName = field.name
+ val profilingExprs = getProfilingExprs(field, roundScale, approxDistinctCount)
+
+ exprList.:+(map(profilingExprs: _*).as(s"$DetailsPrefix$colName"))
+ })
+
+ val aggregateDf = profilingCols
+ .foldLeft(input)((df, field) => {
+ val colName = field.name
+ val column = col(colName)
+
+ val lengthColName = lengthColFn(colName)
+ val nullColName = nullsInColFn(colName)
+
+ df.withColumn(lengthColName, length(column))
+ .withColumn(nullColName, when(isnull(column), 1L).otherwise(0L))
+ })
+ .agg(count(lit(1L)).as(Total), profilingExprs: _*)
+
+ val detailCols =
+ aggregateDf.columns
+ .filter(_.startsWith(DetailsPrefix))
+ .flatMap(c => Seq(map(lit(c.stripPrefix(DetailsPrefix)), col(c))))
+
+ val metricDf = aggregateDf.select(array(detailCols: _*).as(valueColumn))
+
+ (sparkSession.emptyDataFrame, metricDf)
+ }
+
+}
+
+/**
+ * Profiling measure constants
+ */
+object ProfilingMeasure {
+
+ /**
+ * Options Keys
+ */
+ final val DataSetSampleStr: String = "dataset.sample"
+ final val RoundScaleStr: String = "round.scale"
+ final val ApproxDistinctCountStr: String = "approx.distinct.count"
+
+ /**
+ * Structure Keys
+ */
+ final val ColumnDetails: String = "column_details"
+ private final val DataTypeStr: String = "data_type"
+
+ /**
+ * Prefix Keys
+ */
+ private final val ApproxPrefix: String = "approx_"
+ private final val DetailsPrefix: String = "details_"
+ private final val ColumnLengthPrefix: String = "col_len"
+ private final val IsNullPrefix: String = "is_null"
+
+ /**
+ * Column Detail Keys
+ */
+ private final val NullCount: String = "null_count"
+ private final val DistinctCount: String = "distinct_count"
+ private final val Min: String = "min"
+ private final val Max: String = "max"
+ private final val Avg: String = "avg"
+ private final val StdDeviation: String = "std_dev"
+ private final val Variance: String = "variance"
+ private final val Kurtosis: String = "kurtosis"
+ private final val MinColLength: String = s"${Min}_$ColumnLengthPrefix"
+ private final val MaxColLength: String = s"${Max}_$ColumnLengthPrefix"
+ private final val AvgColLength: String = s"${Avg}_$ColumnLengthPrefix"
+
+ private def lengthColFn(colName: String): String = s"${ColumnLengthPrefix}_$colName"
+
+ private def nullsInColFn(colName: String): String = s"${IsNullPrefix}_$colName"
+
+ private def forNumericFn(t: DataType, value: Column, alias: String): Column = {
+ (if (t.isInstanceOf[NumericType]) value else lit(null)).as(alias)
+ }
+
+ /**
+ * Calculates profiling metrics for a column.
+ *
+ * @param field column
+ * @param roundScale round off places.
+ * @param approxDistinctCount to approximate distinct or not.
+ * @return
+ */
+ private def getProfilingExprs(
+ field: StructField,
+ roundScale: Int,
+ approxDistinctCount: Boolean): Seq[Column] = {
+ val colName = field.name
+ val colType = field.dataType
+
+ val column = col(colName)
+ val lengthColExpr = col(lengthColFn(colName))
+ val nullColExpr = col(nullsInColFn(colName))
+ val (distinctCountName, distinctCountExpr) =
+ if (approxDistinctCount) {
+ (
+ lit(s"$ApproxPrefix$DistinctCount"),
+ approx_count_distinct(column).as(s"$ApproxPrefix$DistinctCount"))
+ } else {
+ (lit(DistinctCount), countDistinct(column).as(DistinctCount))
+ }
+
+ Seq(
+ Seq(lit(DataTypeStr), lit(colType.catalogString).as(DataTypeStr)),
+ Seq(lit(Total), sum(lit(1)).as(Total)),
+ Seq(lit(MinColLength), min(lengthColExpr).as(MinColLength)),
+ Seq(lit(MaxColLength), max(lengthColExpr).as(MaxColLength)),
+ Seq(lit(AvgColLength), forNumericFn(colType, avg(lengthColExpr), AvgColLength)),
+ Seq(lit(Min), forNumericFn(colType, min(column), Min)),
+ Seq(lit(Max), forNumericFn(colType, max(column), Max)),
+ Seq(lit(Avg), forNumericFn(colType, bround(avg(column), roundScale), Avg)),
+ Seq(
+ lit(StdDeviation),
+ forNumericFn(colType, bround(stddev(column), roundScale), StdDeviation)),
+ Seq(lit(Variance), forNumericFn(colType, bround(variance(column), roundScale), Variance)),
+ Seq(lit(Kurtosis), forNumericFn(colType, bround(kurtosis(column), roundScale), Kurtosis)),
+ Seq(lit(distinctCountName), distinctCountExpr),
+ Seq(lit(NullCount), sum(nullColExpr).as(NullCount))).flatten
+ }
+}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/execution/impl/SchemaConformanceMeasure.scala b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/SchemaConformanceMeasure.scala
new file mode 100644
index 0000000..2111d6a
--- /dev/null
+++ b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/SchemaConformanceMeasure.scala
@@ -0,0 +1,154 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import java.util.Locale
+
+import org.apache.spark.sql.{Column, DataFrame, SparkSession}
+import org.apache.spark.sql.functions._
+import org.apache.spark.sql.types.{DataType, StringType}
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure
+
+/**
+ * SchemaConformance Measure.
+ *
+ * Schema Conformance ensure that the attributes of a given dataset follow a set of
+ * standard data definitions in terms of data type.
+ * Most binary file formats (orc, avro, etc.) and tabular sources (Hive, RDBMS, etc.)
+ * already impose type constraints on the data they represent but text based formats like
+ * csv, json, xml, etc. do not retain schema information.
+ *
+ * For example, date of birth of customer should be a date, age should be an integer.
+ *
+ * @param sparkSession SparkSession for this Griffin Application.
+ * @param measureParam Object representation of this measure and its configuration.
+ */
+case class SchemaConformanceMeasure(sparkSession: SparkSession, measureParam: MeasureParam)
+ extends Measure {
+
+ import Measure._
+
+ /**
+ * Representation of a single SchemaConformance expression object.
+ *
+ * @param sourceCol name of source column
+ * @param dataType name of reference column
+ */
+ case class SchemaConformanceExpr(sourceCol: String, dataType: DataType)
+
+ /**
+ * SchemaConformance Constants
+ */
+ final val SourceColStr: String = "source.col"
+ final val DataTypeStr: String = "type"
+ final val Complete: String = "complete"
+ final val InComplete: String = "incomplete"
+
+ /**
+ * SchemaConformance measure supports record and metric write
+ */
+ override val supportsRecordWrite: Boolean = true
+
+ override val supportsMetricWrite: Boolean = true
+
+ /**
+ * The value for expr is a json array of mapping objects where each object has 2 fields -
+ * `source.col` and `type`. Each `source.col` must exist in the source data set and is checked
+ * to be of type `type`.
+ * This key is mandatory and expr array must not be empty i.e. at least one mapping must be defined.
+ */
+ val exprOpt: Option[Seq[Map[String, String]]] =
+ Option(getFromConfig[Seq[Map[String, String]]](Expression, null))
+
+ validate()
+
+ /**
+ * SchemaConformance measure evaluates the user provided `expr` for each row of the input dataset.
+ * Each row that fails this type expression is tagged as incomplete record(s), all other record(s) are complete.
+ *
+ * SchemaConformance produces the following 3 metrics as result,
+ * - Total records
+ * - Complete records
+ * - Incomplete records
+ *
+ * @return tuple of records dataframe and metric dataframe
+ */
+ override def impl(): (DataFrame, DataFrame) = {
+ val givenExprs = exprOpt.get.map(toSchemaConformanceExpr).distinct
+
+ val incompleteExpr = givenExprs
+ .map(e => when(col(e.sourceCol).cast(e.dataType).isNull, true).otherwise(false))
+ .reduce(_ or _)
+
+ val selectCols =
+ Seq(Total, Complete, InComplete).map(e =>
+ map(lit(MetricName), lit(e), lit(MetricValue), col(e).cast(StringType)))
+ val metricColumn: Column = array(selectCols: _*).as(valueColumn)
+
+ val input = sparkSession.read.table(measureParam.getDataSource)
+ val badRecordsDf = input.withColumn(valueColumn, when(incompleteExpr, 1).otherwise(0))
+
+ val metricDf = badRecordsDf
+ .withColumn(Total, lit(1))
+ .agg(sum(Total).as(Total), sum(valueColumn).as(InComplete))
+ .withColumn(Complete, col(Total) - col(InComplete))
+ .select(metricColumn)
+
+ (badRecordsDf, metricDf)
+ }
+
+ /**
+ * JSON representation of the `expr` is deserialized as Map internally which is now converted to an
+ * `SchemaConformanceExpr` representation for a fixed structure across all expression object(s).
+ *
+ * @param map map representation of the `expr`
+ * @return instance of `SchemaConformanceExpr`
+ */
+ private def toSchemaConformanceExpr(map: Map[String, String]): SchemaConformanceExpr = {
+ assert(map.contains(SourceColStr), s"'$SourceColStr' must be defined.")
+ assert(map.contains(DataTypeStr), s"'$DataTypeStr' must be defined.")
+
+ SchemaConformanceExpr(map(SourceColStr), DataType.fromDDL(map(DataTypeStr)))
+ }
+
+ /**
+ * Validates if the expression is not null and non empty along with some dataset specific validations.
+ */
+ override def validate(): Unit = {
+ assert(exprOpt.isDefined, s"'$Expression' must be defined.")
+ assert(exprOpt.get.flatten.nonEmpty, s"'$Expression' must not be empty or of invalid type.")
+
+ val datasourceName = measureParam.getDataSource
+
+ val dataSourceCols =
+ sparkSession.read.table(datasourceName).columns.map(_.toLowerCase(Locale.ROOT)).toSet
+ val schemaConformanceExprExpr = exprOpt.get.map(toSchemaConformanceExpr).distinct
+
+ val forDataSource =
+ schemaConformanceExprExpr.map(e => (e.sourceCol, dataSourceCols.contains(e.sourceCol)))
+ val invalidColsDataSource = forDataSource.filterNot(_._2)
+
+ assert(
+ invalidColsDataSource.isEmpty,
+ s"Column(s) [${invalidColsDataSource.map(_._1).mkString(", ")}] " +
+ s"do not exist in data set with name '$datasourceName'")
+ }
+
+}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/execution/impl/SparkSQLMeasure.scala b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/SparkSQLMeasure.scala
new file mode 100644
index 0000000..0cdc090
--- /dev/null
+++ b/measure/src/main/scala/org/apache/griffin/measure/execution/impl/SparkSQLMeasure.scala
@@ -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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import io.netty.util.internal.StringUtil
+import org.apache.commons.lang3.StringUtils
+import org.apache.spark.sql.{Column, DataFrame, SparkSession}
+import org.apache.spark.sql.functions.{expr => sparkExpr, _}
+import org.apache.spark.sql.types.{BooleanType, StringType}
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure
+
+/**
+ * SparkSQL Measure.
+ *
+ * In some cases, the pre-defined dimensions/ measures may not enough to model a complete
+ * data quality definition. For such cases, Apache Griffin allows the definition of complex
+ * custom user-defined checks as SparkSQL queries.
+ *
+ * SparkSQL measure is like a pro mode that allows advanced users to configure complex custom checks
+ * that are not covered by other measures. These SparkSQL queries may contain clauses like
+ * select, from, where, group-by, order-by , limit, join, etc.
+ *
+ * @param sparkSession SparkSession for this Griffin Application.
+ * @param measureParam Object representation of this measure and its configuration.
+ */
+case class SparkSQLMeasure(sparkSession: SparkSession, measureParam: MeasureParam)
+ extends Measure {
+
+ import Measure._
+
+ /**
+ * SparkSQL measure constants
+ */
+ final val Complete: String = "complete"
+ final val InComplete: String = "incomplete"
+
+ /**
+ * SparkSQL measure supports record and metric write
+ */
+ override val supportsRecordWrite: Boolean = true
+
+ override val supportsMetricWrite: Boolean = true
+
+ /**
+ * The value for expr is a valid SparkSQL query string. This is a mandatory parameter.
+ */
+ private val expr = getFromConfig[String](Expression, StringUtils.EMPTY)
+
+ /**
+ * As the key suggests, its value defines what exactly would be considered as a bad record
+ * after this query executes. In order to separate the good data from bad data, a
+ * bad.record.definition expression must be set. This expression can be a SparkSQL like
+ * expression and must yield a column with boolean data type.
+ *
+ * Note: This expression describes the bad records, i.e. if bad.record.definition = true
+ * for a record, it is marked as bad/ incomplete record.
+ */
+ private val badnessExpr = getFromConfig[String](BadRecordDefinition, StringUtils.EMPTY)
+
+ validate()
+
+ /**
+ * Runs the user provided SparkSQL query and marks the records as complete/ incomplete based on the
+ * `BadRecordDefinition`.
+ *
+ * SparkSQL produces the following 3 metrics as result,
+ * - Total records
+ * - Complete records
+ * - Incomplete records
+ *
+ * @return tuple of records dataframe and metric dataframe
+ */
+ override def impl(): (DataFrame, DataFrame) = {
+ val df = sparkSession.sql(expr).withColumn(valueColumn, sparkExpr(badnessExpr))
+
+ assert(
+ df.schema.exists(f => f.name.matches(valueColumn) && f.dataType.isInstanceOf[BooleanType]),
+ s"Invalid condition provided as $BadRecordDefinition. Does not yield a boolean result.")
+
+ val selectCols =
+ Seq(Total, Complete, InComplete).map(e =>
+ map(lit(MetricName), lit(e), lit(MetricValue), col(e).cast(StringType)))
+ val metricColumn: Column = array(selectCols: _*).as(valueColumn)
+
+ val badRecordsDf = df.withColumn(valueColumn, when(col(valueColumn), 1).otherwise(0))
+ val metricDf = badRecordsDf
+ .withColumn(Total, lit(1))
+ .agg(sum(Total).as(Total), sum(valueColumn).as(InComplete))
+ .withColumn(Complete, col(Total) - col(InComplete))
+ .select(metricColumn)
+
+ (badRecordsDf, metricDf)
+ }
+
+ /**
+ * Validates if the `Expression` and `BadRecordDefinition` are not null and non empty.
+ */
+ override def validate(): Unit = {
+ assert(
+ !StringUtil.isNullOrEmpty(expr),
+ "Invalid query provided as expr. Must not be null, empty or of invalid type.")
+
+ assert(
+ !StringUtil.isNullOrEmpty(badnessExpr),
+ "Invalid condition provided as bad.record.definition.")
+ }
+}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/launch/batch/BatchDQApp.scala b/measure/src/main/scala/org/apache/griffin/measure/launch/batch/BatchDQApp.scala
index 2407a77..48231ac 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/launch/batch/BatchDQApp.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/launch/batch/BatchDQApp.scala
@@ -28,6 +28,7 @@
import org.apache.griffin.measure.configuration.enums.ProcessType.BatchProcessType
import org.apache.griffin.measure.context._
import org.apache.griffin.measure.datasource.DataSourceFactory
+import org.apache.griffin.measure.execution.MeasureExecutor
import org.apache.griffin.measure.job.builder.DQJobBuilder
import org.apache.griffin.measure.launch.DQApp
import org.apache.griffin.measure.step.builder.udf.GriffinUDFAgent
@@ -61,29 +62,41 @@
}
def run: Try[Boolean] = {
- val result = CommonUtils.timeThis({
- val measureTime = getMeasureTime
- val contextId = ContextId(measureTime)
+ val result =
+ CommonUtils.timeThis(
+ {
+ val measureTime = getMeasureTime
+ val contextId = ContextId(measureTime)
- // get data sources
- val dataSources =
- DataSourceFactory.getDataSources(sparkSession, null, dqParam.getDataSources)
- dataSources.foreach(_.init())
+ // get data sources
+ val dataSources =
+ DataSourceFactory.getDataSources(sparkSession, null, dqParam.getDataSources)
+ dataSources.foreach(_.init())
- // create dq context
- dqContext =
- DQContext(contextId, metricName, dataSources, sinkParams, BatchProcessType)(sparkSession)
+ // create dq context
+ dqContext = DQContext(contextId, metricName, dataSources, sinkParams, BatchProcessType)(
+ sparkSession)
- // start id
- val applicationId = sparkSession.sparkContext.applicationId
- dqContext.getSinks.foreach(_.open(applicationId))
+ dqContext.loadDataSources()
- // build job
- val dqJob = DQJobBuilder.buildDQJob(dqContext, dqParam.getEvaluateRule)
+ // start id
+ val applicationId = sparkSession.sparkContext.applicationId
+ dqContext.getSinks.foreach(_.open(applicationId))
- // dq job execute
- dqJob.execute(dqContext)
- }, TimeUnit.MILLISECONDS)
+ if (dqParam.getMeasures != null && dqParam.getMeasures.nonEmpty) {
+ Try {
+ MeasureExecutor(dqContext).execute(dqParam.getMeasures)
+ true
+ }
+ } else {
+ // build job
+ val dqJob = DQJobBuilder.buildDQJob(dqContext, dqParam.getEvaluateRule)
+
+ // dq job execute
+ dqJob.execute(dqContext)
+ }
+ },
+ TimeUnit.MILLISECONDS)
// clean context
dqContext.clean()
diff --git a/measure/src/main/scala/org/apache/griffin/measure/launch/streaming/StreamingDQApp.scala b/measure/src/main/scala/org/apache/griffin/measure/launch/streaming/StreamingDQApp.scala
index 09554f3..c83acb3 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/launch/streaming/StreamingDQApp.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/launch/streaming/StreamingDQApp.scala
@@ -98,6 +98,7 @@
val globalContext: DQContext =
DQContext(contextId, metricName, dataSources, sinkParams, StreamingProcessType)(
sparkSession)
+ globalContext.loadDataSources()
// start id
val applicationId = sparkSession.sparkContext.applicationId
diff --git a/measure/src/main/scala/org/apache/griffin/measure/sink/ConsoleSink.scala b/measure/src/main/scala/org/apache/griffin/measure/sink/ConsoleSink.scala
index 8459e88..a84b967 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/sink/ConsoleSink.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/sink/ConsoleSink.scala
@@ -20,6 +20,7 @@
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.DataFrame
+import org.apache.griffin.measure.execution.Measure
import org.apache.griffin.measure.utils.JsonUtil
import org.apache.griffin.measure.utils.ParamUtil._
@@ -42,17 +43,18 @@
val NumberOfRows: String = "numRows"
val numRows: Int = config.getInt(NumberOfRows, 20)
+ val Unknown: String = "UNKNOWN"
+
def validate(): Boolean = true
override def open(applicationId: String): Unit = {
- griffinLogger.info(
+ info(
s"Opened ConsoleSink for job with name '$jobName', " +
s"timestamp '$timeStamp' and applicationId '$applicationId'")
}
override def close(): Unit = {
- griffinLogger.info(
- s"Closed ConsoleSink for job with name '$jobName' and timestamp '$timeStamp'")
+ info(s"Closed ConsoleSink for job with name '$jobName' and timestamp '$timeStamp'")
}
override def sinkRecords(records: RDD[String], name: String): Unit = {}
@@ -60,11 +62,14 @@
override def sinkRecords(records: Iterable[String], name: String): Unit = {}
override def sinkMetrics(metrics: Map[String, Any]): Unit = {
- griffinLogger.info(s"$jobName [$timeStamp] metrics:\n${JsonUtil.toJson(metrics)}")
+ val measureName = metrics.getOrElse(Measure.MeasureName, Unknown)
+ griffinLogger.info(
+ s"Metrics for measure with name '$measureName':\n${JsonUtil.toJson(metrics)}")
}
override def sinkBatchRecords(dataset: DataFrame, key: Option[String] = None): Unit = {
dataset.show(numRows, truncateRecords)
+ griffinLogger.info(s"Records written for measure with name '${key.getOrElse(Unknown)}'.")
}
}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/sink/ElasticSearchSink.scala b/measure/src/main/scala/org/apache/griffin/measure/sink/ElasticSearchSink.scala
index 3134b44..bbaef05 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/sink/ElasticSearchSink.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/sink/ElasticSearchSink.scala
@@ -19,7 +19,6 @@
import scala.concurrent.Future
-import org.apache.spark.rdd.RDD
import org.apache.spark.sql.DataFrame
import org.apache.griffin.measure.utils.{HttpUtil, JsonUtil, TimeUtil}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/builder/DQStepBuilder.scala b/measure/src/main/scala/org/apache/griffin/measure/step/builder/DQStepBuilder.scala
index 1df25c1..2e9e906 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/step/builder/DQStepBuilder.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/step/builder/DQStepBuilder.scala
@@ -78,7 +78,6 @@
funcNames: Seq[String]): Option[RuleParamStepBuilder] = {
dslType match {
case SparkSql => Some(SparkSqlDQStepBuilder())
- case DataFrameOpsType => Some(DataFrameOpsDQStepBuilder())
case GriffinDsl => Some(GriffinDslDQStepBuilder(dsNames, funcNames))
case _ => None
}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/builder/DataFrameOpsDQStepBuilder.scala b/measure/src/main/scala/org/apache/griffin/measure/step/builder/DataFrameOpsDQStepBuilder.scala
deleted file mode 100644
index 81df000..0000000
--- a/measure/src/main/scala/org/apache/griffin/measure/step/builder/DataFrameOpsDQStepBuilder.scala
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.griffin.measure.step.builder
-
-import org.apache.griffin.measure.configuration.dqdefinition.RuleParam
-import org.apache.griffin.measure.context.DQContext
-import org.apache.griffin.measure.step.DQStep
-import org.apache.griffin.measure.step.transform.DataFrameOpsTransformStep
-
-case class DataFrameOpsDQStepBuilder() extends RuleParamStepBuilder {
-
- def buildSteps(context: DQContext, ruleParam: RuleParam): Seq[DQStep] = {
- val name = getStepName(ruleParam.getOutDfName())
- val inputDfName = getStepName(ruleParam.getInDfName())
- val transformStep = DataFrameOpsTransformStep(
- name,
- inputDfName,
- ruleParam.getRule,
- ruleParam.getDetails,
- None,
- ruleParam.getCache)
- transformStep +: buildDirectWriteSteps(ruleParam)
- }
-
-}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/builder/GriffinDslDQStepBuilder.scala b/measure/src/main/scala/org/apache/griffin/measure/step/builder/GriffinDslDQStepBuilder.scala
index 94c899d..3524b39 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/step/builder/GriffinDslDQStepBuilder.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/step/builder/GriffinDslDQStepBuilder.scala
@@ -39,7 +39,7 @@
val result = parser.parseRule(rule, dqType)
if (result.successful) {
val expr = result.get
- val expr2DQSteps = Expr2DQSteps(context, expr, ruleParam.replaceOutDfName(name))
+ val expr2DQSteps = Expr2DQSteps(context, expr, ruleParam.copy(outDfName = name))
expr2DQSteps.getDQSteps
} else {
warn(s"parse rule [ $rule ] fails: \n$result")
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/builder/dsl/transform/Expr2DQSteps.scala b/measure/src/main/scala/org/apache/griffin/measure/step/builder/dsl/transform/Expr2DQSteps.scala
index 92dc817..fd8e818 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/step/builder/dsl/transform/Expr2DQSteps.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/step/builder/dsl/transform/Expr2DQSteps.scala
@@ -23,7 +23,6 @@
import org.apache.griffin.measure.context.DQContext
import org.apache.griffin.measure.step.DQStep
import org.apache.griffin.measure.step.builder.dsl.expr.Expr
-import org.apache.griffin.measure.step.write.{MetricWriteStep, RecordWriteStep, WriteStep}
trait Expr2DQSteps extends Loggable with Serializable {
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/builder/preproc/PreProcParamMaker.scala b/measure/src/main/scala/org/apache/griffin/measure/step/builder/preproc/PreProcParamMaker.scala
deleted file mode 100644
index 546e41a..0000000
--- a/measure/src/main/scala/org/apache/griffin/measure/step/builder/preproc/PreProcParamMaker.scala
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.griffin.measure.step.builder.preproc
-
-import org.apache.griffin.measure.configuration.dqdefinition.RuleParam
-import org.apache.griffin.measure.configuration.enums.DslType._
-
-/**
- * generate each entity pre-proc params by template defined in pre-proc param
- */
-object PreProcParamMaker {
-
- case class StringAnyMap(values: Map[String, Any])
-
- def makePreProcRules(
- rules: Seq[RuleParam],
- suffix: String,
- dfName: String): (Seq[RuleParam], String) = {
- val len = rules.size
- val (newRules, _) = rules.zipWithIndex.foldLeft((Nil: Seq[RuleParam], dfName)) {
- (ret, pair) =>
- val (rls, prevOutDfName) = ret
- val (rule, i) = pair
- val inName = rule.getInDfName(prevOutDfName)
- val outName = if (i == len - 1) dfName else rule.getOutDfName(genNameWithIndex(dfName, i))
- val ruleWithNames = rule.replaceInOutDfName(inName, outName)
- (rls :+ makeNewPreProcRule(ruleWithNames, suffix), outName)
- }
- (newRules, withSuffix(dfName, suffix))
- }
-
- private def makeNewPreProcRule(rule: RuleParam, suffix: String): RuleParam = {
- val newInDfName = withSuffix(rule.getInDfName(), suffix)
- val newOutDfName = withSuffix(rule.getOutDfName(), suffix)
- val rpRule = rule.replaceInOutDfName(newInDfName, newOutDfName)
- rule.getDslType match {
- case DataFrameOpsType => rpRule
- case _ =>
- val newRule = replaceDfNameSuffix(rule.getRule, rule.getInDfName(), suffix)
- rpRule.replaceRule(newRule)
- }
- }
-
- private def genNameWithIndex(name: String, i: Int): String = s"$name$i"
-
- private def replaceDfNameSuffix(str: String, dfName: String, suffix: String): String = {
- val regexStr = s"(?i)$dfName"
- val replaceDfName = withSuffix(dfName, suffix)
- str.replaceAll(regexStr, replaceDfName)
- }
-
- def withSuffix(str: String, suffix: String): String = s"${str}_$suffix"
-
-}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/read/ReadStep.scala b/measure/src/main/scala/org/apache/griffin/measure/step/read/ReadStep.scala
index d358189..ec6f0a0 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/step/read/ReadStep.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/step/read/ReadStep.scala
@@ -17,9 +17,10 @@
package org.apache.griffin.measure.step.read
-import org.apache.spark.sql._
import scala.util.Try
+import org.apache.spark.sql._
+
import org.apache.griffin.measure.context.DQContext
import org.apache.griffin.measure.step.DQStep
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/transform/TransformStep.scala b/measure/src/main/scala/org/apache/griffin/measure/step/transform/TransformStep.scala
index 90c2cb0..1788553 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/step/transform/TransformStep.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/step/transform/TransformStep.scala
@@ -18,8 +18,7 @@
package org.apache.griffin.measure.step.transform
import scala.collection.mutable
-import scala.concurrent.ExecutionContext
-import scala.concurrent.Future
+import scala.concurrent.{ExecutionContext, Future}
import scala.concurrent.duration.Duration
import scala.util.{Failure, Success, Try}
@@ -82,8 +81,8 @@
case Success(_) =>
info(threadName + " end transform step : \n" + debugString())
doExecute(context)
- case Failure(_) =>
- error("Parent transform step failed!")
+ case Failure(e) =>
+ error("Parent transform step failed: \n" + debugString(), e)
parentsResult
}
}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/write/DataSourceUpdateWriteStep.scala b/measure/src/main/scala/org/apache/griffin/measure/step/write/DataSourceUpdateWriteStep.scala
index 3faed1b..9736e76 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/step/write/DataSourceUpdateWriteStep.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/step/write/DataSourceUpdateWriteStep.scala
@@ -17,9 +17,10 @@
package org.apache.griffin.measure.step.write
+import scala.util.Try
+
import org.apache.commons.lang.StringUtils
import org.apache.spark.sql.DataFrame
-import scala.util.Try
import org.apache.griffin.measure.context.DQContext
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/write/MetricFlushStep.scala b/measure/src/main/scala/org/apache/griffin/measure/step/write/MetricFlushStep.scala
index 980bded..889ffb3 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/step/write/MetricFlushStep.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/step/write/MetricFlushStep.scala
@@ -19,19 +19,20 @@
import scala.util.Try
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
import org.apache.griffin.measure.context.DQContext
/**
* flush final metric map in context and write
*/
-case class MetricFlushStep() extends WriteStep {
+case class MetricFlushStep(measureParamOpt: Option[MeasureParam] = None) extends WriteStep {
val name: String = ""
val inputName: String = ""
val writeTimestampOpt: Option[Long] = None
def execute(context: DQContext): Try[Boolean] = Try {
- context.metricWrapper.flush.foldLeft(true) { (ret, pair) =>
+ val res = context.metricWrapper.flush(measureParamOpt).foldLeft(true) { (ret, pair) =>
val (t, metric) = pair
val pr =
try {
@@ -50,6 +51,9 @@
}
ret && pr
}
+
+ context.metricWrapper.clear()
+ res
}
}
diff --git a/measure/src/main/scala/org/apache/griffin/measure/step/write/MetricWriteStep.scala b/measure/src/main/scala/org/apache/griffin/measure/step/write/MetricWriteStep.scala
index 8f7f0c5..9405910 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/step/write/MetricWriteStep.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/step/write/MetricWriteStep.scala
@@ -19,16 +19,9 @@
import scala.util.Try
-import org.apache.griffin.measure.configuration.enums.{SimpleMode, TimestampMode}
-import org.apache.griffin.measure.configuration.enums.FlattenType.{
- ArrayFlattenType,
- EntriesFlattenType,
- FlattenType,
- MapFlattenType
-}
+import org.apache.griffin.measure.configuration.enums.{FlattenType, SimpleMode, TimestampMode}
import org.apache.griffin.measure.context.DQContext
import org.apache.griffin.measure.step.builder.ConstantColumns
-import org.apache.griffin.measure.utils.JsonUtil
import org.apache.griffin.measure.utils.ParamUtil._
/**
@@ -37,7 +30,7 @@
case class MetricWriteStep(
name: String,
inputName: String,
- flattenType: FlattenType,
+ flattenType: FlattenType.FlattenType,
writeTimestampOpt: Option[Long] = None)
extends WriteStep {
@@ -86,7 +79,7 @@
val pdf = context.sparkSession.table(s"`$inputName`")
val rows = pdf.collect()
val columns = pdf.columns
- if (rows.size > 0) {
+ if (rows.length > 0) {
rows.map(_.getValuesMap(columns))
} else Nil
} catch {
@@ -99,11 +92,11 @@
private def flattenMetric(
metrics: Seq[Map[String, Any]],
name: String,
- flattenType: FlattenType): Map[String, Any] = {
+ flattenType: FlattenType.FlattenType): Map[String, Any] = {
flattenType match {
- case EntriesFlattenType => metrics.headOption.getOrElse(emptyMap)
- case ArrayFlattenType => Map[String, Any](name -> metrics)
- case MapFlattenType =>
+ case FlattenType.EntriesFlattenType => metrics.headOption.getOrElse(emptyMap)
+ case FlattenType.ArrayFlattenType => Map[String, Any](name -> metrics)
+ case FlattenType.MapFlattenType =>
val v = metrics.headOption.getOrElse(emptyMap)
Map[String, Any](name -> v)
case _ =>
diff --git a/measure/src/main/scala/org/apache/griffin/measure/utils/JsonUtil.scala b/measure/src/main/scala/org/apache/griffin/measure/utils/JsonUtil.scala
index db6bb63..43cfcee 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/utils/JsonUtil.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/utils/JsonUtil.scala
@@ -21,20 +21,22 @@
import scala.reflect._
-import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper}
+import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper, SerializationFeature}
import com.fasterxml.jackson.module.scala.DefaultScalaModule
+import org.apache.commons.lang3.StringEscapeUtils
object JsonUtil {
val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
+ mapper.configure(SerializationFeature.INDENT_OUTPUT, true)
def toJson(value: Map[Symbol, Any]): String = {
toJson(value map { case (k, v) => k.name -> v })
}
def toJson(value: Any): String = {
- mapper.writeValueAsString(value)
+ StringEscapeUtils.unescapeJava(mapper.writeValueAsString(value))
}
def fromJson[T: ClassTag](json: String): T = {
diff --git a/measure/src/main/scala/org/apache/griffin/measure/utils/ParamUtil.scala b/measure/src/main/scala/org/apache/griffin/measure/utils/ParamUtil.scala
index ccf8e00..c348c5a 100644
--- a/measure/src/main/scala/org/apache/griffin/measure/utils/ParamUtil.scala
+++ b/measure/src/main/scala/org/apache/griffin/measure/utils/ParamUtil.scala
@@ -18,7 +18,6 @@
package org.apache.griffin.measure.utils
import scala.reflect.ClassTag
-import scala.util.Try
object ParamUtil {
diff --git a/measure/src/test/resources/_accuracy-batch-griffindsl.json b/measure/src/test/resources/_accuracy-batch-griffindsl.json
index 7453b9e..2831044 100644
--- a/measure/src/test/resources/_accuracy-batch-griffindsl.json
+++ b/measure/src/test/resources/_accuracy-batch-griffindsl.json
@@ -4,48 +4,78 @@
"data.sources": [
{
"name": "source",
- "baseline": true,
"connector": {
- "type": "avro",
+ "type": "file",
"config": {
- "file.name": "src/test/resources/users_info_src.avro"
+ "format": "avro",
+ "paths": [
+ "src/test/resources/users_info_src.avro"
+ ]
}
}
},
{
"name": "target",
"connector": {
- "type": "avro",
+ "type": "file",
"config": {
- "file.name": "src/test/resources/users_info_target.avro"
+ "format": "avro",
+ "paths": [
+ "src/test/resources/users_info_target.avro"
+ ]
}
}
}
],
- "evaluate.rule": {
- "rules": [
- {
- "dsl.type": "griffin-dsl",
- "dq.type": "accuracy",
- "out.dataframe.name": "accu",
- "rule": "source.user_id = target.user_id AND upper(source.first_name) = upper(target.first_name) AND source.last_name = target.last_name AND source.address = target.address AND source.email = target.email AND source.phone = target.phone AND source.post_code = target.post_code",
- "details": {
- "source": "source",
- "target": "target",
- "miss": "miss_count",
- "total": "total_count",
- "matched": "matched_count"
- },
- "out": [
+ "measures": [
+ {
+ "name": "accuracy_measure",
+ "type": "accuracy",
+ "data.source": "target",
+ "config": {
+ "ref.source": "source",
+ "expr": [
{
- "type": "record",
- "name": "missRecords"
+ "source.col": "user_id",
+ "ref.col": "user_id"
+ },
+ {
+ "source.col": "first_name",
+ "ref.col": "first_name"
+ },
+ {
+ "source.col": "last_name",
+ "ref.col": "last_name"
+ },
+ {
+ "source.col": "address",
+ "ref.col": "address"
+ },
+ {
+ "source.col": "email",
+ "ref.col": "email"
+ },
+ {
+ "source.col": "phone",
+ "ref.col": "phone"
+ },
+ {
+ "source.col": "post_code",
+ "ref.col": "post_code"
}
]
- }
- ]
- },
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "accuracy_metric",
+ "flatten": "map"
+ }
+ ]
+ }
+ ],
"sinks": [
- "consoleSink"
+ "consoleSink",
+ "customSink"
]
}
\ No newline at end of file
diff --git a/measure/src/test/resources/_completeness-batch-griffindsl.json b/measure/src/test/resources/_completeness-batch-griffindsl.json
index a8fdcf7..2a7f6a4 100644
--- a/measure/src/test/resources/_completeness-batch-griffindsl.json
+++ b/measure/src/test/resources/_completeness-batch-griffindsl.json
@@ -1,36 +1,39 @@
{
"name": "comp_batch",
"process.type": "batch",
- "timestamp": 123456,
"data.sources": [
{
"name": "source",
"connector": {
- "type": "avro",
- "version": "1.7",
+ "type": "file",
"config": {
- "file.name": "src/test/resources/users_info_src.avro"
+ "format": "avro",
+ "paths": [
+ "src/test/resources/users_info_src.avro"
+ ]
}
}
}
],
- "evaluate.rule": {
- "rules": [
- {
- "dsl.type": "griffin-dsl",
- "dq.type": "completeness",
- "out.dataframe.name": "comp",
- "rule": "email, post_code, first_name",
- "out": [
- {
- "type": "metric",
- "name": "comp"
- }
- ]
- }
- ]
- },
+ "measures": [
+ {
+ "name": "completeness_measure",
+ "type": "completeness",
+ "data.source": "source",
+ "config": {
+ "expr": "email is null or post_code is null or first_name is null"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "comp_metric",
+ "flatten": "map"
+ }
+ ]
+ }
+ ],
"sinks": [
- "CONSOLESINK"
+ "CONSOLESINK",
+ "customSink"
]
}
\ No newline at end of file
diff --git a/measure/src/test/resources/_distinctness-batch-griffindsl.json b/measure/src/test/resources/_distinctness-batch-griffindsl.json
index 39db17c..2195795 100644
--- a/measure/src/test/resources/_distinctness-batch-griffindsl.json
+++ b/measure/src/test/resources/_distinctness-batch-griffindsl.json
@@ -4,53 +4,37 @@
"data.sources": [
{
"name": "source",
- "baseline": true,
"connector": {
- "type": "avro",
- "version": "1.7",
+ "type": "file",
"config": {
- "file.name": "src/test/resources/users_info_src.avro"
- }
- }
- },
- {
- "name": "target",
- "baseline": true,
- "connector": {
- "type": "avro",
- "version": "1.7",
- "config": {
- "file.name": "src/test/resources/users_info_src.avro"
+ "format": "avro",
+ "paths": [
+ "src/test/resources/users_info_src.avro"
+ ]
}
}
}
],
- "evaluate.rule": {
- "rules": [
- {
- "dsl.type": "griffin-dsl",
- "dq.type": "distinct",
- "out.dataframe.name": "dist",
- "rule": "user_id",
- "details": {
- "source": "source",
- "target": "target",
- "total": "total",
- "distinct": "distinct",
- "dup": "dup",
- "num": "num",
- "duplication.array": "dup"
- },
- "out": [
- {
- "type": "metric",
- "name": "distinct"
- }
- ]
- }
- ]
- },
+ "measures": [
+ {
+ "name": "duplication_measure",
+ "type": "duplication",
+ "data.source": "source",
+ "config": {
+ "expr": "user_id",
+ "bad.record.definition": "distinct"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "duplication_metric",
+ "flatten": "map"
+ }
+ ]
+ }
+ ],
"sinks": [
- "CONSOLESink"
+ "CONSOLESink",
+ "customSink"
]
}
\ No newline at end of file
diff --git a/measure/src/test/resources/_no_measure_or_rules_malformed.json b/measure/src/test/resources/_no_measure_or_rules_malformed.json
new file mode 100644
index 0000000..0f96a93
--- /dev/null
+++ b/measure/src/test/resources/_no_measure_or_rules_malformed.json
@@ -0,0 +1,24 @@
+{
+ "name": "prof_batch",
+ "process.type": "batch",
+ "timestamp": 123456,
+ "data.sources": [
+ {
+ "name": "source",
+ "connector": {
+ "type": "avro",
+ "version": "1.7",
+ "dataframe.name": "this_table",
+ "config": {
+ "file.name": "src/test/resources/users_info_src.avro"
+ },
+ "pre.proc": [
+ "select * from this_table where user_id < 10014"
+ ]
+ }
+ }
+ ],
+ "sinks": [
+ "CONSOLESink"
+ ]
+}
\ No newline at end of file
diff --git a/measure/src/test/resources/_profiling-batch-griffindsl.json b/measure/src/test/resources/_profiling-batch-griffindsl.json
index 1503761..c064594 100644
--- a/measure/src/test/resources/_profiling-batch-griffindsl.json
+++ b/measure/src/test/resources/_profiling-batch-griffindsl.json
@@ -1,57 +1,44 @@
{
"name": "prof_batch",
"process.type": "batch",
- "timestamp": 123456,
"data.sources": [
{
"name": "source",
"connector": {
- "type": "avro",
- "version": "1.7",
- "dataframe.name": "this_table",
+ "type": "file",
"config": {
- "file.name": "src/test/resources/users_info_src.avro"
+ "format": "avro",
+ "paths": [
+ "src/test/resources/users_info_src.avro"
+ ]
},
"pre.proc": [
- {
- "dsl.type": "spark-sql",
- "rule": "select * from this_table where user_id < 10014"
- }
+ "select * from this where user_id < 10014"
]
}
}
],
- "evaluate.rule": {
- "rules": [
- {
- "dsl.type": "griffin-dsl",
- "dq.type": "profiling",
- "out.dataframe.name": "prof",
- "rule": "user_id, count(*) as cnt from source group by user_id",
- "out": [
- {
- "type": "metric",
- "name": "prof",
- "flatten": "array"
- }
- ]
+ "measures": [
+ {
+ "name": "profiling_measure",
+ "type": "profiling",
+ "data.source": "source",
+ "config": {
+ "expr": "first_name, user_id",
+ "approx.distinct.count": true,
+ "round.scale": 2
},
- {
- "dsl.type": "griffin-dsl",
- "dq.type": "profiling",
- "out.dataframe.name": "grp",
- "rule": "source.post_code, count(*) as cnt from source group by source.post_code order by cnt desc",
- "out": [
- {
- "type": "metric",
- "name": "post_group",
- "flatten": "array"
- }
- ]
- }
- ]
- },
+ "out": [
+ {
+ "type": "metric",
+ "name": "prof_metric",
+ "flatten": "map"
+ }
+ ]
+ }
+ ],
"sinks": [
- "CONSOLESink"
+ "CONSOLESink",
+ "customSink"
]
}
\ No newline at end of file
diff --git a/measure/src/test/resources/_profiling-batch-griffindsl_malformed.json b/measure/src/test/resources/_profiling-batch-griffindsl_malformed.json
index 10c6f35..ce9f7df 100644
--- a/measure/src/test/resources/_profiling-batch-griffindsl_malformed.json
+++ b/measure/src/test/resources/_profiling-batch-griffindsl_malformed.json
@@ -13,10 +13,7 @@
"file.name": "src/test/resources/users_info_src.avro"
},
"pre.proc": [
- {
- "dsl.type": "spark-sql",
- "rule": "select * from this_table where user_id < 10014"
- }
+ "select * from this_table where user_id < 10014"
]
}
}
@@ -28,7 +25,7 @@
"dq.type": "profiling",
"out.dataframe.name": "prof",
"rule": "abc",
- "out":[
+ "out": [
{
"type": "metric",
"name": "prof",
@@ -38,6 +35,7 @@
}
]
},
-
- "sinks": ["CONSOLESink"]
+ "sinks": [
+ "CONSOLESink"
+ ]
}
\ No newline at end of file
diff --git a/measure/src/test/resources/_sparksql-batch-griffindsl.json b/measure/src/test/resources/_sparksql-batch-griffindsl.json
new file mode 100644
index 0000000..1cf98a4
--- /dev/null
+++ b/measure/src/test/resources/_sparksql-batch-griffindsl.json
@@ -0,0 +1,59 @@
+{
+ "name": "prof_batch",
+ "process.type": "batch",
+ "data.sources": [
+ {
+ "name": "source",
+ "connector": {
+ "type": "file",
+ "config": {
+ "format": "avro",
+ "paths": [
+ "src/test/resources/users_info_src.avro"
+ ]
+ },
+ "pre.proc": [
+ "select * from this where user_id < 10014"
+ ]
+ }
+ }
+ ],
+ "measures": [
+ {
+ "name": "query_measure1",
+ "type": "sparkSQL",
+ "data.source": "source",
+ "config": {
+ "expr": "select user_id, count(*) as cnt from source group by user_id",
+ "bad.record.definition": "cnt > 1"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "sql_metric",
+ "flatten": "map"
+ }
+ ]
+ },
+ {
+ "name": "query_measure2",
+ "type": "sparkSQL",
+ "data.source": "source",
+ "config": {
+ "expr": "select post_code, count(*) as cnt from source group by post_code order by cnt desc",
+ "bad.record.definition": "cnt > 1"
+ },
+ "out": [
+ {
+ "type": "metric",
+ "name": "sql_metric",
+ "flatten": "map"
+ }
+ ]
+ }
+ ],
+ "sinks": [
+ "CONSOLESink",
+ "customSink"
+ ]
+}
\ No newline at end of file
diff --git a/measure/src/test/resources/crime_report_test.csv b/measure/src/test/resources/crime_report_test.csv
new file mode 100644
index 0000000..cc3778d
--- /dev/null
+++ b/measure/src/test/resources/crime_report_test.csv
@@ -0,0 +1,10 @@
+2015-05-26T00:26:00Z,PENAL CODE/MISC (PENALMI),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T00:26:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T00:26:00Z,PENAL CODE/MISC (PENALMI),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T00:26:00Z,PENAL CODE/MISC (PENALMI),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306
+2015-05-26T02:30:00Z,N&D/POSSESSION (11350),WILKIE WAY & JAMES RD,PALO ALTO,94306
+2015-05-26T02:30:00Z,N&D/PARAPHERNALIA (11364),WILKIE WAY & JAMES RD,PALO ALTO,94306
+2015-05-26T02:30:00Z,TRAFFIC/SUSPENDED LICENSE (14601),WILKIE WAY & JAMES RD,PALO ALTO,94306
+2015-05-26T05:00:00Z,TRAFFIC/MISC (TRAFMISC),EL CAMINO REAL & UNIVERSITY AV,PALO ALTO,94301
+2015-05-26T06:01:00Z,PENAL CODE/MISC (PENALMI),400 Block ALMA ST,PALO ALTO,94301
+2015-05-26T06:34:00Z,B&P/MISC (B&PMISC),700 Block URBAN LN,PALO ALTO,94301
diff --git a/measure/src/test/resources/duplicates_users_info_src.csv b/measure/src/test/resources/duplicates_users_info_src.csv
new file mode 100644
index 0000000..254a38e
--- /dev/null
+++ b/measure/src/test/resources/duplicates_users_info_src.csv
@@ -0,0 +1,5 @@
+1,John Smith ,Male
+2,John Smith ,Male
+3,Rebecca Davis,Female
+4,Paul Adams ,Male
+
diff --git a/measure/src/test/resources/env-batch.json b/measure/src/test/resources/env-batch.json
index de347c7..f2c5ee7 100644
--- a/measure/src/test/resources/env-batch.json
+++ b/measure/src/test/resources/env-batch.json
@@ -12,6 +12,13 @@
"config": {
"max.log.lines": 10
}
+ },
+ {
+ "name": "customSink",
+ "type": "custom",
+ "config": {
+ "class": "org.apache.griffin.measure.sink.CustomSink"
+ }
}
],
"griffin.checkpoint": []
diff --git a/measure/src/test/resources/env-streaming-mongo.json b/measure/src/test/resources/env-streaming-mongo.json
index 16d2f13..c3ac9bb 100644
--- a/measure/src/test/resources/env-streaming-mongo.json
+++ b/measure/src/test/resources/env-streaming-mongo.json
@@ -17,7 +17,6 @@
"spark.hadoop.fs.hdfs.impl.disable.cache": true
}
},
-
"sinks": [
{
"name": "consoleSink",
@@ -35,7 +34,6 @@
}
}
],
-
"griffin.checkpoint": [
{
"type": "zk",
diff --git a/measure/src/test/resources/env-streaming.json b/measure/src/test/resources/env-streaming.json
index 46b6660..2fccc37 100644
--- a/measure/src/test/resources/env-streaming.json
+++ b/measure/src/test/resources/env-streaming.json
@@ -17,7 +17,6 @@
"spark.hadoop.fs.hdfs.impl.disable.cache": true
}
},
-
"sinks": [
{
"type": "consoleSink",
@@ -26,7 +25,6 @@
}
}
],
-
"griffin.checkpoint": [
{
"type": "zk",
diff --git a/measure/src/test/resources/invalidconfigs/invalidtype_completeness_batch_griffindal.json b/measure/src/test/resources/invalidconfigs/invalidtype_completeness_batch_griffindal.json
index 550b4ac..2a133bb 100644
--- a/measure/src/test/resources/invalidconfigs/invalidtype_completeness_batch_griffindal.json
+++ b/measure/src/test/resources/invalidconfigs/invalidtype_completeness_batch_griffindal.json
@@ -26,11 +26,16 @@
"out.dataframe.name": "prof",
"dsl.type": "griffin-dsl",
"dq.type": "completeness",
- "error.confs":[
+ "error.confs": [
{
"column.name": "user",
"type": "abc",
- "values":["1", "2", "hive_none", ""]
+ "values": [
+ "1",
+ "2",
+ "hive_none",
+ ""
+ ]
}
],
"out": [
diff --git a/measure/src/test/resources/invalidconfigs/missingrule_accuracy_batch_sparksql.json b/measure/src/test/resources/invalidconfigs/missingrule_accuracy_batch_sparksql.json
index d75ae93..b156275 100644
--- a/measure/src/test/resources/invalidconfigs/missingrule_accuracy_batch_sparksql.json
+++ b/measure/src/test/resources/invalidconfigs/missingrule_accuracy_batch_sparksql.json
@@ -1,8 +1,6 @@
{
"name": "accu_batch",
-
"process.type": "batch",
-
"data.sources": [
{
"name": "source",
@@ -16,7 +14,8 @@
}
}
]
- }, {
+ },
+ {
"name": "target",
"connectors": [
{
diff --git a/measure/src/test/resources/log4j.properties b/measure/src/test/resources/log4j.properties
index 3b408db..bc73999 100644
--- a/measure/src/test/resources/log4j.properties
+++ b/measure/src/test/resources/log4j.properties
@@ -16,15 +16,12 @@
# specific language governing permissions and limitations
# under the License.
#
-
-
log4j.rootLogger=INFO, stdout
+log4j.logger.org.apache=ERROR
+log4j.logger.DataNucleus=ERROR
+log4j.logger.org.spark_project=ERROR
+log4j.logger.org.apache.griffin=INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c] - %m%n
-log4j.logger.org.apache=WARN
-log4j.logger.org.spark_project=WARN
-
-# for travis test log
-log4j.logger.org.apache.hadoop.hive.metastore=INFO
\ No newline at end of file
diff --git a/measure/src/test/resources/users_info_src.csv b/measure/src/test/resources/users_info_src.csv
new file mode 100644
index 0000000..7efa4d6
--- /dev/null
+++ b/measure/src/test/resources/users_info_src.csv
@@ -0,0 +1,50 @@
+10001,Tom001,Jerrya,201 DisneyCity ,tomajerrya001@dc.org,10000001,94022
+10002,Tom002,Jerrya,202 DisneyCity ,tomajerrya002@dc.org,10000002,94022
+10003,Tom003,Jerrya,203 DisneyCity ,tomajerrya003@dc.org,10000003,94022
+10004,Tom004,Jerrya,204 DisneyCity ,tomajerrya004@dc.org,10000004,94022
+10005,Tom005,Jerrya,205 DisneyCity ,tomajerrya005@dc.org,10000005,94022
+10006,Tom006,Jerrya,206 DisneyCity ,tomajerrya006@dc.org,10000006,94022
+10007,Tom007,Jerrya,207 DisneyCity111,tomajerrya007@dc.org,10000007,94022
+10008,Tom008,Jerrya,208 DisneyCity ,tomajerrya008@dc.org,10000008,94022
+10009,Tom009,Jerrya,209 DisneyCity ,tomajerrya009@dc.org,10000009,94022
+10010,Tom010,Jerrya,210 DisneyCity ,tomajerrya010@dc.org,10000010,94022
+10011,Tom011,Jerrya,211 DisneyCity ,tomajerrya011@dc.org,10000011,94022
+10012,Tom012,Jerrya,212 DisneyCity ,tomajerrya012@dc.org,10000012,94022
+10013,Tom013,Jerrya,213 DisneyCity ,tomajerrya013@dc.org,10000013,94022
+10014,Tom014,Jerrya,214 DisneyCity ,tomajerrya014@dc.org,10000014,94022
+10015,Tom015,Jerrya,215 DisneyCity ,tomajerrya015@dc.org,10000015,94022
+10016,Tom016,Jerrya,216 DisneyCity ,tomajerrya016@dc.org,10000016,94022
+10017,Tom017,Jerrya,217 DisneyCity ,tomajerrya017@dc.org,10000017,94022
+10018,Tom018,Jerrya,218 DisneyCity ,tomajerrya018@dc.org,10000018,94022
+10019,Tom019,Jerrya,219 DisneyCity ,tomajerrya019@dc.org,10000019,94022
+10020,Tom020,Jerrya,220 DisneyCity ,tomajerrya020@dc.org,10000020,94022
+10021,Tom021,Jerrya,221 DisneyCity ,tomajerrya021@dc.org,10000021,94022
+10022,Tom022,Jerrya,222 DisneyCity ,tomajerrya022@dc.org,10000022,94022
+10023,Tom023,Jerrya,223 DisneyCity ,tomajerrya023@dc.org,10000023,94022
+10024,Tom024,Jerrya,224 DisneyCity ,tomajerrya024@dc.org,10000024,94022
+10025,Tom025,Jerrya,225 DisneyCity ,tomajerrya025@dc.org,10000025,94022
+10026,Tom026,Jerrya,226 DisneyCity ,tomajerrya026@dc.org,10000026,94022
+10027,Tom027,Jerrya,227 DisneyCity ,tomajerrya027@dc.org,10000027,94022
+10028,Tom028,Jerrya,228 DisneyCity ,tomajerrya028@dc.org,10000028,94022
+10029,Tom029,Jerrya,229 DisneyCity ,tomajerrya029@dc.org,10000029,94022
+10030,Tom030,Jerrya,230 DisneyCity ,tomajerrya030@dc.org,10000030,94022
+10031,Tom031,Jerrya,231 DisneyCity ,tomajerrya031@dc.org,10000031,94022
+10032,Tom032,Jerrya,232 DisneyCity ,tomajerrya032@dc.org,10000032,94022
+10033,Tom033,Jerrya,233 DisneyCity ,tomajerrya033@dc.org,10000033,94022
+10034,Tom034,Jerrya,234 DisneyCity ,tomajerrya034@dc.org,10000034,94022
+10035,Tom035,Jerrya,235 DisneyCity ,tomajerrya035@dc.org,10000035,94022
+10036,Tom036,Jerrya,236 DisneyCity ,tomajerrya036@dc.org,10000036,94022
+10037,Tom037,Jerrya,237 DisneyCity ,tomajerrya037@dc.org,10000037,94022
+10038,Tom038,Jerrya,238 DisneyCity ,tomajerrya038@dc.org,10000038,94022
+10039,Tom039,Jerrya,239 DisneyCity123,tomajerrya039@dc.org,10000039,94022
+10040,Tom040,Jerrya,240 DisneyCity ,tomajerrya040@dc.org,10000040,94022
+10041,Tom041,Jerrya,241 DisneyCity ,tomajerrya041@dc.org,10000041,94022
+10042,Tom042,Jerrya,242 DisneyCity ,tomajerrya042@dc.org,10000042
+10043,Tom043,Jerrya,243 DisneyCity ,tomajerrya043@dc.org,10000043,94022
+10044,Tom049,Jerrya,244 DisneyCity ,tomajerrya044@dc.org,10000044,94022
+10045,Tom045,Jerrya,245 DisneyCity ,tomajerrya045@dc.org,10000045,94022
+10046,Tom046,Jerrya,246 DisneyCity ,tomajerrya046@dc.org,10000046,94022
+10047,Tom047,Jerrya,247 DisneyCity ,tomajerrya047@dc.org,10000047,94022
+10048,Tom048,Jerrya,248 DisneyCity ,tomajerrya048@dc.org,10000048,94022
+10050,Tom049,Jerrya,249 DisneyCity ,tomajerrya049@dc.org,10000049,94022
+10050,Tom0 ,Jerrya,250 DisneyCity ,tomajerrya050@dc.org,10000050,94022
diff --git a/measure/src/test/scala/org/apache/griffin/measure/SparkSuiteBase.scala b/measure/src/test/scala/org/apache/griffin/measure/SparkSuiteBase.scala
index 011122f..66180b1 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/SparkSuiteBase.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/SparkSuiteBase.scala
@@ -22,10 +22,11 @@
import org.apache.commons.io.FileUtils
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession
+import org.apache.spark.sql.internal.SQLConf
import org.scalatest._
import org.scalatest.flatspec.AnyFlatSpec
-trait SparkSuiteBase extends AnyFlatSpec with BeforeAndAfterAll {
+trait SparkSuiteBase extends AnyFlatSpec with BeforeAndAfterAll with BeforeAndAfterEach {
@transient var spark: SparkSession = _
@transient var sc: SparkContext = _
@@ -38,6 +39,9 @@
spark = SparkSession.builder
.master("local[4]")
.appName("Griffin Job Suite")
+ .config(SQLConf.SHUFFLE_PARTITIONS.key, "4")
+ .config("spark.default.parallelism", "4")
+ .config("spark.sql.crossJoin.enabled", "true")
.config(conf)
.enableHiveSupport()
.getOrCreate()
diff --git a/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamEnumReaderSpec.scala b/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamEnumReaderSpec.scala
index 8f191bc..085633e 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamEnumReaderSpec.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamEnumReaderSpec.scala
@@ -17,16 +17,10 @@
package org.apache.griffin.measure.configuration.dqdefinition.reader
-import org.scalatest._
-import flatspec.AnyFlatSpec
-import matchers.should._
+import org.scalatest.flatspec.AnyFlatSpec
+import org.scalatest.matchers.should._
-import org.apache.griffin.measure.configuration.dqdefinition.{
- DQConfig,
- EvaluateRuleParam,
- RuleOutputParam,
- RuleParam
-}
+import org.apache.griffin.measure.configuration.dqdefinition._
class ParamEnumReaderSpec extends AnyFlatSpec with Matchers {
import org.apache.griffin.measure.configuration.enums.DslType._
@@ -50,18 +44,6 @@
ruleParam.getDslType should ===(GriffinDsl)
}
- val validDslDfOpsValues =
- Seq("df-ops", "dfops", "DFOPS", "df-opr", "dfopr", "df-operations", "dfoperations")
- validDslDfOpsValues foreach { x =>
- val ruleParam = RuleParam(x, "accuracy")
- ruleParam.getDslType should ===(DataFrameOpsType)
- }
-
- val invalidDslDfOpsValues = Seq("df-oprts", "-")
- invalidDslDfOpsValues foreach { x =>
- val ruleParam = RuleParam(x, "accuracy")
- ruleParam.getDslType should not be DataFrameOpsType
- }
}
"griffindsl" should "be returned as default dsl type" in {
@@ -172,6 +154,7 @@
"",
Nil,
mock(classOf[EvaluateRuleParam]),
+ Nil,
List(
"Console",
"Log",
@@ -184,12 +167,18 @@
"mongo",
"hdfs"))
dqConfig.getValidSinkTypes should be(Seq(Console, ElasticSearch, MongoDB, Hdfs))
- dqConfig =
- DQConfig("test", 1234, "", Nil, mock(classOf[EvaluateRuleParam]), List("Consol", "Logg"))
+ dqConfig = DQConfig(
+ "test",
+ 1234,
+ "",
+ Nil,
+ mock(classOf[EvaluateRuleParam]),
+ Nil,
+ List("Consol", "Logg"))
dqConfig.getValidSinkTypes should not be Seq(Console)
dqConfig.getValidSinkTypes should be(Seq())
- dqConfig = DQConfig("test", 1234, "", Nil, mock(classOf[EvaluateRuleParam]), List(""))
+ dqConfig = DQConfig("test", 1234, "", Nil, mock(classOf[EvaluateRuleParam]), Nil, List(""))
dqConfig.getValidSinkTypes should be(Nil)
}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamFileReaderSpec.scala b/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamFileReaderSpec.scala
index 94c7e07..d5b5eb2 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamFileReaderSpec.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamFileReaderSpec.scala
@@ -17,28 +17,21 @@
package org.apache.griffin.measure.configuration.dqdefinition.reader
-import org.scalatest._
import scala.util.{Failure, Success}
+import org.scalatest.flatspec.AnyFlatSpec
+import org.scalatest.matchers.should._
+
import org.apache.griffin.measure.configuration.dqdefinition.DQConfig
-import org.apache.griffin.measure.configuration.enums.DslType.GriffinDsl
-import org.scalatest._
-import flatspec.AnyFlatSpec
-import matchers.should._
+import org.apache.griffin.measure.configuration.enums.MeasureTypes
+
class ParamFileReaderSpec extends AnyFlatSpec with Matchers {
"params " should "be parsed from a valid file" in {
val reader: ParamReader =
ParamFileReader(getClass.getResource("/_accuracy-batch-griffindsl.json").getFile)
val params = reader.readConfig[DQConfig]
- params match {
- case Success(v) =>
- v.getEvaluateRule.getRules.head.getDslType should ===(GriffinDsl)
- v.getEvaluateRule.getRules.head.getOutDfName() should ===("accu")
- case Failure(_) =>
- fail("it should not happen")
- }
-
+ assert(params.isSuccess)
}
it should "fail for an invalid file" in {
@@ -69,16 +62,10 @@
}
it should "be parsed from a valid errorconf completeness json file" in {
- val reader: ParamReader = ParamFileReader(
- getClass.getResource("/_completeness_errorconf-batch-griffindsl.json").getFile)
+ val reader: ParamReader =
+ ParamFileReader(getClass.getResource("/_completeness-batch-griffindsl.json").getFile)
val params = reader.readConfig[DQConfig]
- params match {
- case Success(v) =>
- v.getEvaluateRule.getRules.head.getErrorConfs.length should ===(2)
- v.getEvaluateRule.getRules.head.getErrorConfs.head.getColumnName.get should ===("user")
- v.getEvaluateRule.getRules.head.getErrorConfs(1).getColumnName.get should ===("name")
- case Failure(_) =>
- fail("it should not happen")
- }
+ assert(params.isSuccess)
+ assert(params.get.getMeasures.forall(_.getType == MeasureTypes.Completeness))
}
}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamJsonReaderSpec.scala b/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamJsonReaderSpec.scala
index d8bf125..db95c6a 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamJsonReaderSpec.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/configuration/dqdefinition/reader/ParamJsonReaderSpec.scala
@@ -24,7 +24,6 @@
import org.scalatest.matchers.should._
import org.apache.griffin.measure.configuration.dqdefinition.DQConfig
-import org.apache.griffin.measure.configuration.enums.DslType.GriffinDsl
class ParamJsonReaderSpec extends AnyFlatSpec with Matchers {
@@ -36,14 +35,8 @@
val reader: ParamReader = ParamJsonReader(jsonString)
val params = reader.readConfig[DQConfig]
- params match {
- case Success(v) =>
- v.getEvaluateRule.getRules.head.getDslType should ===(GriffinDsl)
- v.getEvaluateRule.getRules.head.getOutDfName() should ===("accu")
- case Failure(_) =>
- fail("it should not happen")
- }
+ assert(params.isSuccess)
}
it should "fail for an invalid file" in {
@@ -58,7 +51,7 @@
case Success(_) =>
fail("it is an invalid config file")
case Failure(e) =>
- e.getMessage should include("evaluate.rule should not be null")
+ e.getMessage should include("Connector is undefined or invalid")
}
}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/context/MetricWrapperTest.scala b/measure/src/test/scala/org/apache/griffin/measure/context/MetricWrapperTest.scala
index 9a63abd..c2a903b 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/context/MetricWrapperTest.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/context/MetricWrapperTest.scala
@@ -24,7 +24,7 @@
"metric wrapper" should "flush empty if no metric inserted" in {
val metricWrapper = MetricWrapper("name", "appId")
- metricWrapper.flush should be(Map[Long, Map[String, Any]]())
+ metricWrapper.flush() should be(Map[Long, Map[String, Any]]())
}
it should "flush all metrics inserted" in {
@@ -33,18 +33,18 @@
metricWrapper.insertMetric(1, Map("match" -> 8))
metricWrapper.insertMetric(2, Map("total" -> 20))
metricWrapper.insertMetric(2, Map("miss" -> 4))
- metricWrapper.flush should be(
+ metricWrapper.flush() should be(
Map(
1L -> Map(
- "name" -> "test",
+ "job_name" -> "test",
"tmst" -> 1,
- "value" -> Map("total" -> 10, "miss" -> 2, "match" -> 8),
- "metadata" -> Map("applicationId" -> "appId")),
+ "metrics" -> Map("total" -> 10, "miss" -> 2, "match" -> 8),
+ "applicationId" -> "appId"),
2L -> Map(
- "name" -> "test",
+ "job_name" -> "test",
"tmst" -> 2,
- "value" -> Map("total" -> 20, "miss" -> 4),
- "metadata" -> Map("applicationId" -> "appId"))))
+ "metrics" -> Map("total" -> 20, "miss" -> 4),
+ "applicationId" -> "appId")))
}
}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/datasource/connector/DataConnectorPreProcTest.scala b/measure/src/test/scala/org/apache/griffin/measure/datasource/connector/DataConnectorPreProcTest.scala
new file mode 100644
index 0000000..9f56f27
--- /dev/null
+++ b/measure/src/test/scala/org/apache/griffin/measure/datasource/connector/DataConnectorPreProcTest.scala
@@ -0,0 +1,200 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.datasource.connector
+
+import java.io.File
+import java.time.ZonedDateTime
+
+import scala.io.Source
+import scala.util.Try
+
+import org.apache.spark.sql.{DataFrame, Row, SparkSession}
+import org.apache.spark.sql.catalyst.encoders.RowEncoder
+import org.apache.spark.sql.types.StructType
+import org.scalatest.matchers.should.Matchers
+
+import org.apache.griffin.measure.configuration.dqdefinition.DataConnectorParam
+import org.apache.griffin.measure.context.TimeRange
+import org.apache.griffin.measure.datasource.TimestampStorage
+import org.apache.griffin.measure.datasource.connector.batch.{
+ BatchDataConnector,
+ FileBasedDataConnector
+}
+import org.apache.griffin.measure.SparkSuiteBase
+
+case class SampleBatchDataConnector(
+ @transient sparkSession: SparkSession,
+ dcParam: DataConnectorParam,
+ timestampStorage: TimestampStorage)
+ extends BatchDataConnector {
+
+ val rawData: Seq[Row] = Seq(
+ "2015-05-26T00:26:00Z,PENAL CODE/MISC (PENALMI),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306",
+ "2015-05-26T00:26:00Z,DRUNK IN PUBLIC ADULT/MISC (647FA),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306",
+ "2015-05-26T00:26:00Z,PENAL CODE/MISC (PENALMI),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306",
+ "2015-05-26T00:26:00Z,PENAL CODE/MISC (PENALMI),3900 Block BLOCK EL CAMINO REAL,PALO ALTO,94306",
+ "2015-05-26T02:30:00Z,N&D/POSSESSION (11350),WILKIE WAY & JAMES RD,PALO ALTO,94306")
+ .map(str => Row(str))
+
+ override def data(ms: Long): (Option[DataFrame], TimeRange) = {
+ val schema = new StructType().add("value", "string", nullable = true)
+
+ val df = sparkSession.createDataset(rawData)(RowEncoder(schema))
+ (preProcess(Option(df), ms), TimeRange(ms))
+ }
+}
+
+class DataConnectorPreProcTest extends SparkSuiteBase with Matchers {
+
+ private def castSeq(s: Seq[Any]): Seq[Any] = {
+
+ val arr = s.toArray
+ arr(0) =
+ Try(java.sql.Timestamp.from(ZonedDateTime.parse(s(0).toString).toInstant)).getOrElse(null)
+ arr(4) = Try(s(4).toString.toInt).getOrElse(null)
+
+ arr.toSeq
+ }
+
+ "DataConnector" should "return input data if no pre.proc rules are applied" in {
+ val param = DataConnectorParam(
+ "CUSTOM",
+ null,
+ Map("class" -> classOf[SampleBatchDataConnector].getCanonicalName),
+ Nil)
+
+ val timestampStorage = TimestampStorage()
+ val ts = 0L
+
+ val dc = DataConnectorFactory.getDataConnector(spark, null, param, timestampStorage, None)
+ assert(dc.isSuccess)
+ assert(dc.toOption.isDefined)
+ assert(dc.get.isInstanceOf[SampleBatchDataConnector])
+ assert(dc.get.data(ts)._1.isDefined)
+
+ val expectedRows =
+ dc.get
+ .asInstanceOf[SampleBatchDataConnector]
+ .rawData
+ .map(x => Row(x.toSeq.:+(ts): _*))
+ val actualRows = dc.get.data(ts)._1.get.collect()
+
+ actualRows should contain theSameElementsAs expectedRows
+ assert(actualRows.length == expectedRows.length)
+ }
+
+ it should "apply pre.proc rule if provided" in {
+ val param = DataConnectorParam(
+ "CUSTOM",
+ null,
+ Map("class" -> classOf[SampleBatchDataConnector].getCanonicalName),
+ List("select split(value, ',') as part from this"))
+
+ val timestampStorage = TimestampStorage()
+ val ts = 0L
+
+ val dc = DataConnectorFactory.getDataConnector(spark, null, param, timestampStorage, None)
+ assert(dc.isSuccess)
+ assert(dc.toOption.isDefined)
+ assert(dc.get.isInstanceOf[SampleBatchDataConnector])
+ assert(dc.get.data(ts)._1.isDefined)
+
+ val expectedRows = dc.get
+ .asInstanceOf[SampleBatchDataConnector]
+ .rawData
+ .map(x => Row(x.getString(0).split(",").toSeq, ts))
+ val actualRows = dc.get.data(ts)._1.get.collect()
+
+ actualRows should contain theSameElementsAs expectedRows
+ assert(actualRows.length == expectedRows.length)
+ }
+
+ it should "chain pre.proc rules in sequence if more than one rule is provided" in {
+ val param = DataConnectorParam(
+ "CUSTOM",
+ null,
+ Map("class" -> classOf[SampleBatchDataConnector].getCanonicalName),
+ List(
+ "select split(value, ',') as part from this",
+ "select part[0] as date_time, part[1] as incident, part[2] as address, " +
+ "part[3] as city, part[4] as zipcode from this",
+ "select cast(date_time as timestamp) as date_time, incident, address, city, " +
+ "cast(zipcode as int) as zipcode from this"))
+
+ val timestampStorage = TimestampStorage()
+ val ts = 0L
+
+ val dc = DataConnectorFactory.getDataConnector(spark, null, param, timestampStorage, None)
+ assert(dc.isSuccess)
+ assert(dc.toOption.isDefined)
+ assert(dc.get.isInstanceOf[SampleBatchDataConnector])
+ assert(dc.get.data(ts)._1.isDefined)
+
+ val expectedRows = dc.get
+ .asInstanceOf[SampleBatchDataConnector]
+ .rawData
+ .map(x => Row(x.getString(0).split(",").toSeq))
+ .map(r => Row(castSeq(r.getSeq(0)).:+(ts): _*))
+ val actualRows = dc.get.data(ts)._1.get.collect()
+
+ actualRows should contain theSameElementsAs expectedRows
+ assert(actualRows.length == expectedRows.length)
+ }
+
+ it should "pre process data from other connectors as well" in {
+ val dataFilePath = "src/test/resources/crime_report_test.csv"
+
+ val param = DataConnectorParam(
+ "file",
+ null,
+ Map(
+ "format" -> "csv",
+ "paths" -> Seq(dataFilePath),
+ "schema" -> Seq(
+ Map("name" -> "date_time", "type" -> "string"),
+ Map("name" -> "incident", "type" -> "string"),
+ Map("name" -> "address", "type" -> "string"),
+ Map("name" -> "city", "type" -> "string"),
+ Map("name" -> "zipcode", "type" -> "string"))),
+ List(
+ "select cast(date_time as timestamp) as date_time, incident, address, city, " +
+ "cast(zipcode as int) as zipcode from this"))
+
+ val timestampStorage = TimestampStorage()
+ val ts = 0L
+
+ val dc = DataConnectorFactory.getDataConnector(spark, null, param, timestampStorage, None)
+
+ assert(dc.isSuccess)
+ assert(dc.toOption.isDefined)
+ assert(dc.get.isInstanceOf[FileBasedDataConnector])
+ assert(dc.get.data(ts)._1.isDefined)
+
+ val source = Source.fromFile(new File(dataFilePath))
+
+ val expectedRows = source
+ .getLines()
+ .toSeq
+ .map(x => Row(x.split(",").toSeq))
+ .map(r => Row(castSeq(r.getSeq(0)).:+(ts): _*))
+ val actualRows = dc.get.data(ts)._1.get.collect()
+
+ actualRows should contain theSameElementsAs expectedRows
+ assert(actualRows.length == expectedRows.length)
+ }
+}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/execution/impl/AccuracyMeasureTest.scala b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/AccuracyMeasureTest.scala
new file mode 100644
index 0000000..2f81d1c
--- /dev/null
+++ b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/AccuracyMeasureTest.scala
@@ -0,0 +1,158 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import org.apache.commons.lang3.StringUtils
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure._
+import org.apache.griffin.measure.execution.impl.AccuracyMeasure._
+
+class AccuracyMeasureTest extends MeasureTest {
+ var param: MeasureParam = _
+
+ override def beforeAll(): Unit = {
+ super.beforeAll()
+ param = MeasureParam(
+ "param",
+ "Accuracy",
+ "source",
+ Map(
+ Expression -> Seq(Map(SourceColStr -> "gender", ReferenceColStr -> "gender")),
+ ReferenceSourceStr -> "reference"))
+ }
+
+ "AccuracyMeasure" should "validate expression config" in {
+
+ // Validations for Accuracy Expr
+
+ // Empty
+ assertThrows[AssertionError] {
+ AccuracyMeasure(spark, param.copy(config = Map.empty[String, String]))
+ }
+
+ // Incorrect Type and Empty
+ assertThrows[AssertionError] {
+ AccuracyMeasure(spark, param.copy(config = Map(Expression -> StringUtils.EMPTY)))
+ }
+
+ // Null
+ assertThrows[AssertionError] {
+ AccuracyMeasure(spark, param.copy(config = Map(Expression -> null)))
+ }
+
+ // Incorrect Type
+ assertThrows[AssertionError] {
+ AccuracyMeasure(spark, param.copy(config = Map(Expression -> "gender")))
+ }
+
+ // Correct Type and Empty
+ assertThrows[AssertionError] {
+ AccuracyMeasure(
+ spark,
+ param.copy(config = Map(Expression -> Seq.empty[Map[String, String]])))
+ }
+
+ // Invalid Expr
+ assertThrows[AssertionError] {
+ AccuracyMeasure(
+ spark,
+ param.copy(config =
+ Map(Expression -> Seq(Map("a" -> "b")), ReferenceSourceStr -> "reference")))
+ }
+
+ // Invalid Expr as ref.col is missing
+ assertThrows[AssertionError] {
+ AccuracyMeasure(
+ spark,
+ param.copy(config =
+ Map(Expression -> Seq(Map(SourceColStr -> "b")), ReferenceSourceStr -> "reference")))
+ }
+
+ // Invalid Expr as source.col is missing
+ assertThrows[AssertionError] {
+ AccuracyMeasure(
+ spark,
+ param.copy(config =
+ Map(Expression -> Seq(Map(ReferenceColStr -> "b")), ReferenceSourceStr -> "reference")))
+ }
+
+ // Validations for Reference source
+
+ // Empty
+ assertThrows[AssertionError] {
+ AccuracyMeasure(
+ spark,
+ param.copy(config =
+ Map(Expression -> Seq(Map("a" -> "b")), ReferenceSourceStr -> StringUtils.EMPTY)))
+ }
+
+ // Incorrect Type
+ assertThrows[AssertionError] {
+ AccuracyMeasure(
+ spark,
+ param.copy(config = Map(Expression -> Seq(Map("a" -> "b")), ReferenceSourceStr -> 2331)))
+ }
+
+ // Null
+ assertThrows[AssertionError] {
+ AccuracyMeasure(
+ spark,
+ param.copy(config = Map(Expression -> Seq(Map("a" -> "b")), ReferenceSourceStr -> null)))
+ }
+
+ // Invalid Reference
+ assertThrows[AssertionError] {
+ AccuracyMeasure(
+ spark,
+ param.copy(config = Map(Expression -> Seq(Map("a" -> "b")), ReferenceSourceStr -> "jj")))
+ }
+ }
+
+ it should "support metric writing" in {
+ val measure = AccuracyMeasure(spark, param)
+ assertResult(true)(measure.supportsMetricWrite)
+ }
+
+ it should "support record writing" in {
+ val measure = AccuracyMeasure(spark, param)
+ assertResult(true)(measure.supportsRecordWrite)
+ }
+
+ it should "execute defined measure expr" in {
+ val measure = AccuracyMeasure(spark, param)
+ val (recordsDf, metricsDf) = measure.execute(None)
+
+ assertResult(recordDfSchema)(recordsDf.schema)
+ assertResult(metricDfSchema)(metricsDf.schema)
+
+ assertResult(source.count())(recordsDf.count())
+ assertResult(1L)(metricsDf.count())
+
+ val metricMap = metricsDf
+ .head()
+ .getAs[Seq[Map[String, String]]](Metrics)
+ .map(x => x(MetricName) -> x(MetricValue))
+ .toMap
+
+ assertResult(metricMap(Total))("5")
+ assertResult(metricMap(AccurateStr))("2")
+ assertResult(metricMap(InAccurateStr))("3")
+ }
+
+}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/execution/impl/CompletenessMeasureTest.scala b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/CompletenessMeasureTest.scala
new file mode 100644
index 0000000..d6e8b74
--- /dev/null
+++ b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/CompletenessMeasureTest.scala
@@ -0,0 +1,119 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import org.apache.commons.lang3.StringUtils
+import org.apache.spark.sql.AnalysisException
+import org.apache.spark.sql.catalyst.parser.ParseException
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure._
+
+class CompletenessMeasureTest extends MeasureTest {
+ var param: MeasureParam = _
+
+ override def beforeAll(): Unit = {
+ super.beforeAll()
+ param = MeasureParam("param", "Completeness", "source", Map(Expression -> "name is null"))
+ }
+
+ "CompletenessMeasure" should "validate expression config" in {
+ assertThrows[AssertionError] {
+ CompletenessMeasure(spark, param.copy(config = Map.empty[String, String]))
+ }
+
+ assertThrows[AssertionError] {
+ CompletenessMeasure(spark, param.copy(config = Map(Expression -> StringUtils.EMPTY)))
+ }
+
+ assertThrows[AssertionError] {
+ CompletenessMeasure(spark, param.copy(config = Map(Expression -> null)))
+ }
+
+ assertThrows[AssertionError] {
+ CompletenessMeasure(spark, param.copy(config = Map(Expression -> 22)))
+ }
+ }
+
+ it should "support metric writing" in {
+ val measure = CompletenessMeasure(spark, param)
+ assertResult(true)(measure.supportsMetricWrite)
+ }
+
+ it should "support record writing" in {
+ val measure = CompletenessMeasure(spark, param)
+ assertResult(true)(measure.supportsRecordWrite)
+ }
+
+ it should "execute defined measure expr" in {
+ val measure = CompletenessMeasure(spark, param)
+ val (recordsDf, metricsDf) = measure.execute(None)
+
+ assertResult(recordDfSchema)(recordsDf.schema)
+ assertResult(metricDfSchema)(metricsDf.schema)
+
+ assertResult(source.count())(recordsDf.count())
+ assertResult(1L)(metricsDf.count())
+
+ val metricMap = metricsDf
+ .head()
+ .getAs[Seq[Map[String, String]]](Metrics)
+ .map(x => x(MetricName) -> x(MetricValue))
+ .toMap
+
+ assertResult(metricMap(Total))("5")
+ assertResult(metricMap(measure.Complete))("4")
+ assertResult(metricMap(measure.InComplete))("1")
+ }
+
+ it should "supported complex measure expr" in {
+ val measure = CompletenessMeasure(
+ spark,
+ param.copy(config = Map(Expression -> "name is null or gender is null")))
+ val (recordsDf, metricsDf) = measure.execute(None)
+
+ assertResult(recordDfSchema)(recordsDf.schema)
+ assertResult(metricDfSchema)(metricsDf.schema)
+
+ assertResult(source.count())(recordsDf.count())
+ assertResult(1L)(metricsDf.count())
+
+ val metricMap = metricsDf
+ .head()
+ .getAs[Seq[Map[String, String]]](Metrics)
+ .map(x => x(MetricName) -> x(MetricValue))
+ .toMap
+
+ assertResult(metricMap(Total))("5")
+ assertResult(metricMap(measure.Complete))("3")
+ assertResult(metricMap(measure.InComplete))("2")
+ }
+
+ it should "throw runtime error for invalid expr" in {
+ assertThrows[AnalysisException] {
+ CompletenessMeasure(spark, param.copy(config = Map(Expression -> "xyz is null")))
+ .execute()
+ }
+
+ assertThrows[ParseException] {
+ CompletenessMeasure(spark, param.copy(config = Map(Expression -> "select 1")))
+ .execute()
+ }
+ }
+
+}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/execution/impl/DuplicationMeasureTest.scala b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/DuplicationMeasureTest.scala
new file mode 100644
index 0000000..7e22617
--- /dev/null
+++ b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/DuplicationMeasureTest.scala
@@ -0,0 +1,156 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import org.apache.commons.lang3.StringUtils
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure._
+import org.apache.griffin.measure.execution.impl.DuplicationMeasure._
+
+class DuplicationMeasureTest extends MeasureTest {
+ var param: MeasureParam = _
+
+ override def beforeAll(): Unit = {
+ super.beforeAll()
+ param = MeasureParam(
+ "param",
+ "Duplication",
+ "source",
+ Map(Expression -> "name", BadRecordDefinition -> "duplicate"))
+ }
+
+ "DuplicationMeasure" should "validate expression config" in {
+ // Validations for Duplication Expr
+
+ // Empty
+ assertThrows[AssertionError] {
+ DuplicationMeasure(spark, param.copy(config = Map.empty[String, String]))
+ }
+
+ // Empty
+ assertThrows[AssertionError] {
+ DuplicationMeasure(spark, param.copy(config = Map(Expression -> StringUtils.EMPTY)))
+ }
+
+ // Null
+ assertThrows[AssertionError] {
+ DuplicationMeasure(spark, param.copy(config = Map(Expression -> null)))
+ }
+
+ // Incorrect Type
+ assertThrows[AssertionError] {
+ DuplicationMeasure(spark, param.copy(config = Map(Expression -> 1234)))
+ }
+
+ // Validations for BadRecordDefinition
+
+ // Empty
+ assertThrows[AssertionError] {
+ DuplicationMeasure(spark, param.copy(config = Map(Expression -> "name")))
+ }
+
+ // Empty
+ assertThrows[AssertionError] {
+ DuplicationMeasure(
+ spark,
+ param.copy(config = Map(Expression -> "name", BadRecordDefinition -> "")))
+ }
+
+ // Null
+ assertThrows[AssertionError] {
+ DuplicationMeasure(
+ spark,
+ param.copy(config = Map(Expression -> "name", BadRecordDefinition -> null)))
+ }
+
+ // Incorrect Type
+ assertThrows[AssertionError] {
+ DuplicationMeasure(
+ spark,
+ param.copy(config = Map(Expression -> "name", BadRecordDefinition -> 435)))
+ }
+
+ // Incorrect Value
+ assertThrows[AssertionError] {
+ DuplicationMeasure(
+ spark,
+ param.copy(config = Map(Expression -> "name", BadRecordDefinition -> "xyz")))
+ }
+ }
+
+ it should "support metric writing" in {
+ val measure = DuplicationMeasure(spark, param)
+ assertResult(true)(measure.supportsMetricWrite)
+ }
+
+ it should "support record writing" in {
+ val measure = DuplicationMeasure(spark, param)
+ assertResult(true)(measure.supportsRecordWrite)
+ }
+
+ it should "execute defined measure expr" in {
+ val measure =
+ DuplicationMeasure(spark, param.copy(config = Map(BadRecordDefinition -> "duplicate")))
+ val (recordsDf, metricsDf) = measure.execute(None)
+
+ assertResult(recordDfSchema)(recordsDf.schema)
+ assertResult(metricDfSchema)(metricsDf.schema)
+
+ assertResult(source.count())(recordsDf.count())
+ assertResult(1L)(metricsDf.count())
+
+ val metricMap = metricsDf
+ .head()
+ .getAs[Seq[Map[String, String]]](Metrics)
+ .map(x => x(MetricName) -> x(MetricValue))
+ .toMap
+
+ assertResult(metricMap(Duplicate))("0")
+ assertResult(metricMap(Unique))("5")
+ assertResult(metricMap(NonUnique))("0")
+ assertResult(metricMap(Distinct))("5")
+ assertResult(metricMap(Total))("5")
+ }
+
+ it should "supported complex measure expr" in {
+ val measure = DuplicationMeasure(
+ spark,
+ param.copy(config = Map(Expression -> "name", BadRecordDefinition -> "duplicate")))
+ val (recordsDf, metricsDf) = measure.execute(None)
+
+ assertResult(recordDfSchema)(recordsDf.schema)
+ assertResult(metricDfSchema)(metricsDf.schema)
+
+ assertResult(source.count())(recordsDf.count())
+ assertResult(1L)(metricsDf.count())
+
+ val metricMap = metricsDf
+ .head()
+ .getAs[Seq[Map[String, String]]](Metrics)
+ .map(x => x(MetricName) -> x(MetricValue))
+ .toMap
+
+ assertResult(metricMap(Duplicate))("1")
+ assertResult(metricMap(Unique))("2")
+ assertResult(metricMap(NonUnique))("1")
+ assertResult(metricMap(Distinct))("3")
+ assertResult(metricMap(Total))("5")
+ }
+
+}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/execution/impl/MeasureTest.scala b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/MeasureTest.scala
new file mode 100644
index 0000000..357ab87
--- /dev/null
+++ b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/MeasureTest.scala
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import org.apache.spark.sql.{DataFrame, Row}
+import org.apache.spark.sql.catalyst.encoders.RowEncoder
+import org.apache.spark.sql.types.{ArrayType, MapType, StringType, StructType}
+import org.scalatest.matchers.should._
+
+import org.apache.griffin.measure.execution.Measure._
+import org.apache.griffin.measure.SparkSuiteBase
+import org.apache.griffin.measure.configuration.enums.ProcessType.BatchProcessType
+import org.apache.griffin.measure.context.{ContextId, DQContext}
+
+trait MeasureTest extends SparkSuiteBase with Matchers {
+
+ var sourceSchema: StructType = _
+ var referenceSchema: StructType = _
+ var recordDfSchema: StructType = _
+ var metricDfSchema: StructType = _
+ var context: DQContext = _
+
+ var source: DataFrame = _
+ var reference: DataFrame = _
+
+ override def beforeAll(): Unit = {
+ super.beforeAll()
+
+ context =
+ DQContext(ContextId(System.currentTimeMillis), "test-context", Nil, Nil, BatchProcessType)(
+ spark)
+
+ sourceSchema =
+ new StructType().add("id", "integer").add("name", "string").add("gender", "string")
+
+ referenceSchema = new StructType().add("gender", "string")
+
+ recordDfSchema = sourceSchema.add(Status, "string", nullable = false)
+ metricDfSchema = new StructType()
+ .add(
+ Metrics,
+ ArrayType(MapType(StringType, StringType), containsNull = false),
+ nullable = false)
+
+ source = spark
+ .createDataset(
+ Seq(
+ Row(1, "John Smith", "Male"),
+ Row(2, "John Smith", null),
+ Row(3, "Rebecca Davis", "Female"),
+ Row(4, "Paul Adams", "Male"),
+ Row(5, null, null)))(RowEncoder(sourceSchema))
+ .cache()
+
+ reference = spark.createDataset(Seq(Row("Male")))(RowEncoder(referenceSchema)).cache()
+
+ source.createOrReplaceTempView("source")
+ reference.createOrReplaceTempView("reference")
+ }
+
+}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/execution/impl/ProfilingMeasureTest.scala b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/ProfilingMeasureTest.scala
new file mode 100644
index 0000000..e4f1b21
--- /dev/null
+++ b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/ProfilingMeasureTest.scala
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure._
+import org.apache.griffin.measure.execution.impl.ProfilingMeasure._
+
+class ProfilingMeasureTest extends MeasureTest {
+ var param: MeasureParam = _
+
+ override def beforeAll(): Unit = {
+ super.beforeAll()
+ param = MeasureParam("param", "Profiling", "source")
+ }
+
+ "ProfilingMeasure" should "validate expression config" in {
+
+ // Default values
+ val defaultProfilingMeasure = ProfilingMeasure(spark, param)
+
+ assertResult(3)(defaultProfilingMeasure.roundScale)
+ assertResult(true)(defaultProfilingMeasure.approxDistinctCount)
+
+ // Incorrect Type
+ val invalidMeasure = ProfilingMeasure(
+ spark,
+ param.copy(config = Map(ApproxDistinctCountStr -> "false", RoundScaleStr -> "1")))
+
+ assertResult(3)(invalidMeasure.roundScale)
+ assertResult(true)(invalidMeasure.approxDistinctCount)
+
+ // Correct Type
+ val validMeasure = ProfilingMeasure(
+ spark,
+ param.copy(config = Map(ApproxDistinctCountStr -> false, RoundScaleStr -> 5)))
+
+ assertResult(5)(validMeasure.roundScale)
+ assertResult(false)(validMeasure.approxDistinctCount)
+ }
+
+ it should "support metric writing" in {
+ val measure = ProfilingMeasure(spark, param)
+ assertResult(true)(measure.supportsMetricWrite)
+ }
+
+ it should "not support record writing" in {
+ val measure = ProfilingMeasure(spark, param)
+ assertResult(false)(measure.supportsRecordWrite)
+ }
+
+ it should "profile all columns when no expression is provided" in {
+ val measure = ProfilingMeasure(spark, param)
+
+ assertResult(3)(measure.roundScale)
+ assertResult(true)(measure.approxDistinctCount)
+
+ val (_, metricsDf) = measure.execute(None)
+
+ assertResult(1L)(metricsDf.count())
+
+ val metricMap = metricsDf.head().getAs[Seq[Map[String, String]]](Metrics)
+ assert(metricMap.size == sourceSchema.size)
+ }
+
+ it should "profile only selected columns if expression is provided" in {
+ val measure = ProfilingMeasure(
+ spark,
+ param.copy(config = Map(Expression -> "name, gender", ApproxDistinctCountStr -> false)))
+
+ assertResult(3)(measure.roundScale)
+ assertResult(false)(measure.approxDistinctCount)
+
+ val (_, metricsDf) = measure.execute(None)
+
+ assertResult(1L)(metricsDf.count())
+
+ val metricMap = metricsDf.head().getAs[Seq[Map[String, String]]](Metrics)
+ assert(metricMap.size == 2)
+ }
+
+ it should "throw runtime error for invalid expr" in {
+ assertThrows[AssertionError] {
+ ProfilingMeasure(spark, param.copy(config = Map(Expression -> "xyz")))
+ .execute()
+ }
+ }
+
+}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/execution/impl/SchemaConformanceMeasureTest.scala b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/SchemaConformanceMeasureTest.scala
new file mode 100644
index 0000000..e705675
--- /dev/null
+++ b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/SchemaConformanceMeasureTest.scala
@@ -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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import org.apache.commons.lang3.StringUtils
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure._
+
+class SchemaConformanceMeasureTest extends MeasureTest {
+ var param: MeasureParam = _
+
+ final val SourceColStr: String = "source.col"
+ final val DataTypeStr: String = "type"
+
+ override def beforeAll(): Unit = {
+ super.beforeAll()
+ param = MeasureParam(
+ "param",
+ "SchemaConformance",
+ "source",
+ Map(Expression -> Seq(Map(SourceColStr -> "id", DataTypeStr -> "int"))))
+ }
+
+ "SchemaConformanceMeasure" should "validate expression config" in {
+
+ // Validations for SchemaConformance Expr
+
+ // Empty
+ assertThrows[AssertionError] {
+ SchemaConformanceMeasure(spark, param.copy(config = Map.empty[String, String]))
+ }
+
+ // Incorrect Type and Empty
+ assertThrows[AssertionError] {
+ SchemaConformanceMeasure(spark, param.copy(config = Map(Expression -> StringUtils.EMPTY)))
+ }
+
+ // Null
+ assertThrows[AssertionError] {
+ SchemaConformanceMeasure(spark, param.copy(config = Map(Expression -> null)))
+ }
+
+ // Incorrect Type
+ assertThrows[AssertionError] {
+ SchemaConformanceMeasure(spark, param.copy(config = Map(Expression -> "gender")))
+ }
+
+ // Correct Type and Empty
+ assertThrows[AssertionError] {
+ SchemaConformanceMeasure(
+ spark,
+ param.copy(config = Map(Expression -> Seq.empty[Map[String, String]])))
+ }
+
+ // Invalid Expr
+ assertThrows[AssertionError] {
+ SchemaConformanceMeasure(
+ spark,
+ param.copy(config = Map(Expression -> Seq(Map("a" -> "b")))))
+ }
+
+ // Invalid Expr as type is missing
+ assertThrows[AssertionError] {
+ SchemaConformanceMeasure(
+ spark,
+ param.copy(config = Map(Expression -> Seq(Map(SourceColStr -> "b")))))
+ }
+
+ // Invalid Expr as source.col is missing
+ assertThrows[AssertionError] {
+ SchemaConformanceMeasure(
+ spark,
+ param.copy(config = Map(Expression -> Seq(Map(DataTypeStr -> "b")))))
+ }
+ }
+
+ it should "support metric writing" in {
+ val measure = SchemaConformanceMeasure(spark, param)
+ assertResult(true)(measure.supportsMetricWrite)
+ }
+
+ it should "support record writing" in {
+ val measure = SchemaConformanceMeasure(spark, param)
+ assertResult(true)(measure.supportsRecordWrite)
+ }
+
+ it should "execute defined measure expr" in {
+ val measure = SchemaConformanceMeasure(spark, param)
+ val (recordsDf, metricsDf) = measure.execute(None)
+
+ assertResult(recordDfSchema)(recordsDf.schema)
+ assertResult(metricDfSchema)(metricsDf.schema)
+
+ assertResult(source.count())(recordsDf.count())
+ assertResult(1L)(metricsDf.count())
+
+ val metricMap = metricsDf
+ .head()
+ .getAs[Seq[Map[String, String]]](Metrics)
+ .map(x => x(MetricName) -> x(MetricValue))
+ .toMap
+
+ assertResult(metricMap(Total))("5")
+ assertResult(metricMap(measure.Complete))("5")
+ assertResult(metricMap(measure.InComplete))("0")
+ }
+
+}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/execution/impl/SparkSqlMeasureTest.scala b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/SparkSqlMeasureTest.scala
new file mode 100644
index 0000000..405e4a6
--- /dev/null
+++ b/measure/src/test/scala/org/apache/griffin/measure/execution/impl/SparkSqlMeasureTest.scala
@@ -0,0 +1,137 @@
+/*
+ * 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.
+ */
+
+package org.apache.griffin.measure.execution.impl
+
+import org.apache.commons.lang3.StringUtils
+import org.apache.spark.sql.AnalysisException
+
+import org.apache.griffin.measure.configuration.dqdefinition.MeasureParam
+import org.apache.griffin.measure.execution.Measure._
+
+class SparkSqlMeasureTest extends MeasureTest {
+ var param: MeasureParam = _
+
+ override def beforeAll(): Unit = {
+ super.beforeAll()
+ param = MeasureParam(
+ "param",
+ "SparkSql",
+ "source",
+ Map(
+ Expression -> "select * from source",
+ BadRecordDefinition -> "name is null or gender is null"))
+ }
+
+ "SparkSqlMeasure" should "validate expression config" in {
+
+ // Validations for Expression
+
+ // Empty
+ assertThrows[AssertionError] {
+ SparkSQLMeasure(spark, param.copy(config = Map.empty[String, String]))
+ }
+
+ // Empty
+ assertThrows[AssertionError] {
+ SparkSQLMeasure(spark, param.copy(config = Map(Expression -> StringUtils.EMPTY)))
+ }
+
+ // Null
+ assertThrows[AssertionError] {
+ SparkSQLMeasure(spark, param.copy(config = Map(Expression -> null)))
+ }
+
+ // Incorrect Type
+ assertThrows[AssertionError] {
+ SparkSQLMeasure(spark, param.copy(config = Map(Expression -> 943)))
+ }
+
+ // Validations for BadRecordDefinition
+
+ // Empty
+ assertThrows[AssertionError] {
+ SparkSQLMeasure(
+ spark,
+ param.copy(config =
+ Map(Expression -> "select 1", BadRecordDefinition -> StringUtils.EMPTY)))
+ }
+
+ // Incorrect Type
+ assertThrows[AssertionError] {
+ SparkSQLMeasure(
+ spark,
+ param.copy(config = Map(Expression -> "select 1", BadRecordDefinition -> 2344)))
+ }
+
+ // Null
+ assertThrows[AssertionError] {
+ SparkSQLMeasure(
+ spark,
+ param.copy(config = Map(Expression -> "select 1", BadRecordDefinition -> null)))
+ }
+
+ }
+
+ it should "support metric writing" in {
+ val measure = SparkSQLMeasure(spark, param)
+ assertResult(true)(measure.supportsMetricWrite)
+ }
+
+ it should "support record writing" in {
+ val measure = SparkSQLMeasure(spark, param)
+ assertResult(true)(measure.supportsRecordWrite)
+ }
+
+ it should "execute defined measure expr" in {
+ val measure = SparkSQLMeasure(spark, param)
+ val (recordsDf, metricsDf) = measure.execute(None)
+
+ assertResult(metricDfSchema)(metricsDf.schema)
+ assertResult(source.count())(recordsDf.count())
+ assertResult(1L)(metricsDf.count())
+
+ val metricMap = metricsDf
+ .head()
+ .getAs[Seq[Map[String, String]]](Metrics)
+ .map(x => x(MetricName) -> x(MetricValue))
+ .toMap
+
+ assertResult(metricMap(Total))("5")
+ assertResult(metricMap(measure.Complete))("3")
+ assertResult(metricMap(measure.InComplete))("2")
+ }
+
+ it should "throw runtime error for invalid expr" in {
+ assertThrows[AssertionError] {
+ SparkSQLMeasure(
+ spark,
+ param.copy(config =
+ Map(Expression -> "select * from source", BadRecordDefinition -> "name")))
+ .execute()
+ }
+
+ assertThrows[AnalysisException] {
+ SparkSQLMeasure(
+ spark,
+ param.copy(config =
+ Map(Expression -> "select 1 as my_value", BadRecordDefinition -> "name is null")))
+ .execute()
+ }
+ }
+
+}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/job/BatchDQAppTest.scala b/measure/src/test/scala/org/apache/griffin/measure/job/BatchDQAppTest.scala
index a95d76e..b4f11cd 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/job/BatchDQAppTest.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/job/BatchDQAppTest.scala
@@ -17,13 +17,12 @@
package org.apache.griffin.measure.job
-import org.apache.spark.sql.AnalysisException
import scala.reflect.ClassTag
import scala.util.{Failure, Success, Try}
import org.apache.griffin.measure.Application.readParamFile
import org.apache.griffin.measure.configuration.dqdefinition.EnvConfig
-import org.apache.griffin.measure.launch.batch.BatchDQApp
+import org.apache.griffin.measure.sink.CustomSinkResultRegister
import org.apache.griffin.measure.step.builder.udf.GriffinUDFAgent
class BatchDQAppTest extends DQAppTest {
@@ -42,8 +41,6 @@
Try {
sparkParam.getConfig.foreach { case (k, v) => spark.conf.set(k, v) }
- spark.conf.set("spark.app.name", "BatchDQApp Test")
- spark.conf.set("spark.sql.crossJoin.enabled", "true")
val logLevel = getGriffinLogLevel
sc.setLogLevel(sparkParam.getLogLevel)
@@ -54,21 +51,34 @@
}
}
- def runAndCheckResult(metrics: Map[String, Any]): Unit = {
- dqApp.run match {
- case Success(ret) => assert(ret)
- case Failure(ex) =>
- error(s"process run error: ${ex.getMessage}", ex)
- throw ex
- }
+ override def beforeEach(): Unit = {
+ super.beforeEach()
- // check Result Metrics
- val dqContext = dqApp.asInstanceOf[BatchDQApp].dqContext
- val timestamp = dqContext.contextId.timestamp
- val expectedMetrics =
- Map(timestamp -> metrics)
+ dqApp = null
+ CustomSinkResultRegister.clear()
+ }
- dqContext.metricWrapper.metrics should equal(expectedMetrics)
+ override def afterEach(): Unit = {
+ super.afterEach()
+
+ dqApp = null
+ CustomSinkResultRegister.clear()
+ }
+
+ // check Result Metrics
+ def runAndCheckResult(expectedMetrics: Map[String, Map[String, Any]]): Unit = {
+ val measureNames = dqApp.dqParam.getMeasures
+ assert(measureNames.nonEmpty)
+
+ measureNames.foreach(param => {
+ val actualMetricsOpt = CustomSinkResultRegister.getMetrics(param.getName)
+ assert(actualMetricsOpt.isDefined)
+
+ val actualMetricsMap = actualMetricsOpt.get
+
+ assert(expectedMetrics.contains(param.getName))
+ actualMetricsMap should contain theSameElementsAs expectedMetrics(param.getName)
+ })
}
def runAndCheckException[T <: AnyRef](implicit classTag: ClassTag[T]): Unit = {
@@ -81,79 +91,88 @@
}
"accuracy batch job" should "work" in {
- dqApp = initApp("/_accuracy-batch-griffindsl.json")
- val expectedMetrics = Map(
- "total_count" -> 50,
- "miss_count" -> 4,
- "matched_count" -> 46,
- "matchedFraction" -> 0.92)
+ dqApp = runApp("/_accuracy-batch-griffindsl.json")
+ val expectedMetrics = Map("total" -> "50", "accurate" -> "45", "inaccurate" -> "5")
- runAndCheckResult(expectedMetrics)
+ runAndCheckResult(Map("accuracy_measure" -> expectedMetrics))
}
"completeness batch job" should "work" in {
- dqApp = initApp("/_completeness-batch-griffindsl.json")
- val expectedMetrics = Map("total" -> 50, "incomplete" -> 1, "complete" -> 49)
+ dqApp = runApp("/_completeness-batch-griffindsl.json")
+ val expectedMetrics = Map("total" -> "50", "incomplete" -> "1", "complete" -> "49")
- runAndCheckResult(expectedMetrics)
+ runAndCheckResult(Map("completeness_measure" -> expectedMetrics))
}
- "distinctness batch job" should "work" in {
- dqApp = initApp("/_distinctness-batch-griffindsl.json")
+ "duplication batch job" should "work" in {
+ dqApp = runApp("/_distinctness-batch-griffindsl.json")
+ val expectedMetrics =
+ Map(
+ "duplicate" -> "1",
+ "unique" -> "48",
+ "non_unique" -> "1",
+ "distinct" -> "49",
+ "total" -> "50")
+
+ runAndCheckResult(Map("duplication_measure" -> expectedMetrics))
+ }
+
+ "spark sql batch job" should "work" in {
+ dqApp = runApp("/_sparksql-batch-griffindsl.json")
val expectedMetrics =
- Map("total" -> 50, "distinct" -> 49, "dup" -> Seq(Map("dup" -> 1, "num" -> 1)))
+ Map(
+ "query_measure1" -> Map("total" -> "13", "complete" -> "13", "incomplete" -> "0"),
+ "query_measure2" -> Map("total" -> "1", "complete" -> "0", "incomplete" -> "1"))
runAndCheckResult(expectedMetrics)
}
"profiling batch job" should "work" in {
- dqApp = initApp("/_profiling-batch-griffindsl.json")
+ dqApp = runApp("/_profiling-batch-griffindsl.json")
+
val expectedMetrics = Map(
- "prof" -> Seq(
- Map("user_id" -> 10004, "cnt" -> 1),
- Map("user_id" -> 10011, "cnt" -> 1),
- Map("user_id" -> 10010, "cnt" -> 1),
- Map("user_id" -> 10002, "cnt" -> 1),
- Map("user_id" -> 10006, "cnt" -> 1),
- Map("user_id" -> 10001, "cnt" -> 1),
- Map("user_id" -> 10005, "cnt" -> 1),
- Map("user_id" -> 10008, "cnt" -> 1),
- Map("user_id" -> 10013, "cnt" -> 1),
- Map("user_id" -> 10003, "cnt" -> 1),
- Map("user_id" -> 10007, "cnt" -> 1),
- Map("user_id" -> 10012, "cnt" -> 1),
- Map("user_id" -> 10009, "cnt" -> 1)),
- "post_group" -> Seq(Map("post_code" -> "94022", "cnt" -> 13)))
+ "user_id" -> Map(
+ "avg_col_len" -> "5.0",
+ "max_col_len" -> "5",
+ "variance" -> "15.17",
+ "kurtosis" -> "-1.21",
+ "avg" -> "10007.0",
+ "min" -> "10001",
+ "null_count" -> "0",
+ "approx_distinct_count" -> "13",
+ "total" -> "13",
+ "std_dev" -> "3.89",
+ "data_type" -> "bigint",
+ "max" -> "10013",
+ "min_col_len" -> "5"),
+ "first_name" -> Map(
+ "avg_col_len" -> null,
+ "max_col_len" -> "6",
+ "variance" -> null,
+ "kurtosis" -> null,
+ "avg" -> null,
+ "min" -> null,
+ "null_count" -> "0",
+ "approx_distinct_count" -> "13",
+ "total" -> "13",
+ "std_dev" -> null,
+ "data_type" -> "string",
+ "max" -> null,
+ "min_col_len" -> "6"))
- runAndCheckResult(expectedMetrics)
- }
-
- "timeliness batch job" should "work" in {
- dqApp = initApp("/_timeliness-batch-griffindsl.json")
- val expectedMetrics = Map(
- "total" -> 10,
- "avg" -> 276000,
- "percentile_95" -> 660000,
- "step" -> Seq(
- Map("step" -> 0, "cnt" -> 6),
- Map("step" -> 5, "cnt" -> 2),
- Map("step" -> 3, "cnt" -> 1),
- Map("step" -> 4, "cnt" -> 1)))
-
- runAndCheckResult(expectedMetrics)
- }
-
- "uniqueness batch job" should "work" in {
- dqApp = initApp("/_uniqueness-batch-griffindsl.json")
- val expectedMetrics = Map("total" -> 50, "unique" -> 48)
-
- runAndCheckResult(expectedMetrics)
+ runAndCheckResult(Map("profiling_measure" -> expectedMetrics))
}
"batch job" should "fail with exception caught due to invalid rules" in {
- dqApp = initApp("/_profiling-batch-griffindsl_malformed.json")
+ assertThrows[org.apache.spark.sql.AnalysisException] {
+ runApp("/_profiling-batch-griffindsl_malformed.json")
+ }
+ }
- runAndCheckException[AnalysisException]
+ "batch job" should "fail with exception when no measures or rules are defined" in {
+ assertThrows[AssertionError] {
+ runApp("/_no_measure_or_rules_malformed.json")
+ }
}
}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/job/DQAppTest.scala b/measure/src/test/scala/org/apache/griffin/measure/job/DQAppTest.scala
index 9fc9883..e24bcd5 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/job/DQAppTest.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/job/DQAppTest.scala
@@ -46,12 +46,11 @@
}
}
- def initApp(dqParamFile: String): DQApp = {
+ def runApp(dqParamFile: String): DQApp = {
val dqParam = readParamFile[DQConfig](getConfigFilePath(dqParamFile)) match {
case Success(p) => p
case Failure(ex) =>
- error(ex.getMessage, ex)
- sys.exit(-2)
+ throw ex
}
val allParam: GriffinConfig = GriffinConfig(envParam, dqParam)
@@ -67,6 +66,14 @@
}
dqApp.sparkSession = spark
+
+ dqApp.run match {
+ case Success(ret) => assert(ret)
+ case Failure(ex) =>
+ error(s"process run error: ${ex.getMessage}", ex)
+ throw ex
+ }
+
dqApp
}
}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/sink/CustomSink.scala b/measure/src/test/scala/org/apache/griffin/measure/sink/CustomSink.scala
index 3d0aa0e..d09013b 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/sink/CustomSink.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/sink/CustomSink.scala
@@ -23,13 +23,16 @@
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.DataFrame
+import org.apache.griffin.measure.configuration.enums.MeasureTypes
+import org.apache.griffin.measure.execution.Measure._
+
/**
- * sink records and metrics in memory for test.
+ * A dummy batch sink for testing.
*
* @param config sink configurations
- * @param jobName
- * @param timeStamp
- * @param block
+ * @param jobName Griffin Job Name
+ * @param timeStamp timestamp for job
+ * @param block is blocking or not
*/
case class CustomSink(config: Map[String, Any], jobName: String, timeStamp: Long, block: Boolean)
extends Sink {
@@ -50,10 +53,56 @@
val allMetrics: mutable.Map[String, Any] = mutable.Map[String, Any]()
override def sinkMetrics(metrics: Map[String, Any]): Unit = {
+ val measureName = metrics(MeasureName).toString
+ val measureType =
+ MeasureTypes.withNameWithDefault(metrics.getOrElse(MeasureType, "unknown").toString)
+
+ val value = metrics(Metrics)
+ .asInstanceOf[Seq[Map[String, Any]]]
+ .map(x => {
+ if (measureType == MeasureTypes.Profiling)
+ x.head
+ else
+ x(MetricName).toString -> x(MetricValue)
+ })
+ .toMap
+
+ CustomSinkResultRegister.setMetrics(measureName, value)
+
allMetrics ++= metrics
}
override def sinkBatchRecords(dataset: DataFrame, key: Option[String] = None): Unit = {
+ CustomSinkResultRegister.setBatch(key.get, dataset.toJSON.collect())
allRecords ++= dataset.toJSON.rdd.collect()
}
}
+
+/**
+ * Register for storing test sink results in memory
+ */
+object CustomSinkResultRegister {
+
+ val _metricsSink: mutable.Map[String, Map[String, Any]] = mutable.HashMap.empty
+ private val _batchSink: mutable.Map[String, Array[String]] = mutable.HashMap.empty
+
+ def setMetrics(key: String, metrics: Map[String, Any]): Unit = {
+ val updatedMetrics = _metricsSink.getOrElse(key, Map.empty) ++ metrics
+ _metricsSink.put(key, updatedMetrics)
+ }
+
+ def getMetrics(key: String): Option[Map[String, Any]] = _metricsSink.get(key)
+
+ def setBatch(key: String, batch: Array[String]): Unit = {
+ val updatedBatch = _batchSink.getOrElse(key, Array.empty) ++ batch
+ _batchSink.put(key, updatedBatch)
+ }
+
+ def getBatch(key: String): Option[Array[String]] = _batchSink.get(key)
+
+ def clear(): Unit = {
+ _metricsSink.clear()
+ _batchSink.clear()
+ }
+
+}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/sink/CustomSinkTest.scala b/measure/src/test/scala/org/apache/griffin/measure/sink/CustomSinkTest.scala
index 8bf81b1..f8d9de1 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/sink/CustomSinkTest.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/sink/CustomSinkTest.scala
@@ -19,10 +19,13 @@
import scala.collection.mutable
-import org.apache.griffin.measure.configuration.dqdefinition.{RuleOutputParam, SinkParam}
-import org.apache.griffin.measure.configuration.enums.FlattenType.DefaultFlattenType
-import org.apache.griffin.measure.step.write.{MetricFlushStep, MetricWriteStep, RecordWriteStep}
+import org.apache.spark.sql.functions._
+import org.apache.griffin.measure.configuration.dqdefinition._
+import org.apache.griffin.measure.configuration.enums.FlattenType.DefaultFlattenType
+import org.apache.griffin.measure.configuration.enums.MeasureTypes
+import org.apache.griffin.measure.execution.Measure._
+import org.apache.griffin.measure.step.write.{MetricFlushStep, MetricWriteStep, RecordWriteStep}
class CustomSinkTest extends SinkTestBase {
val sinkParam: SinkParam =
@@ -40,29 +43,36 @@
}
"custom sink" can "sink metrics" in {
- val actualMetrics = withCustomSink(sinks => {
+ val measureName = "test_measure"
+ withCustomSink(sinks => {
sinks.foreach { sink =>
try {
- sink.sinkMetrics(Map("sum" -> 10))
+ sink.sinkMetrics(
+ Map(
+ MeasureName -> measureName,
+ Metrics -> Seq(Map(MetricName -> "sum", MetricValue -> "10"))))
} catch {
case e: Throwable => error(s"sink metrics error: ${e.getMessage}", e)
}
}
+
sinks.foreach { sink =>
try {
- sink.sinkMetrics(Map("count" -> 5))
+ sink.sinkMetrics(
+ Map(
+ MeasureName -> measureName,
+ Metrics -> Seq(Map(MetricName -> "count", MetricValue -> "5"))))
} catch {
case e: Throwable => error(s"sink metrics error: ${e.getMessage}", e)
}
}
- sinks.headOption match {
- case Some(sink: CustomSink) => sink.allMetrics
- case _ => Map.empty
- }
})
- val expected = Map("sum" -> 10, "count" -> 5)
- actualMetrics should be(expected)
+ val actualMetricsOpt = CustomSinkResultRegister.getMetrics(measureName)
+ assert(actualMetricsOpt.isDefined)
+
+ val expected = Map("sum" -> "10", "count" -> "5")
+ actualMetricsOpt.get should contain theSameElementsAs expected
}
"custom sink" can "sink records" in {
@@ -134,33 +144,44 @@
"MetricWriteStep" should "output default metrics with custom sink" in {
val resultTable = "result_table"
val df = createDataFrame(1 to 5)
- df.groupBy("sex")
- .agg("age" -> "max", "age" -> "avg")
- .createOrReplaceTempView(resultTable)
+
+ val metricCols =
+ Seq("sex", "max_age", "avg_age").map(c =>
+ map(lit(MetricName), lit(c), lit(MetricValue), col(c)))
+
+ val metricDf = df
+ .groupBy("sex")
+ .agg(max("age").as("max_age"), avg("age").as("avg_age"))
+ .select(array(metricCols: _*).as("metrics"))
+ .select("metrics")
+
+ metricDf.createOrReplaceTempView(resultTable)
val dQContext = getDqContext()
- val metricWriteStep = {
- val metricOpt = Some(metricsDefaultOutput)
- val mwName = metricOpt.flatMap(_.getNameOpt).getOrElse("default_metrics_name")
- val flattenType = metricOpt.map(_.getFlatten).getOrElse(DefaultFlattenType)
- MetricWriteStep(mwName, resultTable, flattenType)
- }
+ val metricWriteStep = MetricWriteStep("metrics", resultTable, DefaultFlattenType)
+
+ val mp = MeasureParam(
+ metricWriteStep.name,
+ MeasureTypes.Profiling.toString,
+ metricWriteStep.inputName)
metricWriteStep.execute(dQContext)
- MetricFlushStep().execute(dQContext)
- val actualMetrics = dQContext.getSinks.headOption match {
- case Some(sink: CustomSink) => sink.allMetrics
- case _ => mutable.Map[String, Any]()
- }
+ MetricFlushStep(Some(mp)).execute(dQContext)
- val metricsValue = Seq(
- Map("sex" -> "man", "max(age)" -> 19, "avg(age)" -> 18.0),
- Map("sex" -> "women", "max(age)" -> 20, "avg(age)" -> 18.0))
+ val expectedMetrics = Array(
+ Map("metric_name" -> "sex", "metric_value" -> "man"),
+ Map("metric_name" -> "max_age", "metric_value" -> "19"),
+ Map("metric_name" -> "avg_age", "metric_value" -> "18.0"))
- val expected = Map("default_output" -> metricsValue)
+ val actualMetricsOpt = CustomSinkResultRegister.getMetrics(metricWriteStep.name)
+ assert(actualMetricsOpt.isDefined)
- actualMetrics("value") should be(expected)
+ val actualMetricsMap: Map[String, Any] = actualMetricsOpt.get
+ assert(actualMetricsMap.contains("metrics"))
+
+ val actualMetrics = actualMetricsMap("metrics").asInstanceOf[Seq[Map[String, String]]]
+ actualMetrics should contain theSameElementsAs expectedMetrics
}
}
diff --git a/measure/src/test/scala/org/apache/griffin/measure/transformations/AccuracyTransformationsIntegrationTest.scala b/measure/src/test/scala/org/apache/griffin/measure/transformations/AccuracyTransformationsIntegrationTest.scala
index 5b019a5..960dce7 100644
--- a/measure/src/test/scala/org/apache/griffin/measure/transformations/AccuracyTransformationsIntegrationTest.scala
+++ b/measure/src/test/scala/org/apache/griffin/measure/transformations/AccuracyTransformationsIntegrationTest.scala
@@ -87,6 +87,7 @@
val dqContext: DQContext = getDqContext(dataSourcesParam = List(
DataSourceParam(name = "source", connector = dataConnectorParam(tableName = sourceName)),
DataSourceParam(name = "target", connector = dataConnectorParam(tableName = targetName))))
+ dqContext.loadDataSources()
val accuracyRule = RuleParam(
dslType = "griffin-dsl",