title: Designing a GraphQL schema for an analytics platform
body: <p>I'm just starting to explorer GraphQL as an option for my analytic platform API layer.</p>
  
  <p>My UI is mainly built from tables and charts. most of the times the data represents some DB columns grouped by a dimension.</p>
  
  <p>I've found the following article <a href="https://www.microsoft.com/developerblog/2017/09/28/data-independent-graphql-using-view-model-based-schemas/" rel="noreferrer">https://www.microsoft.com/developerblog/2017/09/28/data-independent-graphql-using-view-model-based-schemas/</a> from Microsoft, describing their take on how suck GraphQL schemas should be designed (see below).</p>
  
  <pre><code>type Query {
    channels(source: String!, query:String!, appId:String!, apiKey:String!): [Channel]
    lineCharts(source: String!, query:String!, appId:String!, apiKey:String!, filterKey:String, filterValues:[String]): [LineChart]
    pieCharts(source: String!, query:String!, appId:String!, apiKey:String!): [PieChart]
    barCharts(source: String!, query:String!, appId:String!, apiKey:String!, filterKey:String, filterValues:[String]): [BarChart]
  }
  
  type Channel {
    name: String
    id: Int
  }
  
  type LineChart {
    id: String
    seriesData : [Series]
  }
  
  type PieChart {
    id: String
    labels: [String]
    values: [Int]
  }
  
  type BarChart {
    id: String
    seriesData : [Series]
  }
  
  type Series {
    label: String
    x_values: [String]
    y_values: [Int]
  }
  </code></pre>
  
  <p>It seems to me that this design is strict, forcing any new chart to be added to the root Query. How can the schema be more generic, without loosing GraphQL benefits?</p>