Repository: incubator-griffin Updated Branches: refs/heads/master 4a9137d2e -> 43fe60862
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/43fe6086/griffin-doc/ui/test-case.md ---------------------------------------------------------------------- diff --git a/griffin-doc/ui/test-case.md b/griffin-doc/ui/test-case.md index 3b703eb..f872702 100644 --- a/griffin-doc/ui/test-case.md +++ b/griffin-doc/ui/test-case.md @@ -19,60 +19,44 @@ under the License. #Functional Test cases -|TestCase ID|Test Page|Test Case Description|Test Case Steps|Test Data|Expected Result|Actual Result|Test Result|Jira Bug ID| -|---|---|---|---|---|---|---|---|---| -|0101|login page|invalid corp id - check user cannot login the system with invalid corp id.|1. Input invalid corp id.<br>2. Input password.<br>3. click 'log in' button.||1. login failed.||Passed|| -|0102|login page|invalid password - check user cannot login the system with invalid password.|1. input valid corp id.<br>2.input invalid password<br>3.click 'log in' button.||1. login failed.||Passed|| -|0103|login page|valid corp id and passoword - check user can login the system with valid corp id and password.|1. Input the corp id and password.<br>2 click 'log in' button.||1. login succesfully||Passed|| -|0104|login page|remember password|1. Input the corp id and password.<br>2. select 'remember password'.<br>3.click 'log in' button.<br>4. close the brower.<br>5. open the brower again.<br>6. visit the griffin page.||1.the id and password are valid.<br>2.'remember password' is checked.<br>3.logged in the griffin homepage.<br>4.the brower is closed.<br>5.the brower is reopened.<br>6.the griffin homepage is opened, instead of the login page.||Passed|| -|0105|login page|not remember password|1. Input the corp id and password.<br>2. unselect 'remember password'.<br>3.click 'log in' button.<br>4. close the brower.<br>5. open the brower again.<br>6. visit the griffin page.||1.the id and password are valid.<br>2.'remember password' is unchecked.<br>3.logged in the griffin homepage.<br>4.the brower is closed.<br>5.the brower is reopened.<br>6.the login page is opened.||Passed|| -|0201|main page|menu bar - check all links in the menu work.|1. click 'health'.<br>2. click 'models'.<br>3.click 'Data profiling'.<br>4. click your username -> 'API Docs'.||1.show 'health' page.<br>2.show 'models' page.<br>3.show 'data profiling' page<br>4.open new page for API page.||Passed|| -|0202|main page|menu bar - search|1.input a word in the search box.<br>2.do search.||1. show search result.|unimplemented||| -|0203|main page|menu bar - user profile|1. click username -> 'user profile'||1. show user profile page|unimplemented||| -|0204|main page|menu bar - setting|1. click username -> 'setting'||1. show setting page.|unimplemented||| -|0205|main page|right side - DataAssets|1. click '*** DataAssets' link||1.show the data assets page.||Passed|| -|0206|main page|right side - DQ Metrics|1. click '*** DQ Metrics' link.||1. show DQ Metrics page||Passed|| -|0207|main page|right side - health percentage |1. check the pie for the health percentage.||1. show the health percentage.||Passed|| -|0208|main page|right side - issue tracking|1. click 'issue tracking'||1. show 'issue tracking' page|unimplemented||| -|0209|main page|right side - statistics for the DQ data.|1. check the DQ data with the name, last updated time, and the data quality.<br>2. show more for one item, check the dq trend chart. <br>3. click the chart.<br>4. close the zoomed-in chart.||1.show all the dq data.<br>2.show the latest dq trend chart for the item.<br>3.the dq chart is zoomed in.<br>4.the zoomed-in chart is closed.||Passed|| -|0210|main page|right side - report issue.|1. click 'Report issue'||1. open the jira page.||Passed|| -|0301|health page|heatmap|1. open 'heatmap' tab.<br>2. check the data quality metrics heatmap.<br>3. click inside the heatmap.||1.show the heatmap.<br>2.all the data are shown successfully.<br>3.show the metrics page.||Passed|| -|0302|health page|Topology|1. open 'Topology' tab.<br>2. check the data.||1. show topology.|unimplemented||| -|0303|health page|check the UI layout when the page is zoomed in and out.|1.zoom in the page.<br>2.zoom out the page.||1. display the page correctly.||Passed|| -|0401|metrics page|check metrics data|1. check the dq charts for the metrics.<br>2. click one chart.||1. all the data in the dq charts are correct.<br>2. the chart is zoomed in.||Passed|| -|0402|metrics page|Download Sample|1. click 'download sample'.||1. the sample is downloaded to the local path.|unimplemented||| -|0403|metrics page|Profiling|1. click 'profiling'||1. show 'profiling'|unimplemented||| -|0404|metrics page|check the UI layout when the page is zoomed in and out.|1.zoom in the page.<br>2.zoom out the page.||1. display the page correctly.||Passed|| -|0501|models page|check the models data|1. check all the columns are correct or not.<br>2. click one model name.||1. all the data are correct.<br>2. show more information of the model.||Passed|| -|0502|models page|edit model|1. click 'edit' icon.||1. open the edit page.|unimplemented||| -|0503|models page|delete model|1. click 'delete' icon for one model.<br>2. confirm to delete the model.||1. open delete confirmation page.<br>2. the model is removed from the models table.||Passed|| -|0504|models page|subscribe|1. click 'subscribe' icon for one model.||1. open subscribe page|unimplemented||| -|0505|models page|table paging|1. click other pages in the models table.||1.all the data in other pages are show correctly.||Passed|| -|0506|models page|create DQ model|1. click 'create DQ model' button||1. open 'create DQ model' page.||Passed|| -|0507|models page|check the UI layout when the page is zoomed in and out.|1.zoom in the page.<br>2.zoom out the page.||1. display the page correctly.||Passed|| -|0601|create dq model - accuracy|create accuracy|1. click 'models' -> 'create DQ model' -> 'Accuracy'<br>2.choose the source. Select a schema, e.g. 'apollo -> Sojorner -> sog_search_event'.<br>3.select one or more attributes, e.g. uid, site_id.<br>4. click 'next'.<br>5. choose the target. Select a schema, e.g. 'appollo -> Bullseye -> adchoice_user_pref'.<br>6. select one or more attributes, e.g. user_id, scope.<br>7. click 'next'.<br>8. select a primary key, e.g. Bullseye.achoice_user_pref.user_id.<br>9. select 'Map To' exactly.<br>10. select a source field for each target.<br>11. click 'next'.<br>12. input the required information, e.g. model name 'atest', notification email 'a...@ebay.com'.<br>13.click 'submit'.<br>14. confirm to save.|source schema: 'apollo -> Sojorner -> sog_search_event'.<br>Source attributes: uid, site_id.<br>target schema: 'appollo -> Bullseye -> adchoice_user_pref'.<br>target attributes, e.g. user_id, scope.<br>primary key: Bullseye.achoice_user_pref.user_id.< br>model name: 'atest', <br>notification email: 'a...@ebay.com'.|1. open 'create accuracy' page.<br>2. the source shcema is selected. The corresponding attributes are shown in the attributes table.<br>3. the source attributes are selected.<br>4. go to 'choose target' step.<br>5. the target schema is selected. The corresponding attributes are shown in the attributes table.<br>6. the target attributes are selected.<br>7. go to 'mapping source and target' step.<br>8. the PK is selected.<br>9. exactly map to the source.<br>10. the source field is selected for each target.<br>11. go to 'configuration' step.<br>12. the required info are input correctly.<br>13. open a confirmation page.<br>14. the new model 'atest' is created. It is shown in the models table||Passed|| -|0602|create dq model - accuracy|show error message if no source attribute is selected.|1. click 'models' -> 'create DQ model' -> 'Accuracy'.<br>2. click 'next'||1. open 'create accuracy' page.<br>2. show error message to select at least one attribute.||Passed|| -|0603|create dq model - accuracy|show error message if no target attribute is selected.|1. click 'models' -> 'create DQ model' -> 'Accuracy'<br>2.choose the source. Select a schema, e.g. 'apollo -> Sojorner -> sog_search_event'.<br>3.select one or more attributes, e.g. uid, site_id.<br>4. click 'next'.<br>5. in the 'target' step, click 'next'.|source schema: 'apollo -> Sojorner -> sog_search_event'.<br>Source attributes: uid, site_id.|"1. open 'create accuracy' page.<br>2. the source shcema is selected. The corresponding attributes are shown in the attributes table.<br>3. the source attributes are selected.<br>4. go to 'choose target' step.<br>5. show error message to select at least one attribute.||Passed|| -|0604|create dq model - accuracy|show error message if 'map fields' is not set.|1. click 'models' -> 'create DQ model' -> 'Accuracy'<br>2.choose the source. Select a schema, e.g. 'apollo -> Sojorner -> sog_search_event'.<br>3.select one or more attributes, e.g. uid, site_id.<br>4. click 'next'.<br>5. choose the target. Select a schema, e.g. 'appollo -> Bullseye -> adchoice_user_pref'.<br>6. select one or more attributes, e.g. user_id, scope.<br>7. click 'next'.<br>8. no selection. click 'next'.<br>9. select a primary key. click 'next'.|source schema: 'apollo -> Sojorner -> sog_search_event'.<br>Source attributes: uid, site_id.<br>target schema: 'appollo -> Bullseye -> adchoice_user_pref'.<br>target attributes, e.g. user_id, scope.<br>primary key: Bullseye.achoice_user_pref.user_id.|1. open 'create accuracy' page.<br>2. the source shcema is selected. The corresponding attributes are shown in the attributes table.<br>3. the source attributes are selected.<br>4. go to 'choose target' s tep.<br>5. the target schema is selected. The corresponding attributes are shown in the attributes table.<br>6. the target attributes are selected.<br>7. go to 'mapping source and target' step.<br>8. no PK is selected.<br>9. show error message.||Passed|| -|0605|create dq model - accuracy|show error if the configuration is invalid|1. click 'models' -> 'create DQ model' -> 'Accuracy'<br>2.choose the source. Select a schema, e.g. 'apollo -> Sojorner -> sog_search_event'.<br>3.select one or more attributes, e.g. uid, site_id.<br>4. click 'next'.<br>5. choose the target. Select a schema, e.g. 'appollo -> Bullseye -> adchoice_user_pref'.<br>6. select one or more attributes, e.g. user_id, scope.<br>7. click 'next'.<br>8. select a primary key, e.g. Bullseye.achoice_user_pref.user_id.<br>9. select 'Map To' exactly.<br>10. select a source field for each target.<br>11. click 'next'.<br>12. input invalid value for each field, e.g. model name 'a test', notification email 'aa'.|source schema: 'apollo -> Sojorner -> sog_search_event'.<br>Source attributes: uid, site_id.<br>target schema: 'appollo -> Bullseye -> adchoice_user_pref'.<br>target attributes, e.g. user_id, scope.<br>primary key: Bullseye.achoice_user_pref.user_id.<br>model name: 'a test' , <br>notification email: 'aa'.|1. open 'create accuracy' page.<br>2. the source shcema is selected. The corresponding attributes are shown in the attributes table.<br>3. the source attributes are selected.<br>4. go to 'choose target' step.<br>5. the target schema is selected. The corresponding attributes are shown in the attributes table.<br>6. the target attributes are selected.<br>7. go to 'mapping source and target' step.<br>8. the PK is selected.<br>9. exactly map to the source.<br>10. the source field is selected for each target.<br>11. go to 'configuration' step.<br>12. show error for invalid value.||Passed|| -|0606|create dq model - accuracy|check the link to add new data asset.|1. click the link for adding new data asset.||1. go to the 'register data asset' page.||Passed|| -|0607|create dq model - accuracy|check the UI layout for all the steps when the page is zoomed in and out.|1.zoom in the page.<br>2.zoom out the page.||1.all the steps in the page can be shown correctly.||Passed|| -|0701|create dq model - validity|check dq model with validity type can be created.|1. click 'models' -> 'create DQ model' -> Validity<br>2.choose the target. Select a schema, e.g. 'apollo -> Sojorner -> sog_search_event'.<br>3.select one attribute, e.g. uid.<br>4. click 'next'.<br>5. choose one validity model, e.g. unique count.<br>6. click 'next'.<br>7. input valid value for the configuration fields. e.g. model name 'avalidity', email 'a...@b.com'.<br>8. click 'submit'<br>9. click 'save'.|schema: 'apollo -> Sojorner -> sog_search_event'.<br>Attribute: uid.<br>validity model: unique count.<br>model name: 'a validity', <br>email: 'aa'.|1. open 'create validity' page.<br>2. the target schem is selected. The corresponding attributes are shown in the attributes table.<br>3. the attribute is selected.<br>4. go to 'select model' page.<br>5. the validity model is selected. The description of the model is shown as well.<br>6. go to 'configuration' step.<br>7. all the value are valid.<br>8. op en a confirmation page.<br>9. the new model 'avalidity' is created successfully. it is shown in the models page.||Passed|| -|0702|create dq model - validity|show error if no target is selected.|1. click 'models' -> 'create DQ model' -> Validity<br>2. not choose the target.<br>3. click 'next'.||1. open 'create validity' page.<br>2. no target schem is selected.<br>3. show error.||Passed|| -|0703|create dq model - validity|show error if any field is invalid.|1. click 'models' -> 'create DQ model' -> Validity<br>2.choose the target. Select a schema, e.g. 'apollo -> Sojorner -> sog_search_event'.<br>3.select one attribute, e.g. uid.<br>4. click 'next'.<br>5. choose one validity model, e.g. unique count.<br>6. click 'next'.<br>7. input invalid value for the configuration fields.|schema: 'apollo -> Sojorner -> sog_search_event'.<br>validity model: unique count.<br>Attribute: uid.<br>model name: 'a validity', <br>email: 'aa'.|1. open 'create validity' page.<br>2. the target schem is selected. The corresponding attributes are shown in the attributes table.<br>3. the attribute is selected.<br>4. go to 'select model' page.<br>5. the validity model is selected. The description of the model is shown as well.<br>6. go to 'configuration' step.<br>7. show error for the invalid value.||Passed|| -|0704|create dq model - validity|check the UI layout for all the steps when the page is zoomed in and out.|1.zoom in the page.<br>2.zoom out the page.||1.all the steps in the page can be shown correctly.||Passed|| -|0801|create dq model - anomaly detection|check the dq model with anomaly detection can be created.|1. click 'models' -> 'create DQ model' -> Validity<br>2.choose the target. Select a schema, e.g. 'apollo -> Sojorner -> sog_search_event'.<br>3. click 'next'.<br>4. choose one statistical techniques, e.g. bollinger bands detection.<br>5. click 'next'.<br>6. input valid value for the configuration fields. e.g. model name 'anomaly', email 'a...@b.com'.<br>7. click 'submit'<br>8. click 'save'.|schema: 'apollo -> Sojorner -> sog_search_event'.<br>statistical techniques: bollinger bands detection.<br>model name 'anomaly', <br>email 'a...@b.com'.|1. open 'create validity' page.<br>2. the target schem is selected. The corresponding attributes are shown in the attributes table.<br>3. go to 'select model' page.<br>4. the validity model is selected. The description of the model is shown as well.<br>5. go to 'configuration' step.<br>6. all the value are valid.<br>7. open a confirmation page.<br>8. t wo new models, 'anomaly' with 'anomaly detection' type, and 'Count_anomaly_1' with 'validity' type are created successfully. They are shown in the models page.||Passed|| -|0802|create dq model - anomaly detection|show error if no target is selected.|1. click 'models' -> 'create DQ model' -> Validity<br>2. not choose the target.<br>3. click 'next'.||1. open 'create validity' page.<br>2. no target schem is selected.<br>3. show error.||Passed|| -|0803|create dq model - anomaly detection|show error if any field is invalid.|1. click 'models' -> 'create DQ model' -> Validity<br>2.choose the target. Select a schema, e.g. 'apollo -> Sojorner -> sog_search_event'.<br>3. click 'next'.<br>4. choose one statistical techniques, e.g. bollinger bands detection.<br>5. click 'next'.<br>6. input invalid value for the configuration fields.|schema: 'apollo.Sojorner. sog_search_event'<br>model name: 'a nomaly', <br>email: 'aa'.|1. open 'create validity' page.<br>. the target schem is selected. The corresponding attributes are shown in the attributes table.<br>3. go to 'select model' page.<br>4. the validity model is selected. The description of the model is shown as well.<br>5. go to 'configuration' step.<br>6. show error for the invalid value.||Passed|| -|0804|create dq model - anomaly detection|check the UI layout for all the steps when the page is zoomed in and out.|1.zoom in the page.<br>2.zoom out the page.||1.all the steps in the page can be shown correctly.||Passed|| -|0901|create dq model - publish DQ data directly|check the dq model with publish type can be created.|1. click 'models' -> 'create DQ model' -> publish DQ data directly.<br>2.input valid value for the configuration fields.<br>3. click 'submit'<br>4. click 'save'.|model name 'apu', <br>organization 'hadoop', <br>email 'a...@b.com'.|1. open 'create validity' page.<br>2. all the value are valid.<br>3. open a confirmation page.<br>4. the new model 'apu' is created successfully. It is shown in the models page.||Passed|| -|0902|create dq model - publish DQ data directly|show error if any field is invalid.|1. click 'models' -> 'create DQ model' -> publish DQ data directly.<br>2.input invalid value for the configuration fields. |model name 'a pu', email 'aa'.|1. open 'create validity' page.<br>2. show error for the invalid value.||Passed|| -|0903|create dq model - publish DQ data directly|check the UI layout for all the steps when the page is zoomed in and out.|1.zoom in the page.<br>2.zoom out the page.||1.all the steps in the page can be shown correctly.||Passed|| -|1001|data assets|check the data assets information|1. check all the columns are correct or not.<br>2. show more for an asset.||1. all the data are correct.<br>2. show the schemas of the asset.||Passed|| -|1002|data assets|edit asset|1. click 'edit' icon for an asset, e.g. 'abc'.<br>2. edit the schema description and sample.<br>3. click 'submit'.<br>4. confirm to save.<br>5. in the asset table, show more for the asset 'abc'.||1. open the edit page.<br>2. the schema description and sample are valid.<br>3. open a confirmation page.<br>4. the asset info are saved.<br>5. the schema info are updated.||Passed|| -|1003|data assets|delete asset|1. click 'delete' icon for an asset, e.g. 'abc'.<br>2. confirm to delete the asset.||1. open delete confirmation page.<br>2. the asset is removed from the table.||Passed|| -|1004|data assets|table paging|1. click other pages in the table.||1.all the data in other pages are show correctly.||Passed|| -|1005|data assets|check the UI layout when the page is zoomed in and out.|1.zoom in the page.<br>2.zoom out the page.||1. display the page correctly.||Passed|| -|1101|register data asset|check data asset can be registered.|1. click 'register data asset' in the 'data assets' page.<br>2. input valid value.<br>3. click 'submit'.<br>4. confirm to save.|asset name: 'atest', <br>type: 'hdfsfile',<br>HDFS path: '/var', <br>data folder pattern: '16-06-01',<br>platform: 'Apollo',<br>organization: 'GPS',<br>schema: name 'dmg', type 'string'|1. open 'register data asset' page.<br>2. all the value are valid.<br>3. open a confirmation page.<br>4. the new asset is registered successfully. It is shown in the assets table.||Passed|| -|1102|register data asset|show error if any field is invalid.|1. click 'register data asset' in the 'data assets' page.<br>2. input some invalid value.<br>3. click 'submit'.|asset name: 'a test', <br>type: 'hdfsfile',<br>HDFS path: '/var', <br>data folder pattern: '16-06-01',<br>platform: 'Apollo',<br>organization: null,<br>schema: name 'dmg', type 'string',|1. open 'register data asset' page.<br>2. some value are invalid.<br>3. show error for the invalid value.||Passed|| -|1103|register data asset|check the UI layout when the page is zoomed in and out.|1.zoom in the page.<br>2.zoom out the page.||1. display the page correctly.||Passed|| +| TestCase ID | Test Page | Test Case Description | Test Case Steps | Test Data | Expected Result | Actual Result | Test Result | Jira Bug ID | +| ----------- | -------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ------------- | ----------- | ----------- | +| 0101 | login page | invalid corp id - check user cannot login the system with invalid corp id. | 1. Input invalid corp id.<br>2. Input password.<br>3. click 'log in' button. | | 1. login failed. | | Passed | | +| 0102 | login page | invalid password - check user cannot login the system with invalid password. | 1. input valid corp id.<br>2.input invalid password<br>3.click 'log in' button. | | 1. login failed. | | Passed | | +| 0103 | login page | valid corp id and passoword - check user can login the system with valid corp id and password. | 1. Input the corp id and password.<br>2 click 'log in' button. | | 1. login succesfully | | Passed | | +| 0104 | login page | remember password | 1. Input the corp id and password.<br>2. select 'remember password'.<br>3.click 'log in' button.<br>4. close the brower.<br>5. open the brower again.<br>6. visit the griffin page. | | 1.the id and password are valid.<br>2.'remember password' is checked.<br>3.logged in the griffin homepage.<br>4.the brower is closed.<br>5.the brower is reopened.<br>6.the griffin homepage is opened, instead of the login page. | | Passed | | +| 0105 | login page | not remember password | 1. Input the corp id and password.<br>2. unselect 'remember password'.<br>3.click 'log in' button.<br>4. close the brower.<br>5. open the brower again.<br>6. visit the griffin page. | | 1.the id and password are valid.<br>2.'remember password' is unchecked.<br>3.logged in the griffin homepage.<br>4.the brower is closed.<br>5.the brower is reopened.<br>6.the login page is opened. | | Passed | | +| 0201 | main page | menu bar - check all links in the menu work. | 1. click 'Health'.<br>2. click 'Measures'.<br>3.click 'Create Measure'.<br>4.click 'Data Profiling'.<br>4. click your username -> 'API Docs'. | | 1.show 'health' page.<br>2.show 'measures' page.<br>3.show 'crreate measure' page<br>4.show 'data profiling' page<br>4.open new page for API page. | | Passed | | +| 0202 | main page | menu bar - search | 1.input a word in the search box.<br>2.do search. | | 1. show search result. | unimplemented | | | +| 0203 | main page | menu bar - user profile | 1. click username -> 'user profile' | | 1. show user profile page | unimplemented | | | +| 0204 | main page | menu bar - setting | 1. click username -> 'setting' | | 1. show setting page. | unimplemented | | | +| 0205 | main page | right side - DataAssets | 1. click 'DataAssets' link | | 1.show the data assets page. | | Passed | | +| 0206 | main page | right side - DQ Metrics | 1. click 'DQ Metrics' link. | | 1. show DQ Metrics page | | Passed | | +| 0207 | main page | right side - statistics for the DQ data. | 1. check the DQ data with the name, last updated time, and the data quality.<br>2. show more for one item, check the dq trend chart. <br>3. click the chart.<br>4. close the zoomed-in chart. | | 1.show all the dq data.<br>2.show the latest dq trend chart for the item.<br>3.the dq chart is zoomed in.<br>4.the zoomed-in chart is closed. | | Passed | | +| 0301 | health page | heatmap | 1. open 'heatmap' tab.<br>2. check the data quality metrics heatmap.<br>3. click inside the heatmap. | | 1.show the heatmap.<br>2.all the data are shown successfully.<br>3.show the metrics page. | | Passed | | +| 0302 | health page | check the UI layout when the page is zoomed in and out. | 1.zoom in the page.<br>2.zoom out the page. | | 1. display the page correctly. | | Passed | | +| 0401 | metrics page | check metrics data | 1. check the dq charts for the metrics.<br>2. click one chart. | | 1. all the data in the dq charts are correct.<br>2. the chart is zoomed in. | | Passed | | +| 0402 | metrics page | Download Sample | 1. click 'download sample'. | | 1. the sample is downloaded to the local path. | unimplemented | | | +| 0403 | metrics page | Profiling | 1. click 'profiling' | | 1. show 'profiling' | unimplemented | | | +| 0404 | metrics page | check the UI layout when the page is zoomed in and out. | 1.zoom in the page.<br>2.zoom out the page. | | 1. display the page correctly. | | Passed | | +| 0501 | Measures page | check the measures data | 1. check all the columns are correct or not.<br>2. click one measure name. | | 1. all the data are correct.<br>2. show more information of the measure. | | Passed | | +| 0502 | Measures page | delete measure | 1. click 'delete' icon for one measure.<br>2. confirm to delete the measure. | | 1. open delete confirmation page.<br>2. the measure is removed from the measures table. | | Passed | | +| 0503 | Measures page | View measure | 1. click 'view' icon for one measure. | | 1. open view measure page | | | | +| 0504 | Measures page | table paging | 1. click other pages in the measures table. | | 1.all the data in other pages are show correctly. | | Passed | | +| 0505 | Measures page | create measure | 1. click 'create measure' button | | 1. open 'create measure' page. | | Passed | | +| 0506 | Measures page | check the UI layout when the page is zoomed in and out. | 1.zoom in the page.<br>2.zoom out the page. | | 1. display the page correctly. | | Passed | | +| 0601 | create measure - accuracy | create accuracy | 1. click 'Measures' -> 'Create Measure' -> 'Accuracy'<br>2.choose the source. Select a schema, e.g. 'default -> demo_src'.<br>3.select one or more attributes, e.g. id, age.<br>4. click 'next'.<br>5. choose the target. Select a schema, e.g. 'default -> demo_tgt'.<br>6. select one or more attributes, e.g. id.<br>7. click 'next'.<br>8. select 'Map To',e.g.'='.<br>9. select a source field for each target.<br>10. click 'next'.<br>11. input the partition configuration for the source and the target,e.g. partition size'1day'.<br>12. input the required information, e.g. measure name 'test_acu'.<br>13.click 'submit'.<br>14. confirm to save. | source schema: 'default -> demo_src'.<br>Source attributes: id, age.<br>target schema: 'default -> demo_tgt'.<br>target attributes, e.g. id.<br>Map to: =.<br>Source Fields: default.demo_src.id.<br>Partition size: '1day'.<br>model name: 'test_acu'. <br> | 1. open 'crea te accuracy' page.<br>2. the source shcema is selected. The corresponding attributes are shown in the attributes table.<br>3. the source attributes are selected.<br>4. go to 'choose target' step.<br>5. the target schema is selected. The corresponding attributes are shown in the attributes table.<br>6. the target attributes are selected.<br>7. go to 'mapping source and target' step.<br>8. exactly map to the source.<br>9. the source field is selected for each target.<br>10. go to 'partition configuration' step.<br>12. the configuration are input correctly.<br>11. go to 'configuration' step.<br>12. the required info are input correctly.<br>13. open a confirmation page.<br>14. the new model 'test_acu' is created. It is shown in the measures table | | Passed | | +| 0602 | create measure - accuracy | show error message if no source attribute is selected. | 1. click 'Measures' -> 'Create Measure' -> 'Accuracy'.<br>2. click 'next' | | 1. open 'create accuracy' page.<br>2. show error message to select at least one attribute. | | Passed | | +| 0603 | create measure - accuracy | show error message if no target attribute is selected. | 1. click 'Measures' -> 'Create Measure' -> 'Accuracy'.<br>2.choose the source. Select a schema, e.g. 'default -> demo_src'.<br>3.select one or more attributes, e.g. id, age.<br>4. click 'next'.<br>5. in the 'target' step, click 'next'. | source schema: 'default -> demo_src'.<br>Source attributes: id, age. | "1. open 'create accuracy' page.<br>2. the source shcema is selected. The corresponding attributes are shown in the attributes table.<br>3. the source attributes are selected.<br>4. go to 'choose target' step.<br>5. show error message to select at least one attribute. | | Passed | | +| 0604 | create measure - accuracy | show error message if 'map fields' is not set. | 1. click 'Measures' -> 'Create Measure' -> 'Accuracy'<br>2.choose the source. Select a schema, e.g. 'default -> demo_src'.<br>3.select one or more attributes, e.g. id, age.<br>4. click 'next'.<br>5. choose the target. Select a schema, e.g. 'default -> demo_tgt'.<br>6. select one or more attributes, e.g. id.<br>7. click 'next'.<br>8. no selection. click 'next'.<br> | source schema: 'default -> demo_src'.<br>Source attributes: id, age.<br>target schema: 'default -> demo_tgt'.<br>target attributes, e.g. id.<br> | 1. open 'create accuracy' page.<br>2. the source shcema is selected. The corresponding attributes are shown in the attributes table.<br>3. the source attributes are selected.<br>4. go to 'choose target' step.<br>5. the target schema is selected. The corresponding attributes are shown in the attributes table.<br>6. the target attributes are selected.<br>7. go to 'mapping source and tar get' step.<br>8. no source field is selected for each target.<br>9. show error message. | | Passed | | +| 0605 | create measure - accuracy | show error if the configuration is invalid | 1. click 'Measures' -> 'Create Measure' -> 'Accuracy'<br>2.choose the source. Select a schema, e.g. 'default -> demo_src'.<br>3.select one or more attributes, e.g. id, age.<br>4. click 'next'.<br>5. choose the target. Select a schema, e.g. 'default -> demo_tgt'.<br>6. select one or more attributes, e.g. id.<br>7. click 'next'.<br>8. select 'Map To',e.g.'='.<br>9. select a source field for each target.<br>10. click 'next'.<br>11.input the partition configuration for the source and the target,e.g. partition size'1day'. <br>12. input invalid value for each field, e.g. measure name 'a test', | source schema: 'default -> demo_src'.<br>Source attributes: id, age.<br>target schema: 'default -> demo_tgt'.<br>target attributes, e.g. id.<br>Map to: =.<br>Source Fields: default.demo_src.id.<br>Partition size: '1day'.<br>model name: 'a test', <br> | 1. open 'create accuracy' page.<br>2. the source shcema i s selected. The corresponding attributes are shown in the attributes table.<br>3. the source attributes are selected.<br>4. go to 'choose target' step.<br>5. the target schema is selected. The corresponding attributes are shown in the attributes table.<br>6. the target attributes are selected.<br>7. go to 'mapping source and target' step.<br>8. the source field is selected for each target..<br>9. exactly map to the source.<br>10. the source field is selected for each target.<br>11. go to 'configuration' step.<br>12. show error for invalid value. | | Passed | | +| 0606 | create measure - accuracy | check the link to add new data asset. | 1. click the link for adding new data asset. | | 1. go to the 'register data asset' page. | unimplemented | | | +| 0607 | create measure - accuracy | check the UI layout for all the steps when the page is zoomed in and out. | 1.zoom in the page.<br>2.zoom out the page. | | 1.all the steps in the page can be shown correctly. | | Passed | | +| 0701 | create measure - profiling | check measure with profiling type can be created. | 1. click 'Measures' -> 'Create Measure' ->Data Profiling<br>2.choose the target. Select a schema, e.g. 'default -> demo_src'.<br>3.select one attribute, e.g. id.<br>4. click 'next'.<br>5. choose one profiling model, e.g. Null Count ,Total Count.<br>6. click 'next'.<br>7.input the partition configuration for the source,e.g. partition size'1day'. <br>8. click 'next'.<br>9. input valid value for the configuration fields. e.g. measure name 'avalidity'.<br>10. click 'submit'<br>11. click 'save'. | schema: 'default -> demo_src'.<br>Attribute: id.<br>validity model: Null Count ,Total Count.<br>measure name: 'a profiling', <br> | 1. open 'create profiling' page.<br>2. the target schem is selected. The corresponding attributes are shown in the attributes table.<br>3. the attribute is selected.<br>4. go to 'select models' page.<br>5. the profiling model is selected. The description of the model is shown as well.<br>7. go to 'partition configuration' step.<br>8. go to 'configuration' step.<br>9. all the value are valid.<br>10. open a confirmation page.<br>11. the new model 'profiling' is created successfully. it is shown in the measures page. | | Passed | | +| 0702 | create measure - profiling | show error if no target is selected. | 1. click 'Measures' -> 'Create Measure' ->Data Profiling<br>2. not choose the target.<br>3. click 'next'. | | 1. open 'create profiling' page.<br>2. no target schem is selected.<br>3. show error. | | Passed | | +| 0703 | create measure - profiling | show error if any field is invalid. | 1. click 'Measures' -> 'Create Measure' ->Data Profiling<br>2.choose the target. Select a schema, e.g. 'default -> demo_src'.<br>3.select one attribute, e.g. id.<br>4. click 'next'.<br>5. choose one profiling model, e.g. Null Count ,Total Count.<br>6. click 'next'.<br>7.input the partition configuration for the source,e.g. partition size'1day'. <br>8. click 'next'.<br>9. input invalid value for the configuration fields. | schema: 'default -> demo_src'.<br>Attribute: id.<br>validity model: Null Count ,Total Count.<br>measure name: 'a profiling', <br> | 1. open 'create profiling' page.<br>2. the target schem is selected. The corresponding attributes are shown in the attributes table.<br>3. the attribute is selected.<br>4. go to 'select models' page.<br>5. the profiling model is selected. The description of the model is shown as well.<br>6. go to 'partition configuration' step.<br>7. go to 'configur ation' step.<br>8. show error for the invalid value. | | Passed | | +| 0704 | create measure - profiling | check the UI layout for all the steps when the page is zoomed in and out. | 1.zoom in the page.<br>2.zoom out the page. | | 1.all the steps in the page can be shown correctly. | | Passed | | +| 0801 | data assets | check the data assets information | 1. check all the columns are correct or not.<br>2. show more for an asset. | | 1. all the data are correct.<br>2. show the schemas of the asset. | | Passed | | +| 0802 | data assets | table paging | 1. click other pages in the table. | | 1.all the data in other pages are show correctly. | | Passed | | +| 0803 | data assets | check the UI layout when the page is zoomed in and out. | 1.zoom in the page.<br>2.zoom out the page. | | 1. display the page correctly. | | Passed | | + http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/43fe6086/griffin-doc/ui/user-guide.md ---------------------------------------------------------------------- diff --git a/griffin-doc/ui/user-guide.md b/griffin-doc/ui/user-guide.md index 651af3e..353a5e0 100644 --- a/griffin-doc/ui/user-guide.md +++ b/griffin-doc/ui/user-guide.md @@ -37,30 +37,28 @@ After you log into the system, you may follow the steps: You can check the data assets by clicking "DataAssets" on the top right corner. -<img src="img/userguide/data asset new.png" > +<img src="../img/userguide/data asset new.png" height="200px"> Then you can see all the data assets listed here. -<img src="img/userguide/asset list.png"> +<img src="../img/userguide/asset list.png"> ### 2.2 Create measure By clicking "Measures", and then choose "Create Measure". You can use the measure to process data and get the result you want. -<img src="img/userguide/create measure.png"> +<img src="../img/userguide/create measure.png"> There are mainly four kinds of measures for you to choose, which are: 1. if you want to measure the match rate between source and target, choose accuracy. -2. if you want to check the specific value of the data(such as: null column count), choose validity. -3. if you want to detect wrong data information, choose anomaly detection. -4. if you have already processed the data by yourself, choose publish DQ metrics directly, POST it any time you want, and see the trend from data diagrams. +2. if you want to check the specific value of the data(such as: null column count), choose profiling. At current we only support accuracy measure creation from UI. #### **2.2.1 Accuracy** [[1]](#accuracy) -<img src="img/userguide/accuracy.png" > +<img src="../img/userguide/accuracy.png" height="550px" > **Definition:** @@ -72,41 +70,50 @@ Measured by how the values agree with an identified source of truth. Select the source dataset and fields which will be used for comparision. -<img src="img/userguide/source new.png"> +<img src="../img/userguide/source.PNG"> -For example, we choose 2 columns here. +For example, we choose 3 columns here. 2) Choose target: Select the target dataset and fields which will be used for comparision. -<img src="img/userguide/target new.png"> +<img src="../img/userguide/target.PNG"> 3) Mapping source and target - Step1: "Map To": Select which rule to match the source and the target. Here are 6 options to choose: - 1. == : data of the two columns should be exactly matched. - 2. !== : data of the two columns should be different. + 1. = : data of the two columns should be exactly matched. + 2. != : data of the two columns should be different. 3. \> : the target column data should be bigger than the source one. - 3. \>= : the target column data should be bigger than or equal to the source one. - 3. < : the target column data should be smaller than the source one. - 3. <= : the target column data should be smaller than or equal to the source one. + 4. \>= : the target column data should be bigger than or equal to the source one. + 5. < : the target column data should be smaller than the source one. + 6. <= : the target column data should be smaller than or equal to the source one. - Step2: "Source fields": choose the source column that you want to compare with the target column. -<img src="img/userguide/mapping.png"> +<img src="../img/userguide/mapping.png"> -4) Configuration +4) Partition Configuration + +Set partition configuration for source dataset and target dataset. +The partition size means hive database minimum data unit,used to split data you want to calculate + +Done file path means format of done file path + +<img src="../img/userguide/ac_partition.png"> + +5) Configuration Set up the measure required information. The organization means the group of your measure, you can manage your measurement dashboard by group later. -<img src="img/userguide/confirm new.png"> +<img src="../img/userguide/confirm measure.png"> -5) Measure information +6) Measure information After you create a new accuracy measure, you can check the measure you've created by selecting it in the listed measurements' page. -<img src="img/userguide/measure info.png" > +<img src="../img/userguide/measure info.png" > **Example:** @@ -116,18 +123,21 @@ Suppose the source table A has 1000 records and the target table B only has 999 By clicking "Jobs", and then choose "Create Job". You can submit a job to execute your measure periodically. -<img src="img/userguide/create job.png"> +<img src="../img/userguide/create job.png"> At current we only support simple periodically scheduling job for measures. -<img src="img/userguide/job config.png"> +<img src="../img/userguide/job config.png"> + +<img src="../img/userguide/confirm job.png"> Fill out the block of job configuration. -- Source Partition: the pattern of the source data partition based on timestamp. "YYYYMMdd-HH" means the data source partitions are "dt" and "hour", for example, the partitions of data is like "dt = 20170605, hour = 15". -- Target Partition: the pattern of the target data partition based on timestamp. + +- Job Name: you can set a name for your job. - Measure Name: name of the measure you want to schedule. you need to choose it from the list of measures you've created before. -- Start After(s): after how much time in seconds the job starts. It should not be negative. For example: 0 means start now. -- Interval: the interval time in seconds of the job scheduling. It should be a integer. For example: 300 means schedule this job every 5 minutes. +- Cron Expression: cron expression of scheduler. For example: 0 0/4 * * *. +- Begin: data segment start time comparing with trigger time +- End: data segment end time comparing with trigger time. After submit the job, griffin will schedule the job in background, and after calculation, you can monitor the dashboard to view the result on UI. @@ -135,25 +145,25 @@ After submit the job, griffin will schedule the job in background, and after cal After the processing work has done, here are 3 ways to show the data diagram. -1. Click on "Health", it shows the heatmap of metrics data. The blocks in green represent health and the blocks in red represent unhealthy. +1. Click on "Health", it shows the heatmap of metrics data. - <img src="img/userguide/heatmap.png" > + <img src="../img/userguide/heatmap.png" > 2. Click on "DQ Metrics". - <img src="img/userguide/dq metrics.png"> + <img src="../img/userguide/data asset new.png" height="180px"> You can see the diagrams of metrics. - <img src="img/userguide/metrics dashboard.png" > + <img src="../img/userguide/metrics dashboard.png" > By clicking on the diagram, you can get the zoom-in picture of it, and know the metrics at the selected time window. - <img src="img/userguide/dashboard big.png" > + <img src="../img/userguide/dashboard big.png" > 3. The metrics is shown on the right side of the page. By clicking on the measure, you can get the diagram and details about the measure result. - <img src="img/userguide/right bar.png" > + <img src="../img/userguide/right bar.png" height="400px" > ## References ###Six core data quality dimensions @@ -162,32 +172,32 @@ After the processing work has done, here are 3 ways to show the data diagram. <a id="accuracy" name="accuracy"></a> -| Title | Accuracy | -| ----------|----------| -| Definition | The degree to which data correctly describes the "real world" object or event being described. | -| Reference | Ideally the "real world" truth is established through primary research. However, as this is often not practical, it is common to use 3rd party reference data from sources which are deemed trustworthy and of the same chronology. | -| Measure | The degree to which the data mirrors the characteristics of the real world object or objects it represents. | -| Scope | Any "real world" object or objects that may be characterized or described by data, held as data item, record, data set or database. | -| Unit of Measure | The percentage of data entries that pass the data accuracy rules. | -| Type of Measure: <br/><ul><li>Assessment</li><li>Continuous</li><li>Discrete</li></ul>| Assessment, e.g. primary research or reference against trusted data. Continuous Measurement, e.g. age of students derived from the relationship between the studentsâ dates of birth and the current date. Discrete Measurement, e.g. date of birth recorded. | -| Related Dimension | Validity is a related dimension because, in order to be accurate, values must be valid, the right value and in the correct representation.| -| Optionality | Mandatory because - when inaccurate - data may not be fit for use. | -| Applicability | | -| Example(s) | A European school is receiving applications for its annual September intake and requires students to be aged 5 before the 31st August of the intake year. <br/> <br/>In this scenario, the parent, a US Citizen, applying to a European school completes the Date of Birth (D.O.B) on the application form in the US date format, MM/DD/YYYY rather than the European DD/MM/YYYY format, causing the representation of days and months to be reversed. <br/> <br/> As a result, 09/08/YYYY really meant 08/09/YYYY causing the student to be accepted as the age of 5 on the 31st August in YYYY. <br/> <br/> The representation of the studentâs D.O.B.âwhilst valid in its US contextâmeans that in Europe the age was not derived correctly and the value recorded was consequently not accurate | -| Pseudo code | ((Count of accurate objects)/ (Count of accurate objects + Counts of inaccurate objects)) x 100 <br/> Example: (Count of children who applied aged 5 before August/YYYY)/ (Count of children who applied aged 5 before August 31st YYYY+ Count of children who applied aged 5 after August /YYYY and before December 31st/YYYY) x 100| +| Title | Accuracy | +| ---------------------------------------- | ---------------------------------------- | +| Definition | The degree to which data correctly describes the "real world" object or event being described. | +| Reference | Ideally the "real world" truth is established through primary research. However, as this is often not practical, it is common to use 3rd party reference data from sources which are deemed trustworthy and of the same chronology. | +| Measure | The degree to which the data mirrors the characteristics of the real world object or objects it represents. | +| Scope | Any "real world" object or objects that may be characterized or described by data, held as data item, record, data set or database. | +| Unit of Measure | The percentage of data entries that pass the data accuracy rules. | +| Type of Measure: <br/><ul><li>Assessment</li><li>Continuous</li><li>Discrete</li></ul> | Assessment, e.g. primary research or reference against trusted data. Continuous Measurement, e.g. age of students derived from the relationship between the studentsâ dates of birth and the current date. Discrete Measurement, e.g. date of birth recorded. | +| Related Dimension | Validity is a related dimension because, in order to be accurate, values must be valid, the right value and in the correct representation. | +| Optionality | Mandatory because - when inaccurate - data may not be fit for use. | +| Applicability | | +| Example(s) | A European school is receiving applications for its annual September intake and requires students to be aged 5 before the 31st August of the intake year. <br/> <br/>In this scenario, the parent, a US Citizen, applying to a European school completes the Date of Birth (D.O.B) on the application form in the US date format, MM/DD/YYYY rather than the European DD/MM/YYYY format, causing the representation of days and months to be reversed. <br/> <br/> As a result, 09/08/YYYY really meant 08/09/YYYY causing the student to be accepted as the age of 5 on the 31st August in YYYY. <br/> <br/> The representation of the studentâs D.O.B.âwhilst valid in its US contextâmeans that in Europe the age was not derived correctly and the value recorded was consequently not accurate | +| Pseudo code | ((Count of accurate objects)/ (Count of accurate objects + Counts of inaccurate objects)) x 100 <br/> Example: (Count of children who applied aged 5 before August/YYYY)/ (Count of children who applied aged 5 before August 31st YYYY+ Count of children who applied aged 5 after August /YYYY and before December 31st/YYYY) x 100 | <a id="validity" name="validity"></a> -| Title | Validity | -| ------- | -------- | -| Definition| Data are valid if it conforms to the syntax (format, type, range) of its definition.| -| Reference| Database, metadata or documentation rules as to the allowable types (string, integer, floating point etc.), the format (length, number of digits etc.) and range (minimum, maximum or contained within a set of allowable values).| -| Measure | Comparison between the data and the metadata or documentation for the data item.| -| Scope | All data can typically be measured for Validity. Validity applies at the data item level and record level (for combinations of valid values).| -| Unit of Measure |Percentage of data items deemed Valid to Invalid. | -| Type of Measure: <br/><ul><li>Assessment</li><li>Continuous</li><li>Discrete</li></ul>|Assessment, Continuous and Discrete| -|Related dimension|Accuracy, Completeness, Consistency and Uniqueness| -|Optionality|Mandatory| -|Applicability| | -|Example(s)|Each class in a UK secondary school is allocated a class identifier; this consists of the 3 initials of the teacher plus a two digit year group number of the class. It is declared as AAA99 (3 Alpha characters and two numeric characters).<br/><br/>Scenario 1:<br/>A new year 9 teacher, Sally Hearn (without a middle name) is appointed therefore there are only two initials. A decision must be made as to how to represent two initials or the rule will fail and the database will reject the class identifier of âSH09â. It is decided that an additional character âZâ will be added to pad the letters to 3: âSZH09â, however this could break the accuracy rule. A better solution would be to amend the database to accept 2 or 3 initials and 1 or 2 numbers.<br/><br/> Scenario 2:<br/>The age at entry to a UK primary & junior school is captured on the form for school applications. This is entered into a database and checked that it is between 4 and 11. If it were captured on the form as 14 or N/A it would be rejected as invalid.| -|Pseudo code|Scenario 1:<br/>Evaluate that the Class Identifier is 2 or 3 letters a-z followed by 1 or 2 numbers 7 â 11.<br/><br/>Scenario 2:<br/>Evaluate that the age is numeric and that it is greater than or equal to 4 and less than or equal to 11. | +| Title | Profiling | +| ---------------------------------------- | ---------------------------------------- | +| Definition | Data are valid if it conforms to the syntax (format, type, range) of its definition. | +| Reference | Database, metadata or documentation rules as to the allowable types (string, integer, floating point etc.), the format (length, number of digits etc.) and range (minimum, maximum or contained within a set of allowable values). | +| Measure | Comparison between the data and the metadata or documentation for the data item. | +| Scope | All data can typically be measured for Validity. Validity applies at the data item level and record level (for combinations of valid values). | +| Unit of Measure | Percentage of data items deemed Valid to Invalid. | +| Type of Measure: <br/><ul><li>Assessment</li><li>Continuous</li><li>Discrete</li></ul> | Assessment, Continuous and Discrete | +| Related dimension | Accuracy, Completeness, Consistency and Uniqueness | +| Optionality | Mandatory | +| Applicability | | +| Example(s) | Each class in a UK secondary school is allocated a class identifier; this consists of the 3 initials of the teacher plus a two digit year group number of the class. It is declared as AAA99 (3 Alpha characters and two numeric characters).<br/><br/>Scenario 1:<br/>A new year 9 teacher, Sally Hearn (without a middle name) is appointed therefore there are only two initials. A decision must be made as to how to represent two initials or the rule will fail and the database will reject the class identifier of âSH09â. It is decided that an additional character âZâ will be added to pad the letters to 3: âSZH09â, however this could break the accuracy rule. A better solution would be to amend the database to accept 2 or 3 initials and 1 or 2 numbers.<br/><br/> Scenario 2:<br/>The age at entry to a UK primary & junior school is captured on the form for school applications. This is entered into a database and checked that it is between 4 a nd 11. If it were captured on the form as 14 or N/A it would be rejected as invalid. | +| Pseudo code | Scenario 1:<br/>Evaluate that the Class Identifier is 2 or 3 letters a-z followed by 1 or 2 numbers 7 â 11.<br/><br/>Scenario 2:<br/>Evaluate that the age is numeric and that it is greater than or equal to 4 and less than or equal to 11. | http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/43fe6086/ui/angular/src/app/job/job.component.ts ---------------------------------------------------------------------- diff --git a/ui/angular/src/app/job/job.component.ts b/ui/angular/src/app/job/job.component.ts index aa4f4cf..9a8356d 100644 --- a/ui/angular/src/app/job/job.component.ts +++ b/ui/angular/src/app/job/job.component.ts @@ -121,11 +121,12 @@ export class JobComponent implements OnInit { var self = this; let allJobs = this.serviceService.config.uri.allJobs; this.http.get(allJobs).subscribe(data => { - this.results = Object.keys(data).map(function(index) { + let trans = Object.keys(data).map(function(index) { let job = data[index]; job.showDetail = false; return job; }); - }); + this.results = Object.assign([],trans).reverse(); + }); } } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/43fe6086/ui/angular/src/app/measure/create-measure/pr/pr.component.ts ---------------------------------------------------------------------- diff --git a/ui/angular/src/app/measure/create-measure/pr/pr.component.ts b/ui/angular/src/app/measure/create-measure/pr/pr.component.ts index 2fa9989..79bb1b8 100644 --- a/ui/angular/src/app/measure/create-measure/pr/pr.component.ts +++ b/ui/angular/src/app/measure/create-measure/pr/pr.component.ts @@ -232,7 +232,7 @@ export class PrComponent implements AfterViewChecked, OnInit { { id: 6, itemName: "Average", category: "Summary Statistics" }, // {"id":7,"itemName":"Median","category": "Summary Statistics"}, // {"id":8,"itemName":"Rule Detection Count","category": "Advanced Statistics"}, - { id: 9, itemName: "Enum Detection Count", category: "Advanced Statistics" } + { id: 9, itemName: "Enum Detection Top5 Count", category: "Advanced Statistics" } ]; } else { this.dropdownList[item.name] = [ @@ -240,7 +240,7 @@ export class PrComponent implements AfterViewChecked, OnInit { { id: 2, itemName: "Distinct Count", category: "Simple Statistics" }, { id: 3, itemName: "Total Count", category: "Summary Statistics" }, // {"id":8,"itemName":"Rule Detection Count","category": "Advanced Statistics"}, - { id: 9, itemName: "Enum Detection Count", category: "Advanced Statistics" } + { id: 9, itemName: "Enum Detection Top5 Count", category: "Advanced Statistics" } // {"id":10,"itemName":"Regular Expression Detection Count","category": "Advanced Statistics"} ]; } @@ -319,7 +319,7 @@ export class PrComponent implements AfterViewChecked, OnInit { // return 'median(source.`'+col.name+'`) '; case "Average": return "avg(source.`" + col.name + "`) AS `" + col.name + "-average`"; - case "Enum Detection Count": + case "Enum Detection Top5 Count": return ( "source.`" + col.name + @@ -568,7 +568,7 @@ export class PrComponent implements AfterViewChecked, OnInit { for (let i = 0; i < this.selectedItems[key].length; i++) { var originrule = this.selectedItems[key][i].itemName; info = info + originrule + ","; - if (originrule == "Enum Detection Count") { + if (originrule == "Enum Detection Top5 Count") { enmvalue = this.transferRule(originrule, selected); grpname = selected.name + "-grp"; this.transenumrule.push(enmvalue); http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/43fe6086/ui/angular/src/app/measure/measure.component.ts ---------------------------------------------------------------------- diff --git a/ui/angular/src/app/measure/measure.component.ts b/ui/angular/src/app/measure/measure.component.ts index a7f7c76..f50a6ec 100644 --- a/ui/angular/src/app/measure/measure.component.ts +++ b/ui/angular/src/app/measure/measure.component.ts @@ -109,13 +109,14 @@ export class MeasureComponent implements OnInit { // data[measure].type = ''; // } // } - this.results = Object.keys(data).map(function(index) { + let trans = Object.keys(data).map(function(index) { let measure = data[index]; if (measure["measure.type"] === "external") { measure["dq.type"] = "external"; } return measure; }); + this.results = Object.assign([],trans).reverse(); }); } } \ No newline at end of file