From 60aa0440a3f7f80108c8b2c47d61339479e0c0aa Mon Sep 17 00:00:00 2001 From: Rafael <rpd17@inf.ufpr.br> Date: Thu, 23 Aug 2018 11:29:01 -0300 Subject: [PATCH] Issue #75: Add scheme from a market example Signed-off-by: Rafael <rpd17@inf.ufpr.br> --- config/market_dimensions.yaml.example | 85 +++++++++++++++++++ config/market_enum.yaml.example | 8 ++ config/market_main.yaml.example | 69 ++++++++++++++++ config/market_metrics.yaml.example | 75 +++++++++++++++++ config/market_sources.yaml.example | 112 ++++++++++++++++++++++++++ config/market_views.yaml.example | 63 +++++++++++++++ test/postgres/fixtures/view10.json | 17 ++++ test/postgres/fixtures/view11.json | 17 ++++ test/postgres/fixtures/view12.json | 7 ++ test/postgres/fixtures/view13.json | 17 ++++ test/postgres/fixtures/view14.json | 12 +++ test/postgres/fixtures/view15.json | 7 ++ test/postgres/fixtures/view16.json | 7 ++ 13 files changed, 496 insertions(+) create mode 100644 config/market_dimensions.yaml.example create mode 100644 config/market_enum.yaml.example create mode 100644 config/market_main.yaml.example create mode 100644 config/market_metrics.yaml.example create mode 100644 config/market_sources.yaml.example create mode 100644 config/market_views.yaml.example create mode 100644 test/postgres/fixtures/view10.json create mode 100644 test/postgres/fixtures/view11.json create mode 100644 test/postgres/fixtures/view12.json create mode 100644 test/postgres/fixtures/view13.json create mode 100644 test/postgres/fixtures/view14.json create mode 100644 test/postgres/fixtures/view15.json create mode 100644 test/postgres/fixtures/view16.json diff --git a/config/market_dimensions.yaml.example b/config/market_dimensions.yaml.example new file mode 100644 index 00000000..d3fb7f38 --- /dev/null +++ b/config/market_dimensions.yaml.example @@ -0,0 +1,85 @@ +- + name: "dim:seller:sex" + dataType: "enumtype" + enumType: "enumsex" + description: "Sexual orientation of the seller from market" +- + name: "dim:seller:cpf" + dataType: "string" + description: "CPF of the seller from market" +- + name: "dim:seller:id" + dataType: "integer" + description: "id of the seller from market" +- + name: "dim:product:name" + dataType: "string" + description: "Name of the product from market" +- + name: "dim:product:validity" + dataType: "date" + description: "Validity of the product from market" +- + name: "dim:product:id" + dataType: "integer" + description: "id of the product from market" +- + name: "dim:client:name" + dataType: "string" + description: "Name of the client from market" +- + name: "dim:client:cpf" + dataType: "string" + description: "CPF of the client from market" +- + name: "dim:client:id" + dataType: "integer" + description: "id of the client from market" +- + name: "dim:sell:registered" + dataType: "boolean" + description: "Check if the client is registered" +- + name: "dim:sell:product.id" + dataType: "integer" + description: "id of the product from market" +- + name: "dim:sell:seller.id" + dataType: "integer" + description: "id of the seller from market" +- + name: "dim:sell:client.id" + dataType: "integer" + description: "id of the client from market" +- + name: "dim:sell:datein" + dataType: "date" + description: "Date of the sell was realized" +- + name: "dim:buyout:datein" + dataType: "date" + description: "Date of the buyout was realized" +- + name: "dim:buyout:provider.id" + dataType: "integer" + description: "id of the provider from market" +- + name: "dim:buyout:product.id" + dataType: "integer" + description: "id of the product from market" +- + name: "dim:provider:name" + dataType: "string" + description: "Name of the provider from market" +- + name: "dim:provider:id" + dataType: "integer" + description: "id of the provider from market" +- + name: "dim:distribute:provider.id" + dataType: "string" + description: "id of the provider from market" +- + name: "dim:distribute:product.id" + dataType: "string" + description: "id of the product from market" diff --git a/config/market_enum.yaml.example b/config/market_enum.yaml.example new file mode 100644 index 00000000..43b7c5aa --- /dev/null +++ b/config/market_enum.yaml.example @@ -0,0 +1,8 @@ +- + name: "enumsex" + values: + - "male" + - "female" + - "nonbinary" + - "undecided" + diff --git a/config/market_main.yaml.example b/config/market_main.yaml.example new file mode 100644 index 00000000..9c95e885 --- /dev/null +++ b/config/market_main.yaml.example @@ -0,0 +1,69 @@ +views: + links: + - config/market_views.yaml.example + obj: + - + alias: "Seller" + data: "test/postgres/fixtures/view10.json" + origin: true + dimensions: + - "dim:seller:name" + - "dim:seller:sex" + - "dim:seller:cpf" + - "dim:seller:id" + metrics: + - "met:seller:avg:age" + - "met:seller:max:age" + - "met:seller:min:age" + - "met:seller:count:age" +metrics: + links: + - config/market_metrics.yaml.example + obj: + - + name: "met:seller:avg:age" + dataType: "float" + aggregation: "avg" + description: "The seller average age" +dimensions: + links: + - config/market_dimensions.yaml.example + obj: + - + name: "dim:seller:name" + dataType: "string" + description: "Name of the seller from market" +enumTypes: + links: + - config/market_enum.yaml.example + obj: + - [] +sources: + links: + - config/market_sources.yaml.example + obj: + - + name: "Seller" + description: "Market worker" + fields: + - + name: "name" + description: "Seller name" + dataType: "string" + - + name: "age" + description: "Seller age" + dataType: "integer" + - + name: "sex" + description: "Seller sex" + enumType: "enumsex" + dataType: "enumtype" + - + name: "CPF" + description: "Seller CPF" + dataType: "string" + - + name: "id" + description: "Seller id" + dataType: "integer" diff --git a/config/market_metrics.yaml.example b/config/market_metrics.yaml.example new file mode 100644 index 00000000..26046343 --- /dev/null +++ b/config/market_metrics.yaml.example @@ -0,0 +1,75 @@ +- + name: "met:seller:max:age" + dataType: "integer" + aggregation: "max" + description: "The seller highest age" +- + name: "met:seller:min:age" + dataType: "integer" + aggregation: "min" + description: "The seller lowest age" +- + name: "met:seller:count:age" + dataType: "integer" + aggregation: "count" + description: "The number of seller's" +- + name: "met:product:avg:pricein" + dataType: "float" + aggregation: "avg" + description: "The average product pricein" +- + name: "met:product:max:pricein" + dataType: "float" + aggregation: "max" + description: "The highest product pricein" +- + name: "met:product:min:pricein" + dataType: "float" + aggregation: "min" + description: "The lowest product pricein" +- + name: "met:product:avg:priceout" + dataType: "float" + aggregation: "avg" + description: "The average product priceout" +- + name: "met:product:max:priceout" + dataType: "float" + aggregation: "max" + description: "The highest product priceout" +- + name: "met:product:min:priceout" + dataType: "float" + aggregation: "min" + description: "The lowest product priceout" +- + name: "met:sell:sum:quantity" + dataType: "integer" + aggregation: "sum" + description: "The sum of sales quantity" +- + name: "met:sell:avg:quantity" + dataType: "float" + aggregation: "avg" + description: "The average of sales quantity" +- + name: "met:sell:count:quantity" + dataType: "integer" + aggregation: "count" + description: "The total number of sales" +- + name: "met:buyout:avg:quantity" + dataType: "float" + aggregation: "avg" + description: "The average of quantity bought" +- + name: "met:buyout:max:quantity" + dataType: "integer" + aggregation: "max" + description: "The highest quantity bought" +- + name: "met:buyout:min:quantity" + dataType: "integer" + aggregation: "min" + description: "The lowest quantity bought" diff --git a/config/market_sources.yaml.example b/config/market_sources.yaml.example new file mode 100644 index 00000000..96583bf7 --- /dev/null +++ b/config/market_sources.yaml.example @@ -0,0 +1,112 @@ +- + name: "Product" + description: "Market product" + fields: + - + name: "name" + description: "Product name" + dataType: "string" + - + name: "pricein" + description: "Product purchase price" + dataType: "float" + - + name: "priceout" + description: "Product price" + dataType: "float" + - + name: "validity" + description: "Product validity" + dataType: "date" + - + name: "id" + description: "Product id" + dataType: "integer" +- + name: "Client" + description: "Market client" + fields: + - + name: "name" + description: "Client name" + dataType: "string" + - + name: "CPF" + description: "Client CPF" + dataType: "string" + - + name: "id" + description: "Client id" + dataType: "integer" +- + name: "Sell" + description: "Market sale" + fields: + - + name: "Registered" + description: "Check if client is registered" + dataType: "boolean" + - + name: "Product.id" + description: "id from product" + dataType: "integer" + - + name: "Client.id" + description: "id from seller" + dataType: "integer" + - + name: "Seller.id" + description: "id from seller" + dataType: "integer" + - + name: "Quantity" + description: "How many is being bought" + dataType: "integer" + - + name: "Datein" + description: "Date of buy from Provider" + dataType: "date" +- + name: "Buyout" + description: "Market buyout" + fields: + - + name: "datein" + description: "date of entry" + dataType: "date" + - + name: "quantity" + description: "how many products has been bought" + dataType: "integer" + - + name: "Provider.id" + description: "Provider id" + dataType: "integer" + - + name: "Product.id" + description: "Product id" + dataType: "integer" +- + name: "Provider" + description: "Market provider" + fields: + - + name: "name" + description: "Provider product name" + dataType: "string" + - + name: "id" + description: "Provider id" + dataType: "integer" +- + name: "Distribute" + description: "Relation between Provider and Product" + fields: + - + name: "Provider.id" + description: "Provider id" + dataType: "integer" + - + name: "Product.id" + description: "Product id" + dataType: "integer" diff --git a/config/market_views.yaml.example b/config/market_views.yaml.example new file mode 100644 index 00000000..783df754 --- /dev/null +++ b/config/market_views.yaml.example @@ -0,0 +1,63 @@ +- + alias: "Product" + data: "test/postgres/fixtures/view11.json" + origin: true + dimensions: + - "dim:product:name" + - "dim:product:validity" + - "dim:product:id" + metrics: + - "met:product:avg:pricein" + - "met:product:max:pricein" + - "met:product:min:pricein" + - "met:product:avg:priceout" + - "met:product:max:priceout" + - "met:product:min:priceout" +- + alias: "Client" + data: "test/postgres/fixtures/view12.json" + origin: true + dimensions: + - "dim:client:name" + - "dim:client:cpf" + - "dim:client:id" +- + alias: "Sell" + data: "test/postgres/fixtures/view13.json" + origin: true + dimensions: + - "dim:sell:registered" + - "dim:sell:product.id" + - "dim:sell:seller.id" + - "dim:sell:client.id" + - "dim:sell:datein" + metrics: + - "met:sell:sum:quantity" + - "met:sell:avg:quantity" + - "met:sell:count:quantity" +- + alias: "Buyout" + data: "test/postgres/fixtures/view14.json" + origin: true + dimensions: + - "dim:buyout:datein" + - "dim:buyout:provider.id" + - "dim:buyout:product.id" + metrics: + - "met:buyout:avg:quantity" + - "met:buyout:max:quantity" + - "met:buyout:min:quantity" +- + alias: "Provider" + data: "test/postgres/fixtures/view15.json" + origin: true + dimensions: + - "dim:provider:name" + - "dim:provider:id" +- + alias: "Distribute" + data: "test/postgres/fixtures/view16.json" + origin: true + dimensions: + - "dim:distribute:provider.id" + - "dim:distribute:product.id" diff --git a/test/postgres/fixtures/view10.json b/test/postgres/fixtures/view10.json new file mode 100644 index 00000000..f2939ffd --- /dev/null +++ b/test/postgres/fixtures/view10.json @@ -0,0 +1,17 @@ +[ +{"dim:seller:name": "Ade", "dim:seller:sex": "undecided" +, "dim:seller:cpf":"344.805.128-45", "dim:seller:id": 1, "dim:seller:age": 23 +, "met:seller:avg:age": 23, "met:seller:max:age": 23, "met:seller:count:age": 1}, +{"dim:seller:name": "Luanne", "dim:seller:sex": "nonbinary" +, "dim:seller:cpf":"977.221.375-39", "dim:seller:id": 2, "dim:seller:age": 24 +, "met:seller:avg:age": 24, "met:seller:max:age": 24,"met:seller:count:age": 1}, +{"dim:seller:name": "Florinda", "dim:seller:sex": "female" +, "dim:seller:cpf":"885.517.020-17", "dim:seller:id": 3, "dim:seller:age": 25 +, "met:seller:avg:age": 25, "met:seller:max:age": 25, "met:seller:count:age": 1}, +{"dim:seller:name": "Bryanna", "dim:seller:sex": "female" +, "dim:seller:cpf":"575.657.111-60", "dim:seller:id": 4, "dim:seller:age": 26 +, "met:seller:avg:age": 26, "met:seller:max:age": 26, "met:seller:count:age": 1}, +{"dim:seller:name": "Salvatore", "dim:seller:sex": "male" +, "dim:seller:cpf":"604.424.718-07", "dim:seller:id": 5, "dim:seller:age": 27 +, "met:seller:avg:age": 27, "met:seller:max:age": 27, "met:seller:count:age": 1} +] diff --git a/test/postgres/fixtures/view11.json b/test/postgres/fixtures/view11.json new file mode 100644 index 00000000..d053e57c --- /dev/null +++ b/test/postgres/fixtures/view11.json @@ -0,0 +1,17 @@ +[ +{"dim:product:name": "Bacon", "dim:product:validity": "2018-03-01", "dim:product:id":53, +"met:product:avg:pricein": 10.20, "met:product:max:pricein": 10.20, "met:product:min:pricein":10.20, +"met:product:avg:priceout": 10.20, "met:product:max:priceout": 10.20, "met:product:min:priceout":10.20}, +{"dim:product:name": "Coal", "dim:product:validity": "2018-05-10", "dim:product:id": 54, +"met:product:avg:pricein": 8.20, "met:product:max:pricein": 8.20, "met:product:min:pricein":8.20, +"met:product:avg:priceout": 8.20, "met:product:max:priceout": 8.20, "met:product:min:priceout": 8.20}, +{"dim:product:name": "Meat", "dim:product:validity": "2018-02-17", "dim:product:id": 55 , +"met:product:avg:pricein": 17.50, "met:product:max:pricein": 17.50, "met:product:min:pricein":17.50, +"met:product:avg:priceout": 17.50, "met:product:max:priceout": 17.50, "met:product:min:priceout": 17.50}, +{"dim:product:name": "Beer", "dim:product:validity": "2018-06-10", "dim:product:id": 56 , +"met:product:avg:pricein": 6.50 , "met:product:max:pricein": 6.50, "met:product:min:pricein":6.50, +"met:product:avg:priceout": 6.50, "met:product:max:priceout": 6.50, "met:product:min:priceout":6.50}, +{"dim:product:name": "Trento", "dim:product:validity": "2018-08-23" , "dim:product:id": 57 , +"met:product:avg:pricein": 2.50, "met:product:max:pricein": 2.50, "met:product:min:pricein": 2.50, +"met:product:avg:priceout": 2.50, "met:product:max:priceout": 2.50, "met:product:min:priceout": 2.50} +] diff --git a/test/postgres/fixtures/view12.json b/test/postgres/fixtures/view12.json new file mode 100644 index 00000000..e575b647 --- /dev/null +++ b/test/postgres/fixtures/view12.json @@ -0,0 +1,7 @@ +[ +{"dim:client:name": "Somboom", "dim:client:cpf": "500.345.583-65","dim:client:id": "7"}, +{"dim:client:name": "Laci", "dim:client:cpf": "787.785.521-41","dim:client:id": "8"}, +{"dim:client:name": "Rosalin", "dim:client:cpf": "463.478.120-45","dim:client:id": "9"}, +{"dim:client:name": "Firoz", "dim:client:cpf": "352.324.206-15","dim:client:id": "10"}, +{"dim:client:name": "Ravindra", "dim:client:cpf": "944.189.449-40","dim:client:id": "11"} +] diff --git a/test/postgres/fixtures/view13.json b/test/postgres/fixtures/view13.json new file mode 100644 index 00000000..0aa6b1b6 --- /dev/null +++ b/test/postgres/fixtures/view13.json @@ -0,0 +1,17 @@ +[ +{ "dim:sell:registered": true, "dim:sell:product.id": 53, "dim:sell:seller.id": 1 +, "dim:sell:client.id": 7, "dim:sell:datein": "2018-02-17", "met:sell:sum:quantity": 10 +, "met:sell:avg:quantity": 10 , "met:sell:count:quantity": 10}, +{ "dim:sell:registered": true, "dim:sell:product.id": 54, "dim:sell:seller.id": 2 +, "dim:sell:client.id": 8, "dim:sell:datein": "2018-01-23", "met:sell:sum:quantity": 12 +, "met:sell:avg:quantity": 12, "met:sell:count:quantity": 12}, +{ "dim:sell:registered": false, "dim:sell:product.id": 55, "dim:sell:seller.id": 3 +, "dim:sell:client.id": 0, "dim:sell:datein": "2018-01-25", "met:sell:sum:quantity": 5 +, "met:sell:avg:quantity": 5, "met:sell:count:quantity": 5}, +{ "dim:sell:registered": true, "dim:sell:product.id": 56, "dim:sell:seller.id": 4 +, "dim:sell:client.id": 9, "dim:sell:datein": "2018-03-22", "met:sell:sum:quantity": 2 +, "met:sell:avg:quantity": 2, "met:sell:count:quantity": 2}, +{ "dim:sell:registered": true, "dim:sell:product.id": 57, "dim:sell:seller.id": 5 +, "dim:sell:client.id": 10, "dim:sell:datein": "2018-02-21", "met:sell:sum:quantity": 10 +, "met:sell:avg:quantity": 10, "met:sell:count:quantity": 10} +] diff --git a/test/postgres/fixtures/view14.json b/test/postgres/fixtures/view14.json new file mode 100644 index 00000000..fb69ebb8 --- /dev/null +++ b/test/postgres/fixtures/view14.json @@ -0,0 +1,12 @@ +[ +{ "dim:buyout:datein": "2018-01-01", "dim:buyout:provider.id": 20, "dim:buyout:product.id": 53 +, "met:buyout:avg:quantity": 100,"met:buyout:max:quantity": 100,"met:buyout:min:quantity": 100}, +{ "dim:buyout:datein": "2018-01-01", "dim:buyout:provider.id": 21, "dim:buyout:product.id": 54 +, "met:buyout:avg:quantity": 120,"met:buyout:max:quantity": 120,"met:buyout:min:quantity": 120}, +{ "dim:buyout:datein": "2018-01-01", "dim:buyout:provider.id": 22, "dim:buyout:product.id": 55 +, "met:buyout:avg:quantity": 130,"met:buyout:max:quantity": 130,"met:buyout:min:quantity": 130}, +{ "dim:buyout:datein": "2018-01-01", "dim:buyout:provider.id": 23, "dim:buyout:product.id": 56 +, "met:buyout:avg:quantity": 140,"met:buyout:max:quantity": 140,"met:buyout:min:quantity": 140}, +{ "dim:buyout:datein": "2018-01-01", "dim:buyout:provider.id": 24, "dim:buyout:product.id": 57 +, "met:buyout:avg:quantity": 200,"met:buyout:max:quantity": 200,"met:buyout:min:quantity": 200} +] diff --git a/test/postgres/fixtures/view15.json b/test/postgres/fixtures/view15.json new file mode 100644 index 00000000..2b1819d2 --- /dev/null +++ b/test/postgres/fixtures/view15.json @@ -0,0 +1,7 @@ +[ +{"dim:provider:name": "ProviderA","dim:provider:id": 1 }, +{"dim:provider:name": "ProviderB","dim:provider:id": 2 }, +{"dim:provider:name": "ProviderC","dim:provider:id": 3 }, +{"dim:provider:name": "ProviderD","dim:provider:id": 4 }, +{"dim:provider:name": "ProviderE","dim:provider:id": 5 } +] diff --git a/test/postgres/fixtures/view16.json b/test/postgres/fixtures/view16.json new file mode 100644 index 00000000..0beddf2f --- /dev/null +++ b/test/postgres/fixtures/view16.json @@ -0,0 +1,7 @@ +[ +{"dim:distribute:provider.id": 1,"dim:distribute:product.id": 53}, +{"dim:distribute:provider.id": 2,"dim:distribute:product.id": 54}, +{"dim:distribute:provider.id": 3,"dim:distribute:product.id": 55}, +{"dim:distribute:provider.id": 4,"dim:distribute:product.id": 56}, +{"dim:distribute:provider.id": 5,"dim:distribute:product.id": 57} +] \ No newline at end of file -- GitLab