@oldkingthor wrote:
I would like to create a dash plotly table that will group by the sales system code column and return the sum of all charges associated with a sales system code in a given time period.
I used datepickerrange to allow users to select a start date and end date and followed tried to follow this documentation to get my desired output, however I get this error message when I try to run my dash app locally:
ValueError: Invalid property specified for object of type plotly.graph_objs.Table: 'transforms ... Traceback (most recent call last) File "C:\Users\User\Desktop\test.py", line 82, in update_table performance['Rental Charge']], fill_color='lavender',align='left'), transforms=[ dict( typ='groupby', groups=performance['SalesSystemCode']
In order to help you replicate the error message here is the code I am using to run my dashboard
app = dash.Dash(__name__, external_stylesheets=external_stylesheets) #html layout app.layout = html.Div(children=[ html.H1(children='SAC Challenge Level 2 Dashboard', style={ 'textAlign': 'center', 'height': '10' }), html.Div(children=''' Objective: Studying the impact of supervision on the performance of sales executives in Area 1 '''), dcc.DatePickerRange( id='year_month', start_date=min(merged_hr['Month'].dt.date.tolist()), end_date=max(merged_hr['Month'].dt.date.tolist()), calendar_orientation='vertical', ), dcc.Graph( id='performancetable', ) ]) @app.callback(dash.dependencies.Output('performancetable','figure'), [dash.dependencies.Input('year_month', 'start_date'), dash.dependencies.Input('year_month', 'end_date')]) def update_table(start_date,end_date): performance = merged_hr[(merged_hr['Month'] > start_date) & (merged_hr['Month'] < end_date)] return { 'data': [ go.Table( header=dict(values=list(performance.columns),fill_color='paleturquoise',align='left'), cells=dict(values=[performance['Month'],performance['SalesSystemCode'],performance['TITULO'], performance['HireDate'],performance['MonthsofEmploymentRounded'],performance['SupervisorEmployeeID'], performance['BASE'],performance['carallowance'],performance['Commission_Target'], performance['Fulfilment %'], performance['Commission Accrued'],performance['Commission paid'], performance['Características (D)'],performance['Características (I)'],performance['Características (S)'], performance['Características (C)'],performance['Motivación (D)'],performance['Motivación (I)'], performance['Motivación (S)'],performance['Motivación (C)'],performance['Bajo Stress (D)'], performance['Bajo Stress (I)'],performance['Bajo Stress (S)'],performance['Bajo Stress (C)'], performance['Rental Charge']], fill_color='lavender',align='left'), transforms=[ { type: 'aggregate', groups: performance['SalesSystemCode'], aggregation: [ {target: 'Rental Charge', func:'sum'} ] }], 'layout': go.Layout( title='Performe', paper_bgcolor='black', ) } if __name__ == '__main__': app.run_server(debug=True)
and here is a sample of the data I am using in merged_hr:
{'Month': {0: Timestamp('2017-12-01 00:00:00'), 1: Timestamp('2017-12-01 00:00:00'), 2: Timestamp('2017-12-01 00:00:00'), 3: Timestamp('2017-12-01 00:00:00'), 4: Timestamp('2017-12-01 00:00:00'), 5: Timestamp('2017-12-01 00:00:00'), 6: Timestamp('2017-12-01 00:00:00'), 7: Timestamp('2017-12-01 00:00:00'), 8: Timestamp('2017-12-01 00:00:00'), 9: Timestamp('2017-12-01 00:00:00')}, 'SalesSystemCode': {0: 91868.0, 1: 91868.0, 2: 91868.0, 3: 91868.0, 4: 91868.0, 5: 91868.0, 6: 91868.0, 7: 91868.0, 8: 91868.0, 9: 91868.0}, 'TITULO': {0: 'SALES SUPERVISOR', 1: 'SALES SUPERVISOR', 2: 'SALES SUPERVISOR', 3: 'SALES SUPERVISOR', 4: 'SALES SUPERVISOR', 5: 'SALES SUPERVISOR', 6: 'SALES SUPERVISOR', 7: 'SALES SUPERVISOR', 8: 'SALES SUPERVISOR', 9: 'SALES SUPERVISOR'}, 'BirthDate': {0: Timestamp('1982-11-05 00:00:00'), 1: Timestamp('1982-11-05 00:00:00'), 2: Timestamp('1982-11-05 00:00:00'), 3: Timestamp('1982-11-05 00:00:00'), 4: Timestamp('1982-11-05 00:00:00'), 5: Timestamp('1982-11-05 00:00:00'), 6: Timestamp('1982-11-05 00:00:00'), 7: Timestamp('1982-11-05 00:00:00'), 8: Timestamp('1982-11-05 00:00:00'), 9: Timestamp('1982-11-05 00:00:00')}, 'HireDate': {0: Timestamp('2012-04-23 00:00:00'), 1: Timestamp('2012-04-23 00:00:00'), 2: Timestamp('2012-04-23 00:00:00'), 3: Timestamp('2012-04-23 00:00:00'), 4: Timestamp('2012-04-23 00:00:00'), 5: Timestamp('2012-04-23 00:00:00'), 6: Timestamp('2012-04-23 00:00:00'), 7: Timestamp('2012-04-23 00:00:00'), 8: Timestamp('2012-04-23 00:00:00'), 9: Timestamp('2012-04-23 00:00:00')}, 'SupervisorEmployeeID': {0: 7935, 1: 7935, 2: 7935, 3: 7935, 4: 7935, 5: 7935, 6: 7935, 7: 7935, 8: 7935, 9: 7935}, 'BASE': {0: 895, 1: 895, 2: 895, 3: 895, 4: 895, 5: 895, 6: 895, 7: 895, 8: 895, 9: 895}, 'carallowance': {0: 350, 1: 350, 2: 350, 3: 350, 4: 350, 5: 350, 6: 350, 7: 350, 8: 350, 9: 350}, 'Commission_Target': {0: 708.33, 1: 708.33, 2: 708.33, 3: 708.33, 4: 708.33, 5: 708.33, 6: 708.33, 7: 708.33, 8: 708.33, 9: 708.33}, 'Area': {0: 'Area 1', 1: 'Area 1', 2: 'Area 1', 3: 'Area 1', 4: 'Area 1', 5: 'Area 1', 6: 'Area 1', 7: 'Area 1', 8: 'Area 1', 9: 'Area 1'}, 'Fulfilment %': {0: 1.0248618784530388, 1: 1.0248618784530388, 2: 1.0248618784530388, 3: 1.0248618784530388, 4: 1.0248618784530388, 5: 1.0248618784530388, 6: 1.0248618784530388, 7: 1.0248618784530388, 8: 1.0248618784530388, 9: 1.0248618784530388}, 'Commission Accrued': {0: 708.33, 1: 708.33, 2: 708.33, 3: 708.33, 4: 708.33, 5: 708.33, 6: 708.33, 7: 708.33, 8: 708.33, 9: 708.33}, 'Commission paid': {0: 1361.99, 1: 1361.99, 2: 1361.99, 3: 1361.99, 4: 1361.99, 5: 1361.99, 6: 1361.99, 7: 1361.99, 8: 1361.99, 9: 1361.99}, 'Características (D)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Características (I)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Características (S)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Características (C)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Motivación (D)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Motivación (I)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Motivación (S)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Motivación (C)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Bajo Stress (D)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Bajo Stress (I)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Bajo Stress (S)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Bajo Stress (C)': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}, 'Report month': {0: Timestamp('2017-07-01 00:00:00'), 1: Timestamp('2017-07-01 00:00:00'), 2: Timestamp('2017-07-01 00:00:00'), 3: Timestamp('2017-07-01 00:00:00'), 4: Timestamp('2017-07-01 00:00:00'), 5: Timestamp('2017-07-01 00:00:00'), 6: Timestamp('2017-07-01 00:00:00'), 7: Timestamp('2017-07-01 00:00:00'), 8: Timestamp('2017-09-01 00:00:00'), 9: Timestamp('2017-09-01 00:00:00')}, 'Rental Charge': {0: 30.0, 1: 24.95, 2: 30.0, 3: 22.5, 4: 18.7125, 5: 10.99, 6: 6.25, 7: 3.75, 8: 22.5, 9: 6.0}, 'ID Vendedor': {0: 91868.0, 1: 91868.0, 2: 91868.0, 3: 91868.0, 4: 91868.0, 5: 91868.0, 6: 91868.0, 7: 91868.0, 8: 91868.0, 9: 91868.0}, 'MonthsofEmploymentRounded': {0: 67.0, 1: 67.0, 2: 67.0, 3: 67.0, 4: 67.0, 5: 67.0, 6: 67.0, 7: 67.0, 8: 67.0, 9: 67.0}}
Posts: 1
Participants: 1