【问题标题】:How does Snowflake handle NULL values?Snowflake 如何处理 NULL 值?
【发布时间】:2020-01-07 21:50:25
【问题描述】:

例如,在我的数据框中,我有一列 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 值?

【问题讨论】:

    标签: python snowflake-cloud-data-platform


    【解决方案1】:

    列长度将是插入的最长值的最大值,如果列仅包含 NULL,则为 VARCHAR(16777216)

    然后您可以在创建表后增加 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;
    

    【讨论】:

      猜你喜欢
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多