bigqueryで正規表現を使用して文字列を分割するにはどうすればよいですか

J.soo

BigQueryデータテーブルのフィールドを分割したい。

サンプルケースを差し上げます。

==ケース1 ==ソースファイル= "idx1-cnt1-name1、idx2-cnt2-name2 ...同じパターン"

Result table
idx | cnt | name |
idx1,cnt1,name1
idx2,cnt2,name2,....

クエリ内:

select                      
    regexp_extract(split_col, r'([\d]*)-') as ItemIdx,  
    regexp_extract(split_col, r'-([\d]*)-') as Cnt,
    regexp_extract(split_col, r'-([\d]*)$') as TitleIdx
From (
Select pid,now, split(source field, ',') split_col from (       
SELECT * FROM table ))

しかし、この場合はコードを作成できません

このケース文字列には複数の区切り文字があります。

==ケース2 ==

ソース文字列= "item1-name1-type1-value1、....同じパターン"

Result Table
name | type
name1, type1
name2,type2

フィールド数が異なります。

しかし、2番目と3番目のフィールド値が必要です。

どうすればクエリを実行できますか。

ミハイル・ベリヤント

BigQueryのレガシーSQLを使用しているようです-以下の例(注-可能な限りBigQuery標準SQLを使用することを強くお勧めします-移行を検討してください)-以下は、ロジックを読みやすくして簡単に拡張できるように簡略化されています潜在的により類似したケースにそれ

ケース1 /例

#legacySQL
SELECT                      
    REGEXP_EXTRACT(split_col, r'^(.*?)-.*?-.*?$') AS idx,  
    REGEXP_EXTRACT(split_col, r'^.*?-(.*?)-.*?$') AS cnt,
    REGEXP_EXTRACT(split_col, r'^.*?-.*?-(.*?$)') AS name
FROM (
  SELECT SPLIT(source_field, ',') split_col 
  FROM (SELECT "idx1-cnt1-name1,idx2-cnt2-name2" source_field)
)

結果:

Row idx     cnt     name     
1   idx1    cnt1    name1    
2   idx2    cnt2    name2    

ケース2 /例

#legacySQL
SELECT                      
    REGEXP_EXTRACT(split_col, r'^.*?-(.*?)-.*?') AS name,  
    REGEXP_EXTRACT(split_col, r'^.*?-.*?-(.*?)-') AS type
FROM (
  SELECT SPLIT(source_string, ',') split_col 
  FROM (SELECT "item1-name1-type1-value1, item2-name2-type2-value2" source_string)
)  

結果:

Row name    type     
1   name1   type1    
2   name2   type2    

以下は同じ例ですが、BigQuery標準SQLの場合です(実際に類似しているのでケース2のみ)

#standardSQL
WITH `project.dataset.table` AS (
  SELECT "item1-name1-type1-value1, item2-name2-type2-value2" source_string
)
SELECT 
  REGEXP_EXTRACT(split_col, r'^.*?-(.*?)-.*?') AS name,  
  REGEXP_EXTRACT(split_col, r'^.*?-.*?-(.*?)-') AS type
FROM `project.dataset.table`, UNNEST(SPLIT(source_string, ',')) split_col

明らかに-同じ結果

Row name    type     
1   name1   type1    
2   name2   type2    

さらに別のオプションは-

#standardSQL
WITH `project.dataset.table` AS (
  SELECT "item1-name1-type1-value1, item2-name2-type2-value2" source_string
)
SELECT 
  SPLIT(split_col, '-')[SAFE_OFFSET(1)] AS name,  
  SPLIT(split_col, '-')[SAFE_OFFSET(2)] AS type
FROM `project.dataset.table`, UNNEST(SPLIT(source_string, ',')) split_col

等々 ...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

正規表現を使用して文字列を{}で分割するにはどうすればよいですか?

分類Dev

文字列を区切り文字として使用して、正規表現を使用して文字列を分割するにはどうすればよいですか?

分類Dev

PHPで正規表現を使用して文字列を部分文字列の配列に分割するにはどうすればよいですか?

分類Dev

正規表現を使用して、制限付きで複数の区切り文字で文字列を分割するにはどうすればよいですか?

分類Dev

正規表現を使用して部分文字列を抽出するにはどうすればよいですか?

分類Dev

正規表現を使用してGroovyの文字列を除外するにはどうすればよいですか?

分類Dev

PHP正規表現を使用して文字列を抽出するにはどうすればよいですか?

分類Dev

Oracle SQL正規表現を使用して文字列を作成するにはどうすればよいですか?

分類Dev

AS3の正規表現を使用して、すべての空白で文字列を分割するにはどうすればよいですか?

分類Dev

Rust正規表現を使用して文字列を分割し、区切り文字を保持するにはどうすればよいですか?

分類Dev

