BigQuery verilerini nasıl sorgularsınız? Bu makalede Python’da BigQuery verilerini sorgulamanın 3 yolundan bahsedeceğiz.
Environment
conda install notebook google-cloud-bigquery sqlalchemy pybigquery
Credentials
Google Cloud’un yerel olarak kimliğini doğrulamak için Google Cloud SDK’yı yüklemeniz ve aşağıdaki komut satırı üzerinden oturum açmanız/kimlik doğrulaması yapmanız gerekir. Daha fazla bilgi resmi belgelerde bulunabilir.
gcloud auth login
Bir kimlik bilgisi dosyası aracılığıyla kimlik doğrulaması yapmak için bir hizmet hesabı oluşturabilir ve hizmet hesabından kimlik bilgilerini alabilirsiniz: Google bulut hizmeti hesabı sayfasına gidin, bir projeye tıklayın, “+HİZMET HESABI OLUŞTUR” seçeneğine tıklayın, ardından bir kimlik bilgisi oluşturacaktır. JSON dosyası. Aşağıdaki örneklerde, bu kimlik bilgisi dosyasını “BIGQUERY_CREDENTIAL” olarak yeniden adlandırdık.
BigQuery için SQLAlchemy
pybigquery projesi, BigQuery için bir SQLAlchemy aracı uygular. SQLAlchemy, Python’da SQL verilerini okumak için güçlü bir araçtır. İşte belgelerden SQLAlchemy’nin bir açıklaması:
SQLAlchemy, uygulama geliştiricilerine SQL’in tam gücünü ve esnekliğini veren Python SQL araç takımı ve Nesne İlişkisel Eşleştiricisidir.
SQLAlchemy’yi kullanmak için ilk adım, create_engine() kullanarak bağlantı kurmaktır. Bu fonksiyonun argümanlarında “bigquery://” ile bağlanmaya çalıştığımız veritabanını ve kimlik bilgisi dosyasının yolunu tanımlıyoruz. Yerel olarak çalıştırıyorsanız ve yerel olarak kimlik doğrulaması yapıyorsanız, aşağıdakileri kimlik bilgisi olmadan çalıştırabilirsiniz. Çıktı verileri büyükse, varsayılan olarak 5000 olan dizi boyutunu artırabiliriz.
BigQuery ile bağlantı kurduktan sonra, verileri sorgulamanın birden çok yolu vardır. İlerleme yöntemi, doğrudan bir Pandas dataframe alabilmek için Pandas’tan pd.read_sql kullanmaktır. pd.read_sql işlevinde ihtiyacımız olan tek şey belirtilen sorgu ve bağlantıdır.
Sorgularımızı parametreleştirmek genellikle yararlıdır. SQLAlchemy, sorguyu girdi olarak kabul eden ve parametreleştirmeleri destekleyen yerleşik bir text() fonksiyonu sağlar. Alternatif olarak, sorguda parametreleri f-strings olarak yazabilirsiniz.
Google BigQuery için Python İstemcisi
İkinci yaklaşım, BigQuery için resmi Python İstemcisini kullanmaktır. Yerel olarak çalıştırıyorsanız ve kimlik doğrulaması yapıyorsanız, kimlik bilgilerini tanımlamanız gerekmez ve client=bigquery.Client() kısmı çalışacaktır.
bq komut satırı aracı
Üçüncü yaklaşım, bq komut satırı aracını çalıştırmak için alt işlemi kullanmaktır. Sorgu komutu bq sorgusudur. Çıktı formatını csv olarak tanımlamak ve çalıştırmak istediğimiz sorguları belirtmek için sorguya flaglar iletebiliriz. Ardından Python’da komut satırı kodunu çalıştırmak için alt işlemi kullanabiliriz.
bq komut satırı aracı, sorgu parametrelerini destekler. Aşağıdaki örnekte, parametrenin adını, türünü ve değer bilgilerini tanımlamak için –parameter bayrağını geçiyoruz. Sorgunun kendisinde bir parametre belirtmek için @parameter_name kullanırız. Unutulmaması gereken başka bir şey de, çıktının çok fazla satırı varsa, –max_rows bayrağını büyük bir sayı olacak şekilde artırabiliriz.