From c61ee322c134fb9d79cda50b2650f59d94e50190 Mon Sep 17 00:00:00 2001 From: Maxim Sukharev Date: Tue, 11 Jun 2019 18:29:36 +0200 Subject: [PATCH] Update welcome dashboard with real charts Only gitbase based charts: - Repository Count - Languages - Commits Evolution - Repositories by number of files - Number of commits per day of the week - Compliance score - Missing files - Files missing summary All of them transfered manually from demo. I put all of them on the same dashboard without splitting into tabs because there are just few of them. We can re-arrange when we have more. Fix: #102 Signed-off-by: Maxim Sukharev --- srcd/dashboards/placeholder.json | 182 --- srcd/dashboards/welcome.json | 1805 ++++++++++++++++++++++++++++++ 2 files changed, 1805 insertions(+), 182 deletions(-) delete mode 100644 srcd/dashboards/placeholder.json create mode 100644 srcd/dashboards/welcome.json diff --git a/srcd/dashboards/placeholder.json b/srcd/dashboards/placeholder.json deleted file mode 100644 index e2248296..00000000 --- a/srcd/dashboards/placeholder.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "dashboards": [ - { - "__Dashboard__": { - "changed_by_fk": 1, - "slug": null, - "css": "", - "position_json": "{\"CHART-bludb6lGd_\":{\"children\":[],\"id\":\"CHART-bludb6lGd_\",\"meta\":{\"chartId\":1,\"height\":51,\"sliceName\":\"Repositories\",\"width\":6},\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"GRID_ID\":{\"children\":[\"ROW-N5UuVDakww\"],\"id\":\"GRID_ID\",\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Welcome\"},\"type\":\"HEADER\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-N5UuVDakww\":{\"children\":[\"CHART-bludb6lGd_\"],\"id\":\"ROW-N5UuVDakww\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"type\":\"ROW\"}}", - "id": 1, - "changed_on": { - "__datetime__": "2019-05-24T16:06:01" - }, - "created_by_fk": 1, - "json_metadata": "{\"filter_immune_slices\": [], \"timed_refresh_immune_slices\": [], \"filter_immune_slice_fields\": {}, \"expanded_slices\": {}, \"default_filters\": \"{}\", \"remote_id\": 1}", - "description": null, - "dashboard_title": "Welcome", - "created_on": { - "__datetime__": "2019-05-24T16:03:48" - }, - "slices": [ - { - "__Slice__": { - "params": "{\"adhoc_filters\": [], \"align_pn\": false, \"all_columns\": [\"repository_id\"], \"color_pn\": true, \"datasource\": \"10__table\", \"granularity_sqla\": null, \"groupby\": [], \"include_search\": false, \"include_time\": false, \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"page_length\": 0, \"percent_metrics\": [], \"row_limit\": 10000, \"table_filter\": false, \"table_timestamp_format\": \"%Y-%m-%d %H:%M:%S\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"Last week\", \"timeseries_limit_metric\": null, \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 1, \"datasource_name\": \"gitbase.repositories\", \"schema\": \"gitbase.repositories\", \"database_name\": \"gitbase\"}", - "datasource_name": "gitbase.repositories", - "datasource_id": 10, - "id": 1, - "created_on": { - "__datetime__": "2019-05-24T16:04:55" - }, - "changed_by_fk": 1, - "perm": "[gitbase].[gitbase.repositories](id:10)", - "description": null, - "viz_type": "table", - "datasource_type": "table", - "slice_name": "Repositories", - "changed_on": { - "__datetime__": "2019-05-24T16:07:09" - }, - "created_by_fk": 1, - "cache_timeout": null, - "owners": [ - { - "__User__": { - "active": true, - "changed_by_fk": null, - "email": "admin@fab.org", - "last_login": null, - "login_count": null, - "id": 1, - "fail_login_count": null, - "first_name": "admin", - "created_on": { - "__datetime__": "2019-05-24T16:03:07" - }, - "last_name": "user", - "changed_on": { - "__datetime__": "2019-05-24T16:03:07" - }, - "username": "admin", - "created_by_fk": null, - "password": "pbkdf2:sha256:50000$EXV9oBSR$95644dce243cd70e1042ac9b06706694e402422ed89a7005b67fbac3900a7e28" - } - } - ] - } - } - ] - } - } - ], - "datasources": [ - { - "__SqlaTable__": { - "default_endpoint": null, - "changed_by_fk": null, - "main_dttm_col": null, - "is_featured": false, - "database_id": 2, - "filter_select_enabled": false, - "fetch_values_predicate": null, - "offset": 0, - "schema": null, - "cache_timeout": null, - "created_on": { - "__datetime__": "2019-05-24T16:03:21" - }, - "sql": "select * from repositories", - "params": "{\"remote_id\": 10, \"database_name\": \"gitbase\"}", - "changed_on": { - "__datetime__": "2019-05-24T16:03:21" - }, - "is_sqllab_view": false, - "perm": "[gitbase].[gitbase.repositories](id:10)", - "id": 10, - "template_params": null, - "table_name": "gitbase.repositories", - "description": null, - "created_by_fk": null, - "database": { - "__Database__": { - "allow_multi_schema_metadata_fetch": false, - "cache_timeout": null, - "created_on": { - "__datetime__": "2019-05-24T16:03:20" - }, - "extra": "{\n \"metadata_params\": {},\n \"engine_params\": {},\n \"metadata_cache_timeout\": {},\n \"schemas_allowed_for_csv_upload\": []\n}\n", - "select_as_create_table_as": false, - "perm": "[gitbase].(id:2)", - "changed_on": { - "__datetime__": "2019-05-24T16:03:20" - }, - "expose_in_sqllab": true, - "id": 2, - "impersonate_user": false, - "allow_run_async": true, - "verbose_name": null, - "created_by_fk": null, - "allow_csv_upload": false, - "database_name": "gitbase", - "changed_by_fk": null, - "allow_ctas": false, - "sqlalchemy_uri": "mysql://root@gitbase:3306/gitbase", - "allow_dml": true, - "password": "", - "force_ctas_schema": null - } - }, - "metrics": [ - { - "__SqlMetric__": { - "id": 10, - "created_on": { - "__datetime__": "2019-05-24T16:03:21" - }, - "created_by_fk": null, - "table_id": 10, - "warning_text": null, - "is_restricted": false, - "metric_type": "count", - "metric_name": "count", - "changed_on": { - "__datetime__": "2019-05-24T16:03:21" - }, - "changed_by_fk": null, - "expression": "COUNT(*)", - "d3format": null, - "description": null, - "verbose_name": "COUNT(*)" - } - } - ], - "columns": [ - { - "__TableColumn__": { - "column_name": "repository_id", - "changed_on": { - "__datetime__": "2019-05-24T16:03:21" - }, - "created_by_fk": null, - "python_date_format": null, - "is_dttm": false, - "table_id": 10, - "filterable": false, - "type": "TEXT", - "verbose_name": null, - "id": 47, - "changed_by_fk": null, - "created_on": { - "__datetime__": "2019-05-24T16:03:21" - }, - "expression": "", - "database_expression": null, - "description": null, - "groupby": false, - "is_active": true - } - } - ] - } - } - ] -} \ No newline at end of file diff --git a/srcd/dashboards/welcome.json b/srcd/dashboards/welcome.json new file mode 100644 index 00000000..52ba3e30 --- /dev/null +++ b/srcd/dashboards/welcome.json @@ -0,0 +1,1805 @@ +{ + "dashboards": [ + { + "__Dashboard__": { + "position_json": "{\"CHART-041PHv_MRw\": {\"children\": [], \"id\": \"CHART-041PHv_MRw\", \"meta\": {\"chartId\": 5, \"height\": 50, \"sliceName\": \"Number of commits per day of the week\", \"width\": 4}, \"parents\": [\"ROOT_ID\", \"GRID_ID\", \"ROW-hD1w3jICYS\"], \"type\": \"CHART\"}, \"CHART-7z2IezcSwH\": {\"children\": [], \"id\": \"CHART-7z2IezcSwH\", \"meta\": {\"chartId\": 2, \"height\": 50, \"sliceName\": \"Languages\", \"width\": 4}, \"parents\": [\"ROOT_ID\", \"GRID_ID\", \"ROW-N5UuVDakww\"], \"type\": \"CHART\"}, \"CHART-AP66HrubVI\": {\"children\": [], \"id\": \"CHART-AP66HrubVI\", \"meta\": {\"chartId\": 3, \"height\": 50, \"sliceName\": \"Commits Evolution\", \"width\": 8}, \"parents\": [\"ROOT_ID\", \"GRID_ID\", \"ROW-hD1w3jICYS\"], \"type\": \"CHART\"}, \"CHART-IRl6a81IDe\": {\"children\": [], \"id\": \"CHART-IRl6a81IDe\", \"meta\": {\"chartId\": 6, \"height\": 50, \"sliceName\": \"Compliance score\", \"width\": 4}, \"parents\": [\"ROOT_ID\", \"GRID_ID\", \"ROW-ynQWyCPKih\"], \"type\": \"CHART\"}, \"CHART-QDR6YSJs6l\": {\"children\": [], \"id\": \"CHART-QDR6YSJs6l\", \"meta\": {\"chartId\": 1, \"height\": 50, \"sliceName\": \"Repository Count\", \"width\": 4}, \"parents\": [\"ROOT_ID\", \"GRID_ID\", \"ROW-N5UuVDakww\"], \"type\": \"CHART\"}, \"CHART-g3HfBmugbt\": {\"children\": [], \"id\": \"CHART-g3HfBmugbt\", \"meta\": {\"chartId\": 7, \"height\": 50, \"sliceName\": \"Missing files\", \"width\": 8}, \"parents\": [\"ROOT_ID\", \"GRID_ID\", \"ROW-ynQWyCPKih\"], \"type\": \"CHART\"}, \"CHART-hbx1LJ_mGN\": {\"children\": [], \"id\": \"CHART-hbx1LJ_mGN\", \"meta\": {\"chartId\": 8, \"height\": 14, \"sliceName\": \"Files missing summary\", \"width\": 12}, \"parents\": [\"ROOT_ID\", \"GRID_ID\", \"ROW-_9fTlWqXxA\"], \"type\": \"CHART\"}, \"CHART-mvtzip4PDs\": {\"children\": [], \"id\": \"CHART-mvtzip4PDs\", \"meta\": {\"chartId\": 4, \"height\": 50, \"sliceName\": \"Repositories by number of files\", \"width\": 4}, \"parents\": [\"ROOT_ID\", \"GRID_ID\", \"ROW-N5UuVDakww\"], \"type\": \"CHART\"}, \"DASHBOARD_VERSION_KEY\": \"v2\", \"GRID_ID\": {\"children\": [\"ROW-N5UuVDakww\", \"HEADER-iYAQf-B8KA\", \"ROW-hD1w3jICYS\", \"HEADER-hnogkcMo8S\", \"ROW-ynQWyCPKih\", \"ROW-_9fTlWqXxA\"], \"id\": \"GRID_ID\", \"parents\": [\"ROOT_ID\"], \"type\": \"GRID\"}, \"HEADER-hnogkcMo8S\": {\"children\": [], \"id\": \"HEADER-hnogkcMo8S\", \"meta\": {\"background\": \"BACKGROUND_TRANSPARENT\", \"headerSize\": \"MEDIUM_HEADER\", \"text\": \"Compliance metrics\"}, \"parents\": [\"ROOT_ID\", \"GRID_ID\"], \"type\": \"HEADER\"}, \"HEADER-iYAQf-B8KA\": {\"children\": [], \"id\": \"HEADER-iYAQf-B8KA\", \"meta\": {\"background\": \"BACKGROUND_TRANSPARENT\", \"headerSize\": \"MEDIUM_HEADER\", \"text\": \"Commit activity\"}, \"parents\": [\"ROOT_ID\", \"GRID_ID\"], \"type\": \"HEADER\"}, \"HEADER_ID\": {\"id\": \"HEADER_ID\", \"meta\": {\"text\": \"Welcome\"}, \"type\": \"HEADER\"}, \"ROOT_ID\": {\"children\": [\"GRID_ID\"], \"id\": \"ROOT_ID\", \"type\": \"ROOT\"}, \"ROW-N5UuVDakww\": {\"children\": [\"CHART-QDR6YSJs6l\", \"CHART-7z2IezcSwH\", \"CHART-mvtzip4PDs\"], \"id\": \"ROW-N5UuVDakww\", \"meta\": {\"background\": \"BACKGROUND_TRANSPARENT\"}, \"parents\": [\"ROOT_ID\", \"GRID_ID\"], \"type\": \"ROW\"}, \"ROW-_9fTlWqXxA\": {\"children\": [\"CHART-hbx1LJ_mGN\"], \"id\": \"ROW-_9fTlWqXxA\", \"meta\": {\"background\": \"BACKGROUND_TRANSPARENT\"}, \"parents\": [\"ROOT_ID\", \"GRID_ID\"], \"type\": \"ROW\"}, \"ROW-hD1w3jICYS\": {\"children\": [\"CHART-AP66HrubVI\", \"CHART-041PHv_MRw\"], \"id\": \"ROW-hD1w3jICYS\", \"meta\": {\"background\": \"BACKGROUND_TRANSPARENT\"}, \"parents\": [\"ROOT_ID\", \"GRID_ID\"], \"type\": \"ROW\"}, \"ROW-ynQWyCPKih\": {\"children\": [\"CHART-IRl6a81IDe\", \"CHART-g3HfBmugbt\"], \"id\": \"ROW-ynQWyCPKih\", \"meta\": {\"background\": \"BACKGROUND_TRANSPARENT\"}, \"parents\": [\"ROOT_ID\", \"GRID_ID\"], \"type\": \"ROW\"}}", + "id": 1, + "created_on": { + "__datetime__": "2019-06-11T16:26:18" + }, + "created_by_fk": null, + "json_metadata": "{\"filter_immune_slices\": [], \"timed_refresh_immune_slices\": [], \"filter_immune_slice_fields\": {}, \"expanded_slices\": {}, \"default_filters\": \"{}\", \"remote_id\": 1, \"import_time\": 1560270376, \"refresh_frequency\": 0}", + "description": null, + "dashboard_title": "Welcome", + "changed_on": { + "__datetime__": "2019-06-11T16:26:18" + }, + "changed_by_fk": null, + "slug": null, + "css": "", + "slices": [ + { + "__Slice__": { + "id": 1, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "cache_timeout": null, + "description": null, + "viz_type": "big_number_total", + "datasource_type": "table", + "slice_name": "Repository Count", + "changed_on": { + "__datetime__": "2019-06-12T17:19:42" + }, + "changed_by_fk": null, + "perm": "[gitbase].[gitbase.repositories](id:10)", + "params": "{\"adhoc_filters\": [], \"datasource\": \"10__table\", \"granularity_sqla\": null, \"metric\": \"count\", \"slice_id\": 2, \"time_grain_sqla\": \"P1D\", \"time_range\": \"Last week\", \"url_params\": {}, \"viz_type\": \"big_number_total\", \"y_axis_format\": \".1s\", \"remote_id\": 1, \"datasource_name\": \"gitbase.repositories\", \"schema\": \"gitbase.repositories\", \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "datasource_name": "gitbase.repositories", + "datasource_id": 10, + "owners": [] + } + }, + { + "__Slice__": { + "id": 2, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "cache_timeout": null, + "description": null, + "viz_type": "pie", + "datasource_type": "table", + "slice_name": "Languages", + "changed_on": { + "__datetime__": "2019-06-12T17:19:42" + }, + "changed_by_fk": null, + "perm": "[gitbase].[admin admin-head_repo_languages-FJfWO1kQ4](id:16)", + "params": "{\"adhoc_filters\": [], \"color_scheme\": \"bnbColors\", \"datasource\": \"13__table\", \"donut\": true, \"granularity_sqla\": null, \"groupby\": [\"lang\"], \"labels_outside\": false, \"metric\": \"count\", \"number_format\": \".3s\", \"pie_label_type\": \"key\", \"row_limit\": 1000, \"show_labels\": true, \"show_legend\": false, \"slice_id\": 3, \"time_grain_sqla\": \"P1D\", \"time_range\": \"100 years ago : \", \"viz_type\": \"pie\", \"remote_id\": 2, \"datasource_name\": \"gitbase.admin admin-head_repo_languages-FJfWO1kQ4\", \"schema\": \"gitbase.admin admin-head_repo_languages-FJfWO1kQ4\", \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "datasource_name": "gitbase.admin admin-head_repo_languages-FJfWO1kQ4", + "datasource_id": 16, + "owners": [] + } + }, + { + "__Slice__": { + "id": 3, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "cache_timeout": null, + "description": null, + "viz_type": "area", + "datasource_type": "table", + "slice_name": "Commits Evolution", + "changed_on": { + "__datetime__": "2019-06-12T17:19:42" + }, + "changed_by_fk": null, + "perm": "[gitbase].[admin admin-commit_merges-8X2HBrQre](id:14)", + "params": "{\"adhoc_filters\": [], \"annotation_layers\": [], \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"comparison_type\": \"values\", \"contribution\": false, \"datasource\": \"14__table\", \"granularity_sqla\": \"commit_author_when\", \"groupby\": [\"commit_type\"], \"line_interpolation\": \"linear\", \"metrics\": [{\"aggregate\": null, \"column\": null, \"expressionType\": \"SQL\", \"fromFormData\": true, \"hasCustomLabel\": false, \"label\": \"COUNT(*)\", \"optionName\": \"metric_n4xn9emh55_60hid92bszp\", \"sqlExpression\": \"COUNT(*)\"}], \"order_desc\": true, \"resample_fillmethod\": null, \"resample_how\": null, \"resample_rule\": null, \"rich_tooltip\": true, \"rolling_type\": \"None\", \"row_limit\": 50000, \"show_brush\": \"auto\", \"show_controls\": false, \"show_legend\": true, \"slice_id\": 4, \"stacked_style\": \"stack\", \"time_grain_sqla\": \"P1M\", \"time_range\": \"100 years ago : \", \"timeseries_limit_metric\": null, \"viz_type\": \"area\", \"x_axis_format\": \"smart_date\", \"x_axis_label\": \"\", \"x_axis_showminmax\": false, \"x_ticks_layout\": \"auto\", \"y_axis_bounds\": [null, null], \"y_axis_format\": \".3s\", \"y_log_scale\": false, \"remote_id\": 3, \"datasource_name\": \"gitbase.admin admin-commit_merges-8X2HBrQre\", \"schema\": \"gitbase.admin admin-commit_merges-8X2HBrQre\", \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "datasource_name": "gitbase.admin admin-commit_merges-8X2HBrQre", + "datasource_id": 14, + "owners": [] + } + }, + { + "__Slice__": { + "id": 4, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "cache_timeout": null, + "description": null, + "viz_type": "table", + "datasource_type": "table", + "slice_name": "Repositories by number of files", + "changed_on": { + "__datetime__": "2019-06-12T17:19:42" + }, + "changed_by_fk": null, + "perm": "[gitbase].[admin admin-repo_files_count-XXcl9_d2Y](id:17)", + "params": "{\"adhoc_filters\": [], \"align_pn\": false, \"all_columns\": [\"repository_id\", \"files_count\"], \"color_pn\": true, \"datasource\": \"15__table\", \"granularity_sqla\": null, \"groupby\": [], \"include_search\": false, \"include_time\": false, \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"page_length\": 0, \"percent_metrics\": [], \"row_limit\": 10000, \"slice_id\": 5, \"table_filter\": false, \"table_timestamp_format\": \"%Y-%m-%d %H:%M:%S\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"100 years ago : \", \"timeseries_limit_metric\": null, \"viz_type\": \"table\", \"remote_id\": 4, \"datasource_name\": \"gitbase.admin admin-repo_files_count-XXcl9_d2Y\", \"schema\": \"gitbase.admin admin-repo_files_count-XXcl9_d2Y\", \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "datasource_name": "gitbase.admin admin-repo_files_count-XXcl9_d2Y", + "datasource_id": 17, + "owners": [] + } + }, + { + "__Slice__": { + "id": 5, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "cache_timeout": null, + "description": null, + "viz_type": "dist_bar", + "datasource_type": "table", + "slice_name": "Number of commits per day of the week", + "changed_on": { + "__datetime__": "2019-06-12T17:19:42" + }, + "changed_by_fk": null, + "perm": "[gitbase].[admin admin-commits_per_day-lGJ1u0Kbm](id:18)", + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"commit_type\"], \"contribution\": false, \"datasource\": \"16__table\", \"granularity_sqla\": null, \"groupby\": [\"day\"], \"metrics\": [\"count\"], \"order_bars\": true, \"reduce_x_ticks\": false, \"row_limit\": 50000, \"show_bar_value\": true, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 6, \"time_grain_sqla\": \"P1D\", \"time_range\": \"100 years ago : \", \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Day of the week\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \".3s\", \"y_axis_label\": \"Number of imports\", \"remote_id\": 5, \"datasource_name\": \"gitbase.admin admin-commits_per_day-lGJ1u0Kbm\", \"schema\": \"gitbase.admin admin-commits_per_day-lGJ1u0Kbm\", \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "datasource_name": "gitbase.admin admin-commits_per_day-lGJ1u0Kbm", + "datasource_id": 18, + "owners": [] + } + }, + { + "__Slice__": { + "id": 6, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "cache_timeout": null, + "description": null, + "viz_type": "big_number_total", + "datasource_type": "table", + "slice_name": "Compliance score", + "changed_on": { + "__datetime__": "2019-06-12T17:19:42" + }, + "changed_by_fk": null, + "perm": "[gitbase].[admin admin-compliance_score-ReDkKHp6n](id:12)", + "params": "{\"adhoc_filters\": [], \"datasource\": \"17__table\", \"granularity_sqla\": null, \"metric\": \"compliance\", \"slice_id\": 7, \"time_grain_sqla\": \"P1D\", \"time_range\": \"100 years ago : \", \"viz_type\": \"big_number_total\", \"y_axis_format\": \",.1%\", \"remote_id\": 6, \"datasource_name\": \"gitbase.admin admin-compliance_score-ReDkKHp6n\", \"schema\": \"gitbase.admin admin-compliance_score-ReDkKHp6n\", \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "datasource_name": "gitbase.admin admin-compliance_score-ReDkKHp6n", + "datasource_id": 12, + "owners": [] + } + }, + { + "__Slice__": { + "id": 7, + "created_on": { + "__datetime__": "2019-06-11T16:26:18" + }, + "created_by_fk": null, + "cache_timeout": null, + "description": null, + "viz_type": "table", + "datasource_type": "table", + "slice_name": "Missing files", + "changed_on": { + "__datetime__": "2019-06-12T17:19:42" + }, + "changed_by_fk": null, + "perm": "[gitbase].[admin admin-missing_files-Y0yDW8RN6](id:15)", + "params": "{\"adhoc_filters\": [], \"align_pn\": false, \"all_columns\": [\"repository_id\", \"changelog\", \"readme\", \"notice\", \"license\", \"contributing\", \"travis\", \"ci\", \"dockerfile\"], \"color_pn\": true, \"datasource\": \"18__table\", \"granularity_sqla\": null, \"groupby\": [], \"include_search\": false, \"include_time\": false, \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"page_length\": 0, \"percent_metrics\": [], \"row_limit\": 10000, \"slice_id\": 8, \"table_filter\": false, \"table_timestamp_format\": \"%Y-%m-%d %H:%M:%S\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"100 years ago : \", \"timeseries_limit_metric\": null, \"viz_type\": \"table\", \"remote_id\": 7, \"datasource_name\": \"gitbase.admin admin-missing_files-Y0yDW8RN6\", \"schema\": \"gitbase.admin admin-missing_files-Y0yDW8RN6\", \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "datasource_name": "gitbase.admin admin-missing_files-Y0yDW8RN6", + "datasource_id": 15, + "owners": [] + } + }, + { + "__Slice__": { + "id": 8, + "created_on": { + "__datetime__": "2019-06-11T16:26:18" + }, + "created_by_fk": null, + "cache_timeout": null, + "description": null, + "viz_type": "table", + "datasource_type": "table", + "slice_name": "Files missing summary", + "changed_on": { + "__datetime__": "2019-06-12T17:19:42" + }, + "changed_by_fk": null, + "perm": "[gitbase].[admin admin-missing_files_summary-YqNVbLHqJ](id:13)", + "params": "{\"adhoc_filters\": [], \"align_pn\": false, \"all_columns\": [\"changelog\", \"readme\", \"notice\", \"license\", \"contributing\", \"travis\", \"ci\", \"dockerfile\"], \"color_pn\": true, \"datasource\": \"19__table\", \"granularity_sqla\": null, \"groupby\": [], \"include_search\": false, \"include_time\": false, \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"page_length\": 0, \"percent_metrics\": [], \"row_limit\": 1000, \"slice_id\": 9, \"table_filter\": false, \"table_timestamp_format\": \"%Y-%m-%d %H:%M:%S\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"100 years ago : \", \"timeseries_limit_metric\": null, \"viz_type\": \"table\", \"remote_id\": 8, \"datasource_name\": \"gitbase.admin admin-missing_files_summary-YqNVbLHqJ\", \"schema\": \"gitbase.admin admin-missing_files_summary-YqNVbLHqJ\", \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "datasource_name": "gitbase.admin admin-missing_files_summary-YqNVbLHqJ", + "datasource_id": 13, + "owners": [] + } + } + ] + } + } + ], + "datasources": [ + { + "__SqlaTable__": { + "database_id": 2, + "is_featured": false, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "schema": "gitbase", + "offset": 0, + "created_on": { + "__datetime__": "2019-06-11T16:26:16" + }, + "sql": "SELECT \r\n SUM(changelog != 0) / COUNT(changelog) as changelog, \r\n SUM(readme != 0) / COUNT(changelog) as readme, \r\n SUM(notice != 0) / COUNT(changelog) as notice, \r\n SUM(license != 0) / COUNT(changelog) as license,\r\n SUM(contributing != 0) / COUNT(changelog) as contributing,\r\n SUM(travis != 0) / COUNT(changelog) as travis, \r\n SUM(ci != 0) / COUNT(changelog) as ci, \r\n SUM(dockerfile != 0) / COUNT(changelog) as dockerfile \r\nFROM (\r\n SELECT \r\n SUM(changelog) as changelog, \r\n SUM(readme) as readme, \r\n SUM(notice) as notice, \r\n SUM(license) as license,\r\n SUM(contributing) as contributing,\r\n SUM(travis) as travis,\r\n SUM(ci) as ci,\r\n SUM(dockerfile) as dockerfile\r\n FROM (\r\n SELECT \r\n refs.repository_id, \r\n CASE WHEN file_path REGEXP '(?i)^CHANGELOG(|\\.MD)' THEN 1 ELSE 0 END AS changelog,\r\n CASE WHEN file_path REGEXP '(?i)^README(|\\.MD)' THEN 1 ELSE 0 END AS readme,\r\n CASE WHEN file_path REGEXP '(?i)^NOTICE(|\\.MD)' THEN 1 ELSE 0 END AS notice,\r\n CASE WHEN file_path REGEXP '(?i)^LICENSE(|\\.MD)' THEN 1 ELSE 0 END AS license,\r\n CASE WHEN file_path REGEXP '(?i)^CONTRIBUTING(|\\.MD)' THEN 1 ELSE 0 END AS contributing,\r\n CASE WHEN file_path REGEXP '(?i)^\\.TRAVIS\\.YML' THEN 1 ELSE 0 END AS travis,\r\n CASE WHEN file_path REGEXP '(?i)^CI' THEN 1 ELSE 0 END AS ci,\r\n CASE WHEN file_path REGEXP '(?i)^DOCKERFILE$' THEN 1 ELSE 0 END AS dockerfile\r\n FROM refs\r\n JOIN commit_files \r\n ON refs.commit_hash = commit_files.commit_hash \r\n WHERE ref_name = \"refs/heads/master\" \r\n ) q\r\n GROUP BY repository_id\r\n) q2", + "cache_timeout": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "is_sqllab_view": false, + "params": "{\"remote_id\": 12, \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "id": 12, + "template_params": "{}", + "perm": "[gitbase].[admin admin-compliance_score-ReDkKHp6n](id:12)", + "description": null, + "created_by_fk": null, + "table_name": "admin admin-compliance_score-ReDkKHp6n", + "default_endpoint": null, + "changed_by_fk": null, + "main_dttm_col": null, + "database": { + "__Database__": { + "expose_in_sqllab": true, + "changed_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "perm": "[gitbase].(id:2)", + "allow_run_async": true, + "id": 2, + "impersonate_user": false, + "allow_csv_upload": false, + "verbose_name": null, + "created_by_fk": null, + "allow_ctas": false, + "database_name": "gitbase", + "changed_by_fk": null, + "allow_dml": true, + "sqlalchemy_uri": "mysql://root@gitbase:3306/gitbase", + "force_ctas_schema": null, + "password": null, + "allow_multi_schema_metadata_fetch": false, + "cache_timeout": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "extra": "{\n \"metadata_params\": {},\n \"engine_params\": {},\n \"metadata_cache_timeout\": {},\n \"schemas_allowed_for_csv_upload\": []\n}\n", + "select_as_create_table_as": false + } + }, + "columns": [ + { + "__TableColumn__": { + "expression": "", + "table_id": 12, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "changelog", + "changed_on": { + "__datetime__": "2019-06-11T16:26:16" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 53, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:16" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 12, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "readme", + "changed_on": { + "__datetime__": "2019-06-11T16:26:16" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 54, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:16" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 12, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "notice", + "changed_on": { + "__datetime__": "2019-06-11T16:26:16" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 55, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:16" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 12, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "license", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 56, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:16" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 12, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "contributing", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 57, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 12, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "travis", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 58, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 12, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "ci", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 59, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 12, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "dockerfile", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 60, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + } + ], + "metrics": [ + { + "__SqlMetric__": { + "expression": "count(*)", + "warning_text": null, + "is_restricted": false, + "metric_type": null, + "metric_name": "count", + "created_on": { + "__datetime__": "2019-06-11T16:26:16" + }, + "id": 12, + "created_by_fk": null, + "table_id": 12, + "d3format": null, + "description": null, + "verbose_name": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:16" + }, + "changed_by_fk": null + } + }, + { + "__SqlMetric__": { + "expression": "(changelog + 3 * readme + 3 * notice + 3 * license + contributing + travis + ci + Dockerfile) / 14.0", + "warning_text": null, + "is_restricted": false, + "metric_type": null, + "metric_name": "compliance", + "created_on": { + "__datetime__": "2019-06-11T16:26:16" + }, + "id": 13, + "created_by_fk": null, + "table_id": 12, + "d3format": null, + "description": null, + "verbose_name": "compliance", + "changed_on": { + "__datetime__": "2019-06-11T16:26:16" + }, + "changed_by_fk": null + } + } + ] + } + }, + { + "__SqlaTable__": { + "database_id": 2, + "is_featured": false, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "schema": "gitbase", + "offset": 0, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "sql": "SELECT \r\n repository_id, \r\n CASE WHEN MAX(changelog) = 0 THEN 'missing' ELSE '' END as changelog, \r\n CASE WHEN MAX(readme) = 0 THEN 'missing' ELSE '' END as readme, \r\n CASE WHEN MAX(notice) = 0 THEN 'missing' ELSE '' END as notice, \r\n CASE WHEN MAX(license) = 0 THEN 'missing' ELSE '' END as license,\r\n CASE WHEN MAX(contributing) = 0 THEN 'missing' ELSE '' END as contributing,\r\n CASE WHEN MAX(travis) = 0 THEN 'missing' ELSE '' END as travis, \r\n CASE WHEN MAX(ci) = 0 THEN 'missing' ELSE '' END as ci, \r\n CASE WHEN MAX(dockerfile) = 0 THEN 'missing' ELSE '' END as dockerfile\r\nFROM (\r\n SELECT \r\n refs.repository_id, \r\n CASE WHEN file_path REGEXP '(?i)^CHANGELOG(|\\.MD)' THEN 1 ELSE 0 END AS changelog,\r\n CASE WHEN file_path REGEXP '(?i)^README(|\\.MD)' THEN 1 ELSE 0 END AS readme,\r\n CASE WHEN file_path REGEXP '(?i)^NOTICE(|\\.MD)' THEN 1 ELSE 0 END AS notice,\r\n CASE WHEN file_path REGEXP '(?i)^LICENSE(|\\.MD)' THEN 1 ELSE 0 END AS license,\r\n CASE WHEN file_path REGEXP '(?i)^CONTRIBUTING(|\\.MD)' THEN 1 ELSE 0 END AS contributing,\r\n CASE WHEN file_path REGEXP '(?i)^\\.TRAVIS\\.YML' THEN 1 ELSE 0 END AS travis,\r\n CASE WHEN file_path REGEXP '(?i)^CI' THEN 1 ELSE 0 END AS ci,\r\n CASE WHEN file_path REGEXP '(?i)^DOCKERFILE$' THEN 1 ELSE 0 END AS dockerfile\r\n FROM refs\r\n JOIN commit_files \r\n ON refs.commit_hash = commit_files.commit_hash \r\n WHERE ref_name = \"refs/heads/master\" \r\n) q\r\nGROUP BY repository_id", + "cache_timeout": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "is_sqllab_view": false, + "params": "{\"remote_id\": 15, \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "id": 15, + "template_params": "{}", + "perm": "[gitbase].[admin admin-missing_files-Y0yDW8RN6](id:15)", + "description": null, + "created_by_fk": null, + "table_name": "admin admin-missing_files-Y0yDW8RN6", + "default_endpoint": null, + "changed_by_fk": null, + "main_dttm_col": null, + "database": { + "__Database__": { + "expose_in_sqllab": true, + "changed_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "perm": "[gitbase].(id:2)", + "allow_run_async": true, + "id": 2, + "impersonate_user": false, + "allow_csv_upload": false, + "verbose_name": null, + "created_by_fk": null, + "allow_ctas": false, + "database_name": "gitbase", + "changed_by_fk": null, + "allow_dml": true, + "sqlalchemy_uri": "mysql://root@gitbase:3306/gitbase", + "force_ctas_schema": null, + "password": null, + "allow_multi_schema_metadata_fetch": false, + "cache_timeout": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "extra": "{\n \"metadata_params\": {},\n \"engine_params\": {},\n \"metadata_cache_timeout\": {},\n \"schemas_allowed_for_csv_upload\": []\n}\n", + "select_as_create_table_as": false + } + }, + "columns": [ + { + "__TableColumn__": { + "expression": "", + "table_id": 15, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "repository_id", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 72, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 15, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "changelog", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 73, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 15, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "readme", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 74, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 15, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "notice", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 75, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 15, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "license", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 76, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 15, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "contributing", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 77, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 15, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "travis", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 78, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 15, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "ci", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 79, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 15, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "dockerfile", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 80, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + } + ], + "metrics": [ + { + "__SqlMetric__": { + "expression": "count(*)", + "warning_text": null, + "is_restricted": false, + "metric_type": null, + "metric_name": "count", + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "id": 16, + "created_by_fk": null, + "table_id": 15, + "d3format": null, + "description": null, + "verbose_name": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "changed_by_fk": null + } + } + ] + } + }, + { + "__SqlaTable__": { + "database_id": 2, + "is_featured": false, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "schema": "gitbase", + "offset": 0, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "sql": "SELECT repository_id, COUNT(file_path) as files_count\r\nFROM refs\r\nNATURAL JOIN commit_files\r\nWHERE ref_name = 'HEAD'\r\nGROUP BY repository_id\r\nORDER BY files_count DESC", + "cache_timeout": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "is_sqllab_view": false, + "params": "{\"remote_id\": 17, \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "id": 17, + "template_params": "{}", + "perm": "[gitbase].[admin admin-repo_files_count-XXcl9_d2Y](id:17)", + "description": null, + "created_by_fk": null, + "table_name": "admin admin-repo_files_count-XXcl9_d2Y", + "default_endpoint": null, + "changed_by_fk": null, + "main_dttm_col": null, + "database": { + "__Database__": { + "expose_in_sqllab": true, + "changed_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "perm": "[gitbase].(id:2)", + "allow_run_async": true, + "id": 2, + "impersonate_user": false, + "allow_csv_upload": false, + "verbose_name": null, + "created_by_fk": null, + "allow_ctas": false, + "database_name": "gitbase", + "changed_by_fk": null, + "allow_dml": true, + "sqlalchemy_uri": "mysql://root@gitbase:3306/gitbase", + "force_ctas_schema": null, + "password": null, + "allow_multi_schema_metadata_fetch": false, + "cache_timeout": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "extra": "{\n \"metadata_params\": {},\n \"engine_params\": {},\n \"metadata_cache_timeout\": {},\n \"schemas_allowed_for_csv_upload\": []\n}\n", + "select_as_create_table_as": false + } + }, + "columns": [ + { + "__TableColumn__": { + "expression": "", + "table_id": 17, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "repository_id", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 83, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 17, + "filterable": true, + "type": "LONGLONG", + "verbose_name": null, + "database_expression": null, + "column_name": "files_count", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 84, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + } + ], + "metrics": [ + { + "__SqlMetric__": { + "expression": "count(*)", + "warning_text": null, + "is_restricted": false, + "metric_type": null, + "metric_name": "count", + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "id": 18, + "created_by_fk": null, + "table_id": 17, + "d3format": null, + "description": null, + "verbose_name": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "changed_by_fk": null + } + } + ] + } + }, + { + "__SqlaTable__": { + "database_id": 2, + "is_featured": false, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "schema": null, + "offset": 0, + "created_on": { + "__datetime__": "2019-06-11T16:26:12" + }, + "sql": "select * from repositories", + "cache_timeout": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "is_sqllab_view": false, + "params": "{\"remote_id\": 10, \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "id": 10, + "template_params": null, + "perm": "[gitbase].[gitbase.repositories](id:10)", + "description": null, + "created_by_fk": null, + "table_name": "gitbase.repositories", + "default_endpoint": null, + "changed_by_fk": null, + "main_dttm_col": null, + "database": { + "__Database__": { + "expose_in_sqllab": true, + "changed_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "perm": "[gitbase].(id:2)", + "allow_run_async": true, + "id": 2, + "impersonate_user": false, + "allow_csv_upload": false, + "verbose_name": null, + "created_by_fk": null, + "allow_ctas": false, + "database_name": "gitbase", + "changed_by_fk": null, + "allow_dml": true, + "sqlalchemy_uri": "mysql://root@gitbase:3306/gitbase", + "force_ctas_schema": null, + "password": null, + "allow_multi_schema_metadata_fetch": false, + "cache_timeout": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "extra": "{\n \"metadata_params\": {},\n \"engine_params\": {},\n \"metadata_cache_timeout\": {},\n \"schemas_allowed_for_csv_upload\": []\n}\n", + "select_as_create_table_as": false + } + }, + "columns": [ + { + "__TableColumn__": { + "expression": "", + "table_id": 10, + "filterable": false, + "type": "TEXT", + "verbose_name": null, + "database_expression": null, + "column_name": "repository_id", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": false, + "is_active": true, + "id": 47, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:12" + } + } + } + ], + "metrics": [ + { + "__SqlMetric__": { + "expression": "COUNT(*)", + "warning_text": null, + "is_restricted": false, + "metric_type": "count", + "metric_name": "count", + "created_on": { + "__datetime__": "2019-06-11T16:26:12" + }, + "id": 10, + "created_by_fk": null, + "table_id": 10, + "d3format": null, + "description": null, + "verbose_name": "COUNT(*)", + "changed_on": { + "__datetime__": "2019-06-11T16:26:12" + }, + "changed_by_fk": null + } + } + ] + } + }, + { + "__SqlaTable__": { + "database_id": 2, + "is_featured": false, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "schema": "gitbase", + "offset": 0, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "sql": "SELECT repository_id, lang\r\nFROM (\r\n SELECT\r\n repository_id,\r\n LANGUAGE(file_path) as lang\r\n FROM refs\r\n NATURAL JOIN commit_files\r\n WHERE ref_name = 'HEAD'\r\n) AS q\r\nWHERE lang NOT IN ('', 'Ignore List')", + "cache_timeout": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "is_sqllab_view": false, + "params": "{\"remote_id\": 16, \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "id": 16, + "template_params": "{}", + "perm": "[gitbase].[admin admin-head_repo_languages-FJfWO1kQ4](id:16)", + "description": null, + "created_by_fk": null, + "table_name": "admin admin-head_repo_languages-FJfWO1kQ4", + "default_endpoint": null, + "changed_by_fk": null, + "main_dttm_col": null, + "database": { + "__Database__": { + "expose_in_sqllab": true, + "changed_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "perm": "[gitbase].(id:2)", + "allow_run_async": true, + "id": 2, + "impersonate_user": false, + "allow_csv_upload": false, + "verbose_name": null, + "created_by_fk": null, + "allow_ctas": false, + "database_name": "gitbase", + "changed_by_fk": null, + "allow_dml": true, + "sqlalchemy_uri": "mysql://root@gitbase:3306/gitbase", + "force_ctas_schema": null, + "password": null, + "allow_multi_schema_metadata_fetch": false, + "cache_timeout": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "extra": "{\n \"metadata_params\": {},\n \"engine_params\": {},\n \"metadata_cache_timeout\": {},\n \"schemas_allowed_for_csv_upload\": []\n}\n", + "select_as_create_table_as": false + } + }, + "columns": [ + { + "__TableColumn__": { + "expression": "", + "table_id": 16, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "repository_id", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 81, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 16, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "lang", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 82, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + } + ], + "metrics": [ + { + "__SqlMetric__": { + "expression": "count(*)", + "warning_text": null, + "is_restricted": false, + "metric_type": null, + "metric_name": "count", + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "id": 17, + "created_by_fk": null, + "table_id": 16, + "d3format": null, + "description": null, + "verbose_name": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "changed_by_fk": null + } + } + ] + } + }, + { + "__SqlaTable__": { + "database_id": 2, + "is_featured": false, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "schema": "gitbase", + "offset": 0, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "sql": "SELECT\r\n repository_id,\r\n commit_author_when,\r\n CASE ARRAY_LENGTH(commit_parents) WHEN 0 THEN 'Commit' WHEN 1 THEN 'Commit' ELSE 'Merge' END AS commit_type\r\nFROM commits", + "cache_timeout": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "is_sqllab_view": false, + "params": "{\"remote_id\": 14, \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "id": 14, + "template_params": "{}", + "perm": "[gitbase].[admin admin-commit_merges-8X2HBrQre](id:14)", + "description": null, + "created_by_fk": null, + "table_name": "admin admin-commit_merges-8X2HBrQre", + "default_endpoint": null, + "changed_by_fk": null, + "main_dttm_col": null, + "database": { + "__Database__": { + "expose_in_sqllab": true, + "changed_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "perm": "[gitbase].(id:2)", + "allow_run_async": true, + "id": 2, + "impersonate_user": false, + "allow_csv_upload": false, + "verbose_name": null, + "created_by_fk": null, + "allow_ctas": false, + "database_name": "gitbase", + "changed_by_fk": null, + "allow_dml": true, + "sqlalchemy_uri": "mysql://root@gitbase:3306/gitbase", + "force_ctas_schema": null, + "password": null, + "allow_multi_schema_metadata_fetch": false, + "cache_timeout": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "extra": "{\n \"metadata_params\": {},\n \"engine_params\": {},\n \"metadata_cache_timeout\": {},\n \"schemas_allowed_for_csv_upload\": []\n}\n", + "select_as_create_table_as": false + } + }, + "columns": [ + { + "__TableColumn__": { + "expression": "", + "table_id": 14, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "repository_id", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 69, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 14, + "filterable": true, + "type": "TIMESTAMP", + "verbose_name": null, + "database_expression": null, + "column_name": "commit_author_when", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": true, + "description": null, + "groupby": true, + "is_active": true, + "id": 70, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 14, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "commit_type", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 71, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + } + ], + "metrics": [ + { + "__SqlMetric__": { + "expression": "count(*)", + "warning_text": null, + "is_restricted": false, + "metric_type": null, + "metric_name": "count", + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "id": 15, + "created_by_fk": null, + "table_id": 14, + "d3format": null, + "description": null, + "verbose_name": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "changed_by_fk": null + } + } + ] + } + }, + { + "__SqlaTable__": { + "database_id": 2, + "is_featured": false, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "schema": "gitbase", + "offset": 0, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "sql": "SELECT\r\n repo,\r\n CASE\r\n WHEN day_index = 2 THEN '1 - Monday'\r\n WHEN day_index = 3 THEN '2 - Tuesday'\r\n WHEN day_index = 4 THEN '3 - Wednesday'\r\n WHEN day_index = 5 THEN '4 - Thursday'\r\n WHEN day_index = 6 THEN '5 - Friday'\r\n WHEN day_index = 7 THEN '6 - Saturday'\r\n ELSE '7 - Sunday'\r\n END AS day,\r\n CASE\r\n WHEN n_parents > 1 THEN 'Merge commit'\r\n ELSE 'Non-merge commit'\r\n END AS commit_type\r\nFROM (\r\n SELECT\r\n repository_id AS repo,\r\n DAYOFWEEK(committer_when) AS day_index,\r\n ARRAY_LENGTH(commit_parents) AS n_parents\r\n FROM commits\r\n) t", + "cache_timeout": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "is_sqllab_view": false, + "params": "{\"remote_id\": 18, \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "id": 18, + "template_params": "{}", + "perm": "[gitbase].[admin admin-commits_per_day-lGJ1u0Kbm](id:18)", + "description": null, + "created_by_fk": null, + "table_name": "admin admin-commits_per_day-lGJ1u0Kbm", + "default_endpoint": null, + "changed_by_fk": null, + "main_dttm_col": null, + "database": { + "__Database__": { + "expose_in_sqllab": true, + "changed_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "perm": "[gitbase].(id:2)", + "allow_run_async": true, + "id": 2, + "impersonate_user": false, + "allow_csv_upload": false, + "verbose_name": null, + "created_by_fk": null, + "allow_ctas": false, + "database_name": "gitbase", + "changed_by_fk": null, + "allow_dml": true, + "sqlalchemy_uri": "mysql://root@gitbase:3306/gitbase", + "force_ctas_schema": null, + "password": null, + "allow_multi_schema_metadata_fetch": false, + "cache_timeout": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "extra": "{\n \"metadata_params\": {},\n \"engine_params\": {},\n \"metadata_cache_timeout\": {},\n \"schemas_allowed_for_csv_upload\": []\n}\n", + "select_as_create_table_as": false + } + }, + "columns": [ + { + "__TableColumn__": { + "expression": "", + "table_id": 18, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "repo", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 85, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 18, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "day", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 86, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 18, + "filterable": true, + "type": "BLOB", + "verbose_name": null, + "database_expression": null, + "column_name": "commit_type", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 87, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + } + ], + "metrics": [ + { + "__SqlMetric__": { + "expression": "count(*)", + "warning_text": null, + "is_restricted": false, + "metric_type": null, + "metric_name": "count", + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "id": 19, + "created_by_fk": null, + "table_id": 18, + "d3format": null, + "description": null, + "verbose_name": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "changed_by_fk": null + } + } + ] + } + }, + { + "__SqlaTable__": { + "database_id": 2, + "is_featured": false, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "schema": "gitbase", + "offset": 0, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "sql": "SELECT \r\n SUM(1-changelog) as changelog, \r\n SUM(1-readme) as readme, \r\n SUM(1-notice) as notice, \r\n SUM(1-license) as license,\r\n SUM(1-contributing) as contributing,\r\n SUM(1-travis) as travis,\r\n SUM(1-ci) as ci,\r\n SUM(1-dockerfile) as dockerfile\r\nFROM (\r\n\tSELECT \r\n\t repository_id, \r\n\t SUM(changelog) != 0 as changelog, \r\n SUM(readme) != 0 as readme, \r\n SUM(notice) != 0 as notice, \r\n SUM(license) != 0 as license,\r\n SUM(contributing) != 0 as contributing,\r\n SUM(travis) != 0 as travis,\r\n SUM(ci) != 0 as ci,\r\n \tSUM(dockerfile) != 0 as dockerfile\r\n\tFROM (\r\n\t SELECT \r\n\t refs.repository_id, \r\n\t CASE WHEN file_path REGEXP '(?i)^CHANGELOG(|\\.MD)' THEN 1 ELSE 0 END AS changelog,\r\n CASE WHEN file_path REGEXP '(?i)^README(|\\.MD)' THEN 1 ELSE 0 END AS readme,\r\n CASE WHEN file_path REGEXP '(?i)^NOTICE(|\\.MD)' THEN 1 ELSE 0 END AS notice,\r\n CASE WHEN file_path REGEXP '(?i)^LICENSE(|\\.MD)' THEN 1 ELSE 0 END AS license,\r\n CASE WHEN file_path REGEXP '(?i)^CONTRIBUTING(|\\.MD)' THEN 1 ELSE 0 END AS contributing,\r\n CASE WHEN file_path REGEXP '(?i)^\\.TRAVIS\\.YML' THEN 1 ELSE 0 END AS travis,\r\n CASE WHEN file_path REGEXP '(?i)^CI' THEN 1 ELSE 0 END AS ci,\r\n CASE WHEN file_path REGEXP '(?i)^DOCKERFILE$' THEN 1 ELSE 0 END AS dockerfile\r\n\t FROM refs\r\n\t JOIN commit_files \r\n\t ON refs.commit_hash = commit_files.commit_hash \r\n\t WHERE ref_name = \"refs/heads/master\" \r\n\t) q\r\n\tGROUP BY repository_id\r\n) q2\r", + "cache_timeout": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "is_sqllab_view": false, + "params": "{\"remote_id\": 13, \"database_name\": \"gitbase\", \"import_time\": 1560270376}", + "id": 13, + "template_params": "{}", + "perm": "[gitbase].[admin admin-missing_files_summary-YqNVbLHqJ](id:13)", + "description": null, + "created_by_fk": null, + "table_name": "admin admin-missing_files_summary-YqNVbLHqJ", + "default_endpoint": null, + "changed_by_fk": null, + "main_dttm_col": null, + "database": { + "__Database__": { + "expose_in_sqllab": true, + "changed_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "perm": "[gitbase].(id:2)", + "allow_run_async": true, + "id": 2, + "impersonate_user": false, + "allow_csv_upload": false, + "verbose_name": null, + "created_by_fk": null, + "allow_ctas": false, + "database_name": "gitbase", + "changed_by_fk": null, + "allow_dml": true, + "sqlalchemy_uri": "mysql://root@gitbase:3306/gitbase", + "force_ctas_schema": null, + "password": null, + "allow_multi_schema_metadata_fetch": false, + "cache_timeout": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:11" + }, + "extra": "{\n \"metadata_params\": {},\n \"engine_params\": {},\n \"metadata_cache_timeout\": {},\n \"schemas_allowed_for_csv_upload\": []\n}\n", + "select_as_create_table_as": false + } + }, + "columns": [ + { + "__TableColumn__": { + "expression": "", + "table_id": 13, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "changelog", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 61, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 13, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "readme", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 62, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 13, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "notice", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 63, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 13, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "license", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 64, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 13, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "contributing", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 65, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 13, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "travis", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 66, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 13, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "ci", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 67, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + }, + { + "__TableColumn__": { + "expression": "", + "table_id": 13, + "filterable": true, + "type": "DOUBLE", + "verbose_name": null, + "database_expression": null, + "column_name": "dockerfile", + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "created_by_fk": null, + "python_date_format": null, + "is_dttm": false, + "description": null, + "groupby": true, + "is_active": true, + "id": 68, + "changed_by_fk": null, + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + } + } + } + ], + "metrics": [ + { + "__SqlMetric__": { + "expression": "count(*)", + "warning_text": null, + "is_restricted": false, + "metric_type": null, + "metric_name": "count", + "created_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "id": 14, + "created_by_fk": null, + "table_id": 13, + "d3format": null, + "description": null, + "verbose_name": null, + "changed_on": { + "__datetime__": "2019-06-11T16:26:17" + }, + "changed_by_fk": null + } + } + ] + } + } + ] +}