Big Query - int sütununu float'a dönüştürün

Oct 21 2020

Ben adında bir sütun dönüştürmek istiyoruz laudergelen intetmek floatBig Query. Masam çağrıldı historical. Bu SQL sorgusunu kullanabildim

 SELECT *, CAST(lauder as float64) as temp 
FROM sandbox.dailydev.historical

Sorgu çalışır ancak değişiklikler tabloya kaydedilmez. Ne yapmalıyım?

Yanıtlar

1 MFR Oct 21 2020 at 10:13

Bunları daha sonra kullanmak için geçici bir tabloya kaydetmek ister misiniz?

Aşağıdaki gibi geçici bir tabloya kaydedebilir ve ardından "geçici" ye bakabilirsiniz.

with temp as
( SELECT *, CAST(lauder as float64) 
FROM sandbox.dailydev.historical)
2 MikhailBerlyant Oct 21 2020 at 15:30

Eğer kullanırsanız SELECT *, tüm tabloyu tarayacaksınız ve böylece maliyetiniz olacaktır. Tablo küçükse bu bir sorun olmamalı, ancak maliyet konusunda endişelenecek kadar büyükse - aşağıda başka bir yaklaşım var:

  1. gerekli veri türünün yeni sütununu eklemek için ALTER TABLE ADD COLUMN uygulayın

  2. yeni sütun için UPDATE uygula

    UPDATE tablo SET new_column = CAST (float64 olarak old_column) WHERE true

1 DanielZagales Oct 21 2020 at 14:04

Bir tablodaki sütun veri türünü değiştiremezsiniz https://cloud.google.com/bigquery/docs/manually-changing-schemas#changing_a_columns_data_type

Yapabilecekleriniz şudur:

  1. Üstte oturmak ve veri türü dönüşümünü yönetmek için bir görünüm oluşturun
  2. Yeni bir sütun oluşturun ve veri türünü float64 olarak ayarlayın ve içine değerler ekleyin
  3. Tablonun üzerine yaz

Yukarıda paylaştığım bağlantıdaki artılar ve eksiler dahil olmak üzere 2. ve 3. seçenekler iyi bir şekilde özetlenmiştir.

1 DiegoQueiroz Oct 21 2020 at 13:00

İfadeniz doğru. Ancak Big Query'deki tablo sütunları değişmezdir. Sorgunuzu çalıştırmanız ve sonuçları değiştirilmiş sütun ile yeni bir tabloya kaydetmeniz gerekir.

"Diğer"> "Sorgu ayarları" nı tıklayın ve "Hedef" bölümünde "Sorgu sonuçları için bir hedef tablo ayarla" yı seçin ve tablo adını doldurun. Oluşturulan tablo ile mevcut tablonun üzerine yazmak isteyip istemediğinizi bile seçebilirsiniz.

Bu ayarlar yapıldıktan sonra, sorgunuzu her zamanki gibi "Çalıştırın".

1 SoumendraMishra Oct 21 2020 at 14:56

Sen kullanabilirsiniz CREATE veya TABLOSU DEĞİŞTİRİN aynı tabloya verileriyle birlikte yapısal değişiklikleri yazmak için:

CREATE OR REPLACE TABLE sandbox.dailydev.historical
AS SELECT *, CAST(lauder as float64) as temp FROM sandbox.dailydev.historical;

Bu örnekte, historicaltablo ek bir sütun ile yeniden yapılandırılacaktır temp.