LoginSignup
4
2

Snowflakeからステージ上のファイルをパースせずに読み込む

Last updated at Posted at 2024-04-27

経緯

  • 最近、Snowflakeに取り込もうとするデータがちょくちょく怪しい
  • ファイルに対してSelectをかけた後のデータはある意味壊れたデータになる為、元データを確認したい
  • しかしセキュリティの要件からs3からの直接ダウンロードはできない
  • AWS CLIから見に行くのもちょっと手間
  • どうせならSnowsightからみたいよね?

という事がちょくちょく発生しており、同じ事よくありそうだよな?ということでちょっとしたスクリプト

実装結果

というわけでまずは実装結果が↓

python
import snowflake.snowpark as snowpark
from snowflake.snowpark.files import SnowflakeFile

def main(session: snowpark.Session):
    df = session.sql("SELECT BUILD_SCOPED_FILE_URL(@TEST_STAGE, 'utf_add_2403.csv')")
    file_list = df.toPandas().values.tolist()
    line_count = 2 # 全部読み取る必要はないので行は絞る
    re = []
    with SnowflakeFile.open(file_list[0][0]) as f:
        for i,line in enumerate(f):
            if i > line_count:
                break
            re.append(line.strip())

    rd = session.create_dataframe(re)
    return (rd)

↑を実行すると
スクリーンショット 2024-04-27 19.38.55.png
こんな感じに1行そのまま出力できるので、データバグってるか、かくにんできるよ!

ぼやき

元々
https://docs.snowflake.com/en/developer-guide/snowpark/reference/python/1.15.0/files
このあたりのドキュメントがあったので、困った時はこの辺りでできるんだろうなあとおもっていたのですが

…困ったので (´・ω・`)

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2