From d802048c3a9b7b1fc0a0c739b3d3de302a0ee191 Mon Sep 17 00:00:00 2001 From: Pritimay Sarkar Date: Fri, 9 Feb 2024 22:10:33 +0530 Subject: [PATCH] clean junk data --- scripts/delete_junk_samples.py | 55 ++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 scripts/delete_junk_samples.py diff --git a/scripts/delete_junk_samples.py b/scripts/delete_junk_samples.py new file mode 100644 index 0000000..ab6d21f --- /dev/null +++ b/scripts/delete_junk_samples.py @@ -0,0 +1,55 @@ +from firebase_admin import firestore +import os +import firebase_admin +from datetime import datetime, timedelta +from google.cloud.firestore_v1.base_query import FieldFilter + +def delete_documents_in_batch(collection_ref, batch_size): + # Query to get all documents + query = collection_ref.order_by('testTime', direction=firestore.Query.DESCENDING).limit(batch_size) + documents = query.stream() + + batch = collection_ref._client.batch() # Internal batch object + + # Delete documents in batch + count = 0 + for doc in documents: + # print(doc.to_dict) + batch.delete(doc.reference) + count += 1 + + # Commit the batch + batch.commit() + print(f'Deleted {count} documents in batch') + + +def delete_latest_documents(collection_name, num_documents, batch_size): + + file_path = os.getcwd() + '/keys' + '/hpos-af3cc-firebase-adminsdk.json' + cred = firebase_admin.credentials.Certificate(fr'{file_path}') + + firebase_admin.initialize_app(cred) + + # Initialize Firestore client + db = firestore.client() + + # Reference to the collection + collection_ref = db.collection(collection_name) + + # Delete documents in batches + remaining_documents = num_documents + while remaining_documents > 0: + current_batch_size = min(remaining_documents, batch_size) + delete_documents_in_batch(collection_ref, current_batch_size) + remaining_documents -= current_batch_size + + +if __name__ == "__main__": + # Specify your Firestore collection name + collection_name = 'testData' + + num_documents = 10000 + batch_size = 500 + + # Call the function to delete the latest documents in batches + delete_latest_documents(collection_name, num_documents, batch_size)