BigQuery Python: ਕਵੈਰੀਆਂ ਪ੍ਰੌਕਸੀ ਰਾਹੀਂ ਚੱਲਦੀਆਂ ਹਨ, ਡਾਊਨਲੋਡ ਫੇਲ ਹੁੰਦੇ ਹਨ
ਜਾਂਚੋ ਕਿ BigQuery Python ਨਤੀਜੇ ਦਾ ਡਾਊਨਲੋਡ ਕਵੈਰੀ ਦੇ HTTP ਰਾਹ ਤੋਂ ਵੱਖਰਾ Storage API ਕਲਾਇੰਟ ਬਣਾਉਂਦਾ ਹੈ ਜਾਂ ਨਹੀਂ।
ਕਵੈਰੀ ਸਫਲਤਾਪੂਰਵਕ ਪੂਰੀ ਹੋ ਸਕਦੀ ਹੈ ਅਤੇ ਫਿਰ ਵੀ ਇਸਦਾ ਨਤੀਜਾ pandas ਵਿੱਚ ਡਾਊਨਲੋਡ ਕਰਦਿਆਂ ਫੇਲ ਹੋ ਸਕਦੀ ਹੈ। BigQuery Python ਲਾਇਬ੍ਰੇਰੀ ਉਸ ਡਾਊਨਲੋਡ ਲਈ ਵੱਖਰਾ BigQuery Storage API ਕਲਾਇੰਟ ਵਰਤ ਸਕਦੀ ਹੈ।
RowIterator.to_dataframe ਇੰਟਰਫੇਸ create_bqstorage_client, ਜਿਸਦਾ ਡਿਫੌਲਟ ਮੁੱਲ true ਹੈ, ਅਤੇ bqstorage_client ਆਰਗਿਊਮੈਂਟ ਦਾ ਦਸਤਾਵੇਜ਼ ਬਣਾਉਂਦਾ ਹੈ। ਉਹ ਸੈਟਿੰਗਾਂ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਮੌਜੂਦ ਨਿਰਭਰਤਾਵਾਂ ਦੇ ਨਾਲ ਪੜ੍ਹੋ। ਆਮ ਕਵੈਰੀ ਰਾਹ ਉੱਤੇ ਸਫਲਤਾ ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦੀ ਕਿ ਵਿਕਲਪਿਕ ਡਾਊਨਲੋਡ ਟ੍ਰਾਂਸਪੋਰਟ ਕੋਲ ਉਹੀ ਪ੍ਰੌਕਸੀ ਸਮਰਥਨ ਜਾਂ ਸੰਰਚਨਾ ਹੈ।
| ਪੜਾਅ | ਕੀ ਜਾਂਚਣਾ ਹੈ |
|---|---|
| ਪ੍ਰਮਾਣ-ਪੱਤਰ ਪ੍ਰਾਪਤੀ | ਪ੍ਰਮਾਣ-ਪੱਤਰ ਟ੍ਰਾਂਸਪੋਰਟ ਅਤੇ ਪਛਾਣ endpoint |
| ਕਵੈਰੀ ਭੇਜਣਾ ਅਤੇ ਪੋਲ ਕਰਨਾ | BigQuery ਕਲਾਇੰਟ ਦਾ ਬੇਨਤੀ ਰਾਹ |
| Storage API ਰਾਹੀਂ ਡਾਊਨਲੋਡ | Storage API ਕਲਾਇੰਟ ਅਤੇ ਇਸਦਾ ਟ੍ਰਾਂਸਪੋਰਟ |
ਨਿਯੰਤਰਿਤ ਤੁਲਨਾ ਲਈ, ਦਸਤਾਵੇਜ਼ੀ create_bqstorage_client=False ਵਿਕਲਪ ਉਸ ਵਾਧੂ ਕਲਾਇੰਟ ਨੂੰ ਆਪਣੇ ਆਪ ਬਣਨ ਤੋਂ ਬਚਾਉਂਦਾ ਹੈ। ਇਹ ਪਛਾਣਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ ਕਿ ਕਿਹੜਾ ਰਾਹ ਫੇਲ ਹੁੰਦਾ ਹੈ। ਇਹ ਪ੍ਰਦਰਸ਼ਨ ਉੱਤੇ ਅਸਰ ਪਾਉਣ ਵਾਲੀ ਟ੍ਰਾਂਸਪੋਰਟ ਚੋਣ ਹੈ, ਇਹ ਸਬੂਤ ਨਹੀਂ ਕਿ ਪ੍ਰੌਕਸੀ ਆਪ ਹੀ ਠੀਕ ਹੋ ਗਈ।
ਜੇ ਐਪਲੀਕੇਸ਼ਨ ਆਪਣਾ Storage API ਕਲਾਇੰਟ ਦਿੰਦੀ ਹੈ, ਤਾਂ ਉਸ ਕਲਾਇੰਟ ਨੂੰ ਜਾਣ-ਬੁੱਝ ਕੇ ਸੰਰਚਿਤ ਕਰੋ। ਇਹ ਨਾ ਮੰਨੋ ਕਿ ਦੂਜੇ ਕਲਾਇੰਟ ਨਾਲ ਜੁੜੀ ਕਸਟਮ HTTP ਵਸਤੂ ਇਸਨੂੰ ਮੁੜ ਸੰਰਚਿਤ ਕਰਦੀ ਹੈ।
ਪੁਰਾਣੀਆਂ ਉਦਾਹਰਨਾਂ ਅਪ੍ਰਚਲਿਤ httplib2 ਲਾਗੂਕਰਨ ਜਾਂ ਨਿੱਜੀ constructor ਹੁੱਕਾਂ ਦੀ ਚਰਚਾ ਕਰਦੀਆਂ ਹਨ। ਏਕੀਕਰਨ ਨੂੰ ਸਥਾਪਿਤ ਲਾਇਬ੍ਰੇਰੀ ਪੀੜ੍ਹੀ ਨਾਲ ਮਿਲਾਓ, ਅਤੇ ਫੇਲ ਪੜਾਅ ਨੂੰ ਰਿਪੋਰਟ ਵਿੱਚ ਰੱਖੋ। DataFrame ਬਦਲਣ ਦੀ ਗਲਤੀ ਅਤੇ ਰੱਦ ਕੀਤਾ ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ ਇੱਕੋ ਮੈਥਡ ਕਾਲ ਵਿੱਚ ਹੋਣ ’ਤੇ ਵੀ ਵੱਖਰੇ ਨਤੀਜੇ ਹਨ।