Как Snowflake обрабатывает значения NULL? - PullRequest
0 голосов
/ 08 января 2020

Например, в моем фрейме данных у меня есть столбец значений NULL, которые я планирую редактировать позже, скажем, для буквенных оценок. Вот пример на данный момент:

import csv
import pandas as pd
import numpy as np
df = pd.read_csv('MOCK_DATA.csv')
df.head()

   id first_name last_name                     email  null field  blank_field
0   1      Paule    Tohill   ptohill0@macromedia.com       False         NaN
1   2       Rebe   Slyford  rslyford1@washington.edu        True         NaN
2   3   Angelita    Antoni        aantoni2@google.pl       False         NaN
3   4      Giffy      Dehm       gdehm3@berkeley.edu       False         NaN
4   5        Rob    Beadle       rbeadle4@taobao.com       False         NaN

Я хочу импортировать данные, чтобы позднее изменить тип столбца blank_field. Я понимаю, как использовать SQLAlchemy с соединителем Python.

df.to_sql(con=con, name='Grades', if_exists='replace', flavor='mysql')

Нужно ли здесь что-либо указывать, чтобы изменить blank_field -колонку? Как Snowflake будет обрабатывать значения NaN?

1 Ответ

0 голосов
/ 08 января 2020

Длина столбца будет максимальной из самого длинного введенного значения или VARCHAR(16777216), если столбец содержит только NULL.

. После создания таблицы вы можете увеличить размер столбца varchar, но вы не может уменьшить его. (Только в очень ограниченных случаях, когда вы не подходите для использования VARCHAR (MAX). Вы платите только за то, что действительно храните, а производительность зависит от максимальной длины данных, а не от допустимого предела).

https://docs.snowflake.net/manuals/sql-reference/sql/alter-table-column.html

create or replace temp table x as
select $1 as c1,$2 as c2
from values
('NaN',NULL)
;

desc table x;

create or replace temp table y as
select $1 as c1,$2 as c2
from values
('NaN',NULL)
,('A','B')
;

desc table y;

create or replace temp table z as
select $1 as c1,$2 as c2
from values
('A','B')
,('NaN',NULL)
;

desc table z;
...