AWS S3にCSVファイルがあり、AWS Glueにロードされています。つまり、S3のソースデータファイルに変換を適用します。 PySparkスクリプト環境を提供します。データは多少のようになります。カラムの数値にSQLクエリーでアルファベットが含まれているかどうかを確認する方法
結果はこのようにする必要があり期待"ID","CNTRY_CD","SUB_ID","PRIME_KEY","DATE"
"123","IND","25635525","11243749772","2017-10-17"
"123","IND","25632349","112322abcd","2017-10-17"
"123","IND","25635234","11243kjsd434","2017-10-17"
"123","IND","25639822","1124374343","2017-10-17"
:ここで私はその結果アルファベットが含まれていてもよい整数型の名「PRIME_KEY」でフィールドに取り組んでいます
"123","IND","25632349","112322abcd","2017-10-17"
"123","IND","25635234","11243kjsd434","2017-10-17"
不正なデータ形式です。
ここで、Integer型の主キー列にSQLクエリを使用する数値だけでなく、英数字が含まれているかどうかを調べる必要があります。これまでのところ、私は、以下のいずれかのようにこれを行うには、正規表現のいくつかのバリエーションを試してみましたが、ない運:
SELECT *
FROM table_name
WHERE column_name IS NOT NULL AND
CAST(column_name AS VARCHAR(100)) LIKE \'%[0-9a-z0-9]%\'
ソーススクリプト:
:args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glueContext = GlueContext(SparkContext.getOrCreate())
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
# s3 output directory
output_dir = "s3://aws-glue-scripts../.."
# Data Catalog: database and table name
db_name = "sampledb"
glue_tbl_name = "sampleTable"
datasource = glueContext.create_dynamic_frame.from_catalog(database = db_name, table_name = glue_tbl_name)
datasource_df = datasource.toDF()
datasource_df.registerTempTable("sample_tbl")
invalid_primarykey_values_df = spark.sql("SELECT * FROM sample_tbl WHERE CAST(PRIME_KEY AS STRING) RLIKE '([a-z]+[0-9]+)|([0-9]+[a-z]+)'")
invalid_primarykey_values_df.show()
は、このスクリプトの出力は下に与えられていません
+ --- + -------- + -------- + ------------ + ---------- + ----------- + --------------- +
| ID | CNTRY_CD | SUB_ID | PRIME_KEY | DATE |
+ --- + -------- + -------- + ------------ + ---------- + ----------- + --------------- +
| 123 | IND | 25635525 | [11243749772、null] | 2017-10-17 | 12030343 | [null、112322ab .. | 2017-10-17 |
| 123 | IND | 25635234 | [null、11243kjsd .. | 2017-10-17 |
| 123 | IND | 25639822 | [1124374343、null] | 2017-10-17 |
+ -------- + -------- + -------------------- + ------ ---- + ----------- + --------------- +
私が取り組んでいるフィールドの値を強調しました。ソースデータとは多少異なって見えます。
これに関するお手伝いがあれば幸いです。おかげ