Выполните запрос SQL с синтаксисом pandas, чтобы повысить производительность - PullRequest
0 голосов
/ 18 февраля 2020

Я только что создал запрос, я хочу изменить его pandas python функция.

Я пробовал следующий код:

dataf_umts_car_query = 'SELECT * FROM [toolDB].[dbo].[df_umts_carrier]'

esn_umts_rnc_query = 'SELECT * FROM [toolDB].[dbo].[esn_umts_intra_sho]'

esn_umts_missing_relation_table_query = 'SELECT * FROM [toolDB].[dbo].[esn_missing_in_DF_umts]'

dataf_umts_car_df = pd.read_sql(dataf_umts_car_query, engine)

esn_umts_rnc_df = pd.read_sql(esn_umts_rnc_query, engine)

esn_umts_missing_relation_table_df = pd.read_sql(esn_umts_missing_relation_table_query, engine)

esn_umts_missing_relation_table_df['target_rnc'] = np.where(esn_umts_missing_relation_table_df['n_cell_name'].isin(dataf_umts_car_df.cell_name_umts), dataf_umts_car_df.rnc, esn_umts_rnc_df.ucell_rnc)

Но он не работает и это запрос SQL:

UPDATE  [toolDB].[dbo].[esn_missing_in_DF_umts] 
SET [toolDB].[dbo].[esn_missing_in_DF_umts].[target_rnc] = (CASE WHEN ESN_M_UMTS.target_vendor = 'HUA' THEN umts_carrier.rnc ELSE SHO.ucell_rnc END )
FROM [toolDB].[dbo].[esn_missing_in_DF_umts] ESN_M_UMTS
LEFT JOIN [toolDB].[dbo].[df_umts_carrier] umts_carrier ON  ESN_M_UMTS.n_cell_name = umts_carrier.cell_name_umts
LEFT JOIN [toolDB].[dbo].[esn_umts_intra_sho] SHO ON ESN_M_UMTS.n_cell_name IN (SHO.urelation, SHO.ucell)

Я использовал этот запрос для огромной базы данных с миллионом строк, но он выполняет запрос навсегда.

Так что мне нужен лучший способ выполнить эту функцию или запрос такого типа.

Примечание. В таблице есть дубликаты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...