File size: 5,292 Bytes
85c3f44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dc20d40
 
 
85c3f44
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
{
    "input_parameters": [
        {
            "name": "question",
            "type": "string",
            "description": "Human readable question about information in teh company database",
            "required": true
        }
    ],
    "output_schema": {
        "type": "object",
        "properties": {
            "columns": {
                "type": "array",
                "items": {
                    "type": "string"
                },
                "description": "Only include necessary columns. Each column must match the columnTable documentation. DO NOT invent columns."
            },
            "filters": {
                "type": "array",
                "items": {
                    "type": "object",
                    "properties": {
                        "col": {
                            "type": "string"
                        },
                        "op": {
                            "type": "string"
                        },
                        "val": {}
                    },
                    "required": [
                        "col",
                        "op",
                        "val"
                    ]
                },
                "description": "Use operators: ==, !=, >, <, >=, <=, in, not in, is null, is not null. Use 'extras' key for like/ilike."
            },
            "metrics": {
                "type": "array",
                "minItems": 0,
                "items": {
                    "type": "object",
                    "properties": {
                        "label": {
                            "type": "string",
                            "description": "Name of the output column for the metric"
                        },
                        "expressionType": {
                            "type": "string",
                            "enum": [
                                "SQL",
                                "SIMPLE"
                            ],
                            "description": "Type of expression used. Typically 'SQL'."
                        },
                        "sqlExpression": {
                            "type": "string",
                            "description": "SQL expression to calculate the metric, such as 'COUNT(*)' or 'AVG(score)'"
                        }
                    },
                    "required": [
                        "label",
                        "expressionType",
                        "sqlExpression"
                    ]
                },
                "description": "Either an empty array, or an array of expression objects with 'label', 'expressionType', and 'sqlExpression'."
            },
            "orderby": {
                "type": "array",
                "minItems": 0,
                "items": {
                    "type": "array",
                    "items": [
                        {
                            "type": "string",
                            "description": "Column name"
                        },
                        {
                            "type": "boolean",
                            "description": "Column name. To sort in acending order use False and in decending order use True"
                        }
                    ],
                    "minItems": 2,
                    "maxItems": 2
                },
                "description": "Either an empty array, or a list of [column_name, is_ascending] pairs. Column must be in 'columns'."
            },
            "groupby": {
                "type": "array",
                "description": "Optional list of column names to group results by. Grouping is used to aggregate rows that share the same values in the specified columns, often used in combination with metrics.",
                "minItems": 0,
                "items": {
                    "type": "string",
                    "description": "A column name to group by, should be one or more of theß columns used in the columns item"
                }
            },
            "row_limit": {
                "type": "integer",
                "default": 10,
                "description": "Default: 10, max: 30."
            }
        },
        "required": [
            "columns",
            "filters",
            "metrics",
            "orderby",
            "grouby",
            "row_limit"
        ]
    },
    "example": {
        "input": "Human readable question",
        "output": {
            "columns": [
                "column_name1",
                "column_name2"
            ],
            "filters": [
                {
                    "col": "column_name",
                    "op": "operator",
                    "val": "value"
                }
            ],
            "metrics": [
                {
                    "label": "column_name",
                    "expressionType": "expression",
                    "sqlExpression": "SQL expression to calculate the metric"
                }
            ],
            "grouby": [
                "column_name2"
            ],
            "orderby": [
                [
                    "column_name",
                    "(true) or (false)"
                ]
            ],
            "row_limit": 10
        }
    }
}