Dartで正規表現を使用して9文字の文字列を分割するにはどうすればよいですか?

分類Dev

正規表現を使用して複雑な区切り文字で文字列を分割するにはどうすればよいですか?

分類Dev

正規表現を分割して要素を配列にするにはどうすればよいですか?

分類Dev

正規表現条件に基づいて区切り文字を使用してVBAの配列を分割するにはどうすればよいですか?

分類Dev

スプリッター部分を消費せずに正規表現を使用して文字列を分割するにはどうすればよいですか?

分類Dev

正規表現を使用して、括弧とカンマで文字列を分割するにはどうすればよいですか?

分類Dev

正規表現を使用してc#で文字列を分割するにはどうすればよいですか?

分類Dev

正規表現を使用して単語の境界で分割するにはどうすればよいですか?

分類Dev

正規表現を使用してメタタグの文字列を分割するにはどうすればよいですか?

分類Dev

正規表現を使用して2つの文字列を分割するにはどうすればよいですか?

分類Dev

正規表現| PowerShell:下線で文字列を分割するにはどうすればよいですか?

分類Dev

正規表現で文字列を分割するにはどうすればよいですか?

分類Dev

文字列を正規表現の非定数に分割するにはどうすればよいですか(C#)

分類Dev

正規表現を使用して文字を反復処理するにはどうすればよいですか?

分類Dev

clojureで複数の正規表現を定義して文字列を分割するにはどうすればよいですか?

分類Dev

正規表現を使用してawk列を選択するにはどうすればよいですか?

分類Dev

C#で正規表現を使用して文字列から不要な文字をすべて削除するにはどうすればよいですか?

分類Dev

正規表現を使用して配列から選択するにはどうすればよいですか?

分類Dev

正規表現を使用して、前に数字、後ろに文字しかない文字列を取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    正規表現を使用して文字列を{}で分割するにはどうすればよいですか?

  2. 2

    文字列を区切り文字として使用して、正規表現を使用して文字列を分割するにはどうすればよいですか?

  3. 3

    PHPで正規表現を使用して文字列を部分文字列の配列に分割するにはどうすればよいですか?

  4. 4

    正規表現を使用して、制限付きで複数の区切り文字で文字列を分割するにはどうすればよいですか?

  5. 5

    正規表現を使用して部分文字列を抽出するにはどうすればよいですか?

  6. 6

    正規表現を使用してGroovyの文字列を除外するにはどうすればよいですか?

  7. 7

    PHP正規表現を使用して文字列を抽出するにはどうすればよいですか?

  8. 8

    Oracle SQL正規表現を使用して文字列を作成するにはどうすればよいですか?

  9. 9

    AS3の正規表現を使用して、すべての空白で文字列を分割するにはどうすればよいですか?

  10. 10

    Rust正規表現を使用して文字列を分割し、区切り文字を保持するにはどうすればよいですか?

  11. 11

    Dartで正規表現を使用して9文字の文字列を分割するにはどうすればよいですか?

  12. 12

    正規表現を使用して複雑な区切り文字で文字列を分割するにはどうすればよいですか?

  13. 13

    正規表現を分割して要素を配列にするにはどうすればよいですか?

  14. 14

    正規表現条件に基づいて区切り文字を使用してVBAの配列を分割するにはどうすればよいですか?

  15. 15

    スプリッター部分を消費せずに正規表現を使用して文字列を分割するにはどうすればよいですか?

  16. 16

    正規表現を使用して、括弧とカンマで文字列を分割するにはどうすればよいですか?

  17. 17

    正規表現を使用してc#で文字列を分割するにはどうすればよいですか?

  18. 18

    正規表現を使用して単語の境界で分割するにはどうすればよいですか?

  19. 19

    正規表現を使用してメタタグの文字列を分割するにはどうすればよいですか?

  20. 20

    正規表現を使用して2つの文字列を分割するにはどうすればよいですか?

  21. 21

    正規表現| PowerShell:下線で文字列を分割するにはどうすればよいですか?

  22. 22

    正規表現で文字列を分割するにはどうすればよいですか?

  23. 23

    文字列を正規表現の非定数に分割するにはどうすればよいですか(C#)

  24. 24

    正規表現を使用して文字を反復処理するにはどうすればよいですか?

  25. 25

    clojureで複数の正規表現を定義して文字列を分割するにはどうすればよいですか?

  26. 26

    正規表現を使用してawk列を選択するにはどうすればよいですか?

  27. 27

    C#で正規表現を使用して文字列から不要な文字をすべて削除するにはどうすればよいですか?

  28. 28

    正規表現を使用して配列から選択するにはどうすればよいですか?

  29. 29

    正規表現を使用して、前に数字、後ろに文字しかない文字列を取得するにはどうすればよいですか?

ホットタグ

アーカイブ