複数のテーブルのレコード件数を表にまとめたいことがたまにある。 そういう時はFORループを使用して、count(*)した結果を一時テーブルに入れて確認したりする。 DECLARE dataset STRING DEFAULT "test_dataset"; CREATE OR REPLACE TEMP TABLE record_count…
INFORMATION_SCHEMAのビューを使用して、テーブルやカラムの情報を取得して、テーブル作成などに使用することが多いけれど、INFORMATION_SCHEMAビューにアクセスするのに権限が必要なことは知らなかった。 権限を持っていないと、SELECTしても次のようなエラ…
標準ライブラリにあるEnumクラスにより、Enumを使用することができる。 列挙型は定数を表すために使われるため、Enumのメンバの名前は大文字にすることが推奨される。 次のコードで挙動を確認することができる。詳細については列挙型 HOWTOにわかりやすくま…
管理すべきメタデータ メタデータはビジネスメタデータ、テクニカルメタデータ、オペレーションメタデータの3種類に分けられる。 具体的には次のようなデータがある。 ビジネスメタデータ テーブルのオーナー テーブルのパーティションに使用されるカラム カ…
1. I spent 3 hours figuring out how BigQuery inserts, deletes and updates data internally. Here’s what I found. ライトノベルのようなタイトルですね。BigQuery内部でどのようにファイルを管理しているかキレイな図で紹介してくれてます。 データを挿…
BigQueryでORDER BY句を使用する場合、デフォルトのNULLの順序はASCかDESCで異なる。ASCの場合はNULLが最初に来るし、DESCの場合はNULLが最後に来る。 NULLS FIRST is applied by default if the sort order is ascending. NULLS LAST is applied by default…
概要 EmbulkでMySQLからデータを抽出しようとしたら遅かったので、関連となるトピックを色々調べた。とりあえず参考リンクだけ貼っておく。 クエリ処理の流れ (Oracle) SQLの処理 (SQL Server) SELECT ステートメントを処理する <非公式> MySQL Logical Arch…
BigQueryの外部キー制約は強制適用されないため、外部キー参照先の値(またはNULLのみ)しか入らないようにユーザー側で管理する必要がある。 そこでDataplexを使用して定期的に外部キー制約に沿った値になっているか確認できないかと考えた。 調べたところ…
まったく知らなかったけど、BigQueryの主キー/外部キー制約は強制適用されない。。。 これは知らないと割と事故りそう。 わい)主キー設定したし、NULLだったらエラーになってくれるよねー。NULLが入らないから安心だな~ BigQuery)NULLでもオレ、全然いい…
BigQueryでは全行削除するときはDELETEを使った方が良い。 Timetravelで復元もできるし、DELETEより早いし、お金もかからない。 BigQuery公式 When performing a DELETE operation to remove all the rows from a table, use TRUNCATE TABLE statement inste…
O(1) オーダー テーブルから任意の1行を取り出す SELECT TOP 1 * FROM table; O(log N) オーダー インデックスが張られた列に対してのWHERE句による抽出 O(log N)なので、テーブルサイズが大きくなっても、あまり時間計算量は増えない O(N) オーダー 以下の…
BigQueryで、比較演算子で比較される対象のどちらかがNULLだと結果はNULLになる。以下のクエリの結果はどちらもNULLになる。 SELECT CAST(NULL AS INT64) < 1; SELECT CAST(NULL AS INT64) = CAST(NULL AS INT64); 以下の例だとNULL行と今日の日付の2行が存…
BigQueryでDELETE-INSERTしたい場合、 MERGE ~ ON FALSE WHEN NOT MATCHED BY SOURCE THEN DELETE WHEN NOT MATCHED BY TARGET THEN INSERT ROW を使用すると良い。DELETE-INSERTを行えるうえ、動作も早いらしい。 ON FALSEとすることで、NOT MATCHED BY SOU…
medium.com www.datacamp.com www.kdnuggets.com www.kdnuggets.com
BigQueryの外部テーブルでの allow_quoted_newlines オプション BigQuery で CSV ファイルから外部テーブルを作成する場合は、オプションが不足していないか確認してください。 ある日、元の CSV ファイルのフィールドの 1 つに引用符で囲まれた改行文字が含…
概要 IntelliJの設定項目を忘備としてメモしておく。 主に使うのはTerraformとPythonなのでそのあたりの設定。 Git Toolboxが超便利。 設定項目 Plugins File Watchers Git ToolBox Terraform and HCL File Watchersへの設定 terraform fmt flake8(カスタム…
概要 IntelliJで複数カーソルの使用方法を調べてみた。特に、覚えておくと重宝しそうなものに絞ってメモしておく。 覚えておきたい複数カーソル操作 キーボードを使用して現在のカーソルの上または下にカーソルを追加 Shiftを押しながら上下↑↓キーを押す そ…
コマンドの出力結果を日時文字列ファイルに出力するのが面倒だったので、エイリアスを登録して省力化する。 エイリアスの設定 $ alias logd='touch log.`date +%Y%m%d%H%M%S` && ls log.`date +%Y%m%d%H%M%S`' ↑のエイリアスは、日時文字列ファイルをtouchで…
実行権限がないファイルの実行 実行権限がないファイルでも読み取り権限があれば、bashやsource等の引数にすれば実行できちゃう。 $ id uid=1001(test01) gid=1001(test01) groups=1001(test01) $ ls -l test.sh -rw-rw-r-- 1 test01 test01 5 Dec 9 23:24 t…
Dockerコンテナ外部からの通信制御はiptablesを使用して行う。(参考) Dockerコンテナ外部からの通信制御について理解したいので、まずiptablesについて復習していきたい。 iptablesはLinuxでパケットフィルタリングを行うツール。iptablesには後継のツール…
nftablesはパケットフィルタリングツールで、iptables、ip6tablesなどの後継。 簡単なユースケースではfirewalldを使用するが、複雑なケースやネットワーク全体に対する設定はnftablesを使用する。今後はiptablesの代わりに、nftablesの試用が推奨される。 …
カーネルとはハードウェアとソフトウェアアプリケーションの仲立ち(インターフェイス)をするLinux OSのコアの部分。 Red Hatだと、カーネルはRPM形式でパッケージ化されており、yum(ないし、dnf)で簡単にアップグレードできる。 カーネルRPMパッケージは…
glibcはシステムコールといったLinuxシステムの根幹をなすプログラムのライブラリ。 「GNU Project」による標準ライブラリ「libc」の実装。C言語の標準ライブラリ名をlibc(リブシー)といい、多くのプログラムで共通して使われるような、システムコールを始…
手順 APIを有効にしておく(特にCloud Identity-Aware Proxy APIは忘れがち) VPC network作成 GCE作成(ネットワークタグを付与) ファイアウォールでCloud Identity-Aware Proxyからのアクセス(35.235.240.0/20)とクライアントからのアクセスを許可(22…
Linuxにおいてリポジトリとは、ダウンロードのためにパッケージ(.rpm, .deb)などを配置してくれているサーバのこと。 例えば、ニフクラさんは、rhui-rhel-8-for-x86_64-baseos-rhui-rpmsやrhui-rhel-8-for-x86_64-appstream-rhui-rpmsというリポジトリ(サー…
概要 Microsoft LearnにPythonでのオブジェクト指向プログラミングがわかりやすくまとめられていたので、概要をメモしておく。 https://learn.microsoft.com/ja-jp/training/modules/python-object-oriented-programming/ Python を使用したオブジェクト指向…
◆外部公開しているシステムがUDPパケットを受信した場合 パケットを無視する。なにもしない。ログも吐かない。 ログを吐くとディスクをひっ迫させる攻撃を受けるリスクがある。 ◆外部公開しないシステムがUDPパケットを受信した場合パケットは無視するが、ig…
Pytestの概要 pytestはPython用のソフトウェアフレームワーク。記述したテストを文字列で発見して、自動的にテストを行ってくれる。Circle CIなどのCIツールと組み合わせることで、テスト自動化ができる。 pytestはpip install pytestでインストールする。 i…
Airflowの要点っぽいところ AirflowではワークフローをDAGと呼ぶ。DAGは複数のTaskからなる。 Taskが様々な処理を実行し、DAGが各Taskの実行順序を定義する。 TaskにはOperartorやSensorといった種類がある。 なので、関係性は次のようなイメージ。 DAG Task…
ncコマンドでUDPで送信するには、-uオプションを使用する。 これを知らずにTCPで送信し続けて、なぜ届かないの(?)となってた。 とはいえ、nc -vuz [宛先IPアドレス] [ポート番号]とかで、宛先IPアドレスへの到達性確認しようとしてもUDPパケットなので、パケ…