私のデータは、現在、次のようになります。
BigQueryで文字列から値を抽出し、位置番号を割り当てる方法は?
マイ所望の出力がこれです:
希望の成果は以下のとおりです。
- はOrderDescriptionでの.csv文字列の値を抽出します。
- 正規化されたテーブルにそれらを表示し、元のデータの.csv文字列に表示された順序であるOrderDescriptionPositionを割り当てます。
これは、split関数をrow_numberと組み合わせて使用して行っています。これは顧客ごとに動作するように見えますが、複数の顧客にまたがって実行しているときには、信頼性の低い「シャッフル」されたrow_numbersを返すようです。
select
CustomerID,
OrderID,
OrderDescriptionItem,
row_number() over(partition by CustomerID, OrderID) as OrderDescriptionPosition
from
(
select
CustomerID,
OrderID,
split(OrderDescription, ',') as OrderDescriptionItem
from
InitialTable
) as e
,unnest(OrderDescriptionItem) as OrderDescriptionItem
誰かがより堅牢なソリューションを持っていますか? UDFとjavascriptの使用に関する提案は大歓迎です。
おかげで以下のように)内部OVER(ORDER BYを追加します。たぶん私は私の例では、 "OrderDescription"の順序が常に昇順ではなく、.csv文字列内の位置が非常に重要であることを明確にすべきであろう。 OrderDescription =(6、1、400、43)は、2つの列を返す必要があります。 OrderDescription [6,1,400,43]およびOrderDescriptionPosition [1、2、3、4] – user7899351