これはジョーダンがここに答えるに関するフォローアップの質問だ:Weird error in BigQueryエラー:TABLE_QUERY式はBigQueryのテーブルを照会することはできません
私はいくつかの時間を終了するための「Table_Query」内の参照テーブルを照会するために使用していました。さて、Joradanが言及している最近の変更に続いて、多くのクエリが壊れています...私たちがやっていることに対する代替的な解決策についてコミュニティのアドバイスをお願いしたいと思います。
私はイベント( "MyTable_YYYYMMDD")を含むテーブルを持っています。特定の(または複数の)キャンペーン期間にデータを照会したいのですが。そのキャンペーンの期間は、すべてのキャンペーンデータ(ID、StartCampaignDate、EndCampaignDate)を含む表に保存されます。関連するテーブルのみを照会するために、Table_Query()を使用し、TableQuery()内で、キャンペーンデータに基づいて関連するすべてのテーブル名のリストを作成します。 このクエリは、さまざまなパラメータでさまざまな形で何度も実行されます。パフォーマンス、実行コスト、およびメンテナンスコストが、(データセット全体を照会するのではなく)ワイルドカード機能を使用する理由です。したがって、すべてのテーブルをクエリして結果をフィルタリングするだけでは、実行コストが高すぎるため、オプションではありません。 - 表はお問合せはあなたが唯一の照会だろうか、参照テーブルに格納されなければならない情報、
SELECT
*
FROM
TABLE_QUERY([MyProject:MyDataSet] 'table_id IN
(SELECT CONCAT("MyTable_",STRING(Year*100+Month)) TBL_NAME
FROM DWH.Dim_Periods P
CROSS JOIN DWH.Campaigns AS LC
WHERE ID IN ("86254e5a-b856-3b5a-85e1-0f5ab3ff20d6")
AND DATE(P.Date) BETWEEN DATE(StartCampaignDate) AND DATE(EndCampaignDate))')
この今壊れている... 私の質問を:
サンプルクエリは次のようになります"TableQuery"が参照テーブルを照会できなくなったときに関連するテーブル(パーティション)
感謝
私が見る「シンプル」な方法は、2つのステップステップ1にそれを分割され
本当にありがとうございました。このソリューションを検討しました。しかし、私は複数のステップクエリを避けることを好む...私は、ロジックがいくつかの場所に散在しているので、時間が経つにつれて複雑になるメンテナンスに関心があり、プロセスで可能性の高い障害ポイントがあります。 –
あなたが求めている問題の回避策を探しているなら、これはあなたが持っているものです。 Googleチームのポイントやリクエストをしようとしている場合は、https://code.google.com/p/google-bigquery/:oを使用することをお勧めします。回答が大好きですが、時間を無駄にすることはありませんこれに問題はありません - それはあなたに適切なチャンネルを指し示すことが多いです –
Mikahil、私はポイントを作ろうとしている誰かのNNのコメントを読んでいません。彼はちょうどあなたの解が準最適であることを指摘しました。私が見る限り、彼は有効な議論をしています。ソリューションのもう1つの問題は、クエリのパフォーマンスにも影響することです。うまくいけば、もう一つの回避策があります。あるいは、Googleによって最終的に提供されるでしょう – Zvi