経緯
- 最近、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)
↑を実行すると
こんな感じに1行そのまま出力できるので、データバグってるか、かくにんできるよ!
ぼやき
元々
https://docs.snowflake.com/en/developer-guide/snowpark/reference/python/1.15.0/files
このあたりのドキュメントがあったので、困った時はこの辺りでできるんだろうなあとおもっていたのですが
…困ったので (´・ω・`)