dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

BigQuery の array_to_string() で文字列の配列を連結

2023-09-27 00:06:17 | BigQuery
BigQuery の array_to_string() で文字列の配列を連結する方法のメモ。

スキーマイメージ
jsonPayload
  items      array<object>
    item_id  string
    num      integer

クエリ例
select
  jsonPayload.order_id as order_id
  , array_to_string(
      array(select concat(item_id, ':', num) from unnest(jsonPayload.items) order by item_id asc)
    , ',') as item_num_string
from
  `dataset.table`
;

実行結果例
[{"order_id": "order1",
  "item_num_string": "item1:10,item2:20"
 },
 {"order_id": "order2",
  "item_num_string": "item3:30,item4:40,item5:50"
 }]


二次関数のグラフをインタラクティブに描画

2023-09-10 13:22:47 | python
jupyter notebook で二次関数 f(x) = ax^2 + bx + c のパラメータ a, b, c をインタラクティブに変更してグラフを描画できるようにしてみました。
%matplotlib inline
import matplotlib.pyplot as plt
from ipywidgets import interact
import numpy as np

def f(a, b, c, x):
    return a * x**2 + b * x + c

def plot_f(a, b, c):
    x = np.linspace(-5, 5, num=100)
    y = f(a, b, c, x)
    
    fig, ax = plt.subplots()
    ax.plot(x, y)
    ax.set_xlim(-5, 5)
    ax.set_ylim(-10, 10)
    plt.show()

interact(plot_f,
	a=(-5.0, 5.0, 0.1),
	b=(-5.0, 5.0, 0.1),
	c=(-5.0, 5.0, 0.1))