日々地道に成長

思いついたことを書いていきます。

【Digdag】digdagにおけるfor文の基本使用方法【基礎】

お疲れ様です。コーヒーです。

 

今回はDigdagのfor文の使用方法をまとめてみました。

for文はプログラムにおいて必須の部分ですので、Digdagにおいてもマスターしておくとよいと思います!

Digdagにおけるfor文の概要

今回使用するfor_eachオペレータの公式ドキュメントはこちらです!

docs.digdag.io

for_eachオペレータの実際の使用例は以下のようになります。

+repeat:
  for_each>:
  key: [a, b, c]
  _do:
  echo>: ${key}

上記はkey変数をループさせa,b,cを順番に出力するものになっております。

それぞれのタスクの役割は以下のようになってます。

  • for_each>:for文のループに使用される変数の指定
  • _do:実行するタスクの指定

また、for_eachで指定できる変数はJSON文字列も使用できます。

 

for文の基本的な使用方法は以上になります。

for文の応用的使い方については別で解説しようと考えています!

最後まで読んでいただきありがとうございました!!

【AWS】AWS認定クラウドプラクティショナー試験の概要

お疲れ様です。コーヒーです。

 

今回は最近AWS認定クラウドラクティショナーの資格勉強を始めたため、こちらの試験の概要についてまとめてみました!

今回試験を受ける経緯

現在自分はデータプレパレーション周りの知識を習得しています。

主にはSQLやETLツール等を使っているので、そこら辺と関連が深いAWSについても勉強しておきたいなと思い、今回試験を受けてみることにしてみました。

AWSについて

AWSAmazon Web Services)はAmazonが提供しているクラウドサービスのことです。

クラウドサービスは、ネットワークに接続されたコンピュータが様々なサービスをインターネット上で利用することができるものになります。

ストレージ、データベース、アプリケーション等の数多くのサービスを非常に便利に使用できる点からAWSは広く世界中で使用されているものになっています。

aws.amazon.com

AWS認定資格について

AWS認定資格は、AWSクラウドを利用するにあたり必要な知識とスキルの習得および能力の証明のために役に立つものになります。

AWS認定資格には、役割別認定資格と専門知識認定資格がありさらにそこから細かく分類分けが行われております。

自分の知識やスキルにあった資格試験を選択することができるため、試験を受けるときは自身のレベルにあったものを選ぶといいと思います!

今回自分が受けるものは一番の基礎となる役割別認定資格のベーシックにあたる、クラウドラクティショナー試験となってます。

(自分のAWSへの知識はS3を少し触ったことがある程度であるため、クラウドラクティショナー試験としました)

aws.amazon.com

クラウドラクティショナー試験について

AWS認定クラウドラクティショナー試験は、AWSクラウドの全体的な理解を証明するものになります。

AWS認定資格の中では最も難易度的には低いものになっているので、これから勉強しようという人には適している試験になります。

とは言っても推奨の知識としては以下のようになっております。

まとめ

これだけ聞くとものすごく大変そうに感じますが(今自分が感じていますが...)何とかなると信じて現在勉強中です!

これから、AWSの知識についてもブログとしてまとめていきたいとは考えております!

最後までお読みいただきありがとうございました!!

【awk】awkでcsvファイルの重複行を削除する方法

お疲れ様です。コーヒーです。

 

今回はawkを使用して重複行を削除する方法を紹介します。

 

awkについて

awkは入力として受け取った文字列に対して、フィールド区切り文字やレコード区切り文字を指定して、「列」に対する処理を行うためのコマンドです。

コンパイルがいらないこともあり手軽に使用できます。

しかし、一行ずつ処理をおこなうことなど癖も強いため慣れるまでは使いにくいかなという印象を自分は受けました。

 

awkで重複行を削除

 プログラムとしては以下になります。

awk -F "," -v 'OFS=,' '{if(!a[$1]++){print $1}}'

プログラムのそれぞれの意味を解説は以下のようになります。

 

-F ","

区切り文字の指定ができるオプション。今回はcsvファイルなので「,(カンマ)」を指定しています。

 

'OFS=,' 

出力区切り文字の指定ができるオプション。

今回は出力もcsv形式にしたかったので指定しました。

 

$1, $2, ..., $n, ...

第n列目のデータを表す変数です

 

'{if(!a[$1]++){print $1}}'

if文になります。個々の処理で重複行を削除しています。

 

今回は以上となります!

最後までお読みいただきありがとうございました。

 

 

 

【Python】Pythonエンジニア認定基礎試験合格までの道!

お疲れ様です。コーヒーです。

 

今回は自分がPythonエンジニア基礎試験に合格するために行ったことを紹介していきます!

同じような状況の人はぜひ参考に勉強を進めてみてください!

学習状況

  • 学習期間:1か月
  • 学習時間:毎日30分~1時間
  • pythob経験:大学時代に研究で使用(1~2年授業で使用したくらい)

自分の場合はpythonも基礎的な知識があったこともあり、割と短期間で取得が行えたのかなと思います。

しかし、pythonは大学時代から1年間ほとんど使用していませんでした。

そのため、細かいことはほとんど忘れていました...

pythonの勉強という意味では一から始めた形になっています。

もしプログラミングをいままで触ったことがない人は、もっと勉強時間を多くとる必要があると思います。

特にオブジェクト指向に関してや関数に関しては、初めから勉強すると多くの時間をとるところだと思うので追加の時間を確保してください。

 

勉強方法

  1. 過去問を解く
  2. 間違えた問題を理解するまで調べる

上の手順をひたすらにループして勉強していきました。

どの過去問でも80~90%ほどの正答率になれば、間違いなく合格すると思います!

何なら当日の試験時間はかなり余るくらいには成長できていると思います。

それでは、それぞれの方法を細かく説明します。

 

1.過去問を解く

過去問は以下二つのサイトを利用しました。

exam.diveintocode.jp

こちらのサイトは、受験登録が必要になります。

受けるたびに何種類かの問題からランダムに出題がされているようです。

何回か受けるたびに見たことのある問題が増えてくるとは思います。

 

study.prime-strategy.co.jp

3つの試験が用意されています。

内容としては一つ目より難しく感じましたがこちらの問題を難なく解ければ、試験の問題にも対応できると思います。

 

2.間違えた問題を理解するまで調べる

docs.python.org

とりあえず最初は公式のテキストを見ましょう。

Python検定の問題はここのテキストをもとに出題が行われるので読んでおくとよいです。

ただ、わかりにくい言い回しが多いのでここを見てわからない場合は別のサイトを見るなどを試しましょう。

 

また、プログラムに関しては自分で実際に入力するのが一番理解につながると思います。

自分は「Jupyter Notebook」を使用していました。手軽にプログラム入力できて便利なので、ぜひインストールしてみてください。

 

 

今回は簡潔に自分がPython試験に合格するまでに行ったことをまとめてみました。

プログラミング経験者なら簡単にとることのできる試験だと思うので、ぜひチャレンジしてみてはいいかなと思います!

 

 

 

【BigQuery】ビックデータのcsvファイル出力方法【GCS】

お疲れ様です。コーヒーです。

 

今回はBigQueryにおけるビッグデータの出力方法について解説していきます。

方法は複数あると思いますが、今回はその中でもおすすめの方法であるGCSへの出力方法を紹介しようと思います。

なお、embulkの[embulk-output-bigquery]を使用しての方法を試してみたのですが、ファイルの出力にとても時間がかかってしまったので、ビックデータの出力にはあまり向いていない方法だと思います。

使用するコマンドについて

bqコマンドとgsutilコマンドを使用するため、インストールしていない方はまず[Google Cloud SDK ]のインストールからお願いします。

cloud.google.com

BQからGCSへの出力する流れ

BQからGCSへの出力する流れはおおよそ以下のようになります。

  1. 出力するビックデータのテーブル作成
  2. 先ほど作成したテーブルをGCSへ分割出力
  3. 出力したビックデータを結合

それぞれの項目について詳しく解説していこうと思います。

 

1.出力するビッグデータのテーブル作成

こちらの段階では、出力するビッグデータをクエリで加工しテーブルを作成します。

BigQueryからGCSへ出力する際には、クエリの結果を直接出力することができません。

そのため、この段階であらかじめテーブルを作成しておく必要があります。

もともと出力したいビックデータのテーブルがある場合にはこの段階は飛ばしてもらっても大丈夫です。

2.BQテーブルをGCSへ分割出力

GCSへの出力にはbqコマンドを使用します。

一般的なビックデータでなければ以下方法で出力が可能です。

bq extract [出力対象テーブル名] [GCSのパス]

 サンプルとして入力すると以下のようになります。

bq extract dataset.table gs://sample/test.csv

しかし、上記方法ではビックデータの出力時には以下エラーになってしまいます。

Table gs://・・・・ too large to be exported to a single file. Specify a uri including a * to shard export. See 'Exporting data into one or more files' in https://cloud.google.com/bigquery/docs/exporting-data.

このエラーの解決方法はファイル名に*をつけることです。

bq extract dataset.table gs://sample/test_*.csv

こうすることで、自動で出力可能サイズに分割してくれます。

3.GCS上でビックデータの結合

上記方法で出力を行うともちろん複数ファイルに分かれてしまいます。

そのファイルを一つにまとめる必要があります。

やり方としてはgsutilコマンドの[compose]を使用します。

こちらのコマンドはGCS上のファイルをまとめる際に使用するコマンドです。

gsutil compose gs://sample/test_*.csv gs://sample/test.csv

 だだし、こちらのコマンドで結合できる上限は32ファイルまでです。

そのため32ファイル以上に分割が行われた場合には、複数回上記コマンドを使用して結合を繰り返してください。

 

以上でBQからGCSへのビックデータ出力方法は終了になります!

最後まで読んでいただきありがとうございました!!

 

【Linuxコマンド】mkdirコマンドで既存ディレクトリがある場合にエラーを出さない方法

お疲れ様です。コーヒーです。

 

今回はLinuxコマンドのmkdirコマンドのちょっと便利なオプションについての解説になります。

このオプションを使用すると、ディレクトリが存在していてもエラーをはかないためちょっとしたときに使えると便利です。

mkdirコマンドの概要

mkdirコマンドはディレクトリの作成を行えるコマンドです。

mkdir ディレクトリ名

-pオプションについて

mkdirコマンドにはオプションがあります。

その中の一つとして[-pオプション]があります。

このコマンドはディレクトリが存在していてもエラーメッセージを表示しなくなります。

設定方法は以下のようにします。

mkdir -p ディレクトリ名

それだけでなく、親ディレクトリが存在していなくても、子ディレクトリを作成することもできます。

mkdir -p 親ディレクトリ名/子ディレクトリ名

 

このオプションを使用することで一気にディレクトリを作成できるのでとても便利なオプションになっています。

常時使用してもいいのではないかと思うほど便利なため、ぜひ覚えておいてください。

 

今回は以上になります。

最後まで読んでいただきありがとうございました。

【Digdag BigQuery】DigdagのshコマンドからBigQueryのbqコマンドを使用する

お疲れ様です。コーヒーです。

 

今回はDigdagでのBigQueryの操作についてまとめていこうと思います。

DigdagでBigQueryを操作する方法は主に下記の3つがあります。

  1. DigdagのshコマンドからBigQueryのbqコマンドを使用する
  2. Digdagのbqコマンドを使用する

今回は1つ目のDigdagのshコマンドからBigQueryのbqコマンドを使用する方法について解説していきます。

BigQueryのbqコマンド概要について

BigQueryのbqコマンドのリファレンスについては下記になります。

cloud.google.com

bqコマンドを使用することでCLI上でBigQueryの操作を行うことが出来ます。

例としてはテーブルのコピーやクエリの実行等があります。

今回はクエリの実行をDigdag上で行います。

実行方法について

sh>: bq query --use_legacy_sql=false  < xxx.sql

上記のようにdigdagの[sh>]でbqコマンドを呼び出して実行します。

オプションで[--use_legacy_sql]でfalseを指定しています。

これは標準SQLを使用するために必要な設定となっています。

そのほかにもいろいろな設定を選べるため(replace設定やパーティションの設定等)それぞれ必要な時に調べてみるとよいと思います。

 

今回は以上になります。

次回は2つ目のDigdagのbqコマンドを使用する方法を解説しようと思います。

最後まで読んでいただきありがとうございました。