現在のアーキテクチャ:
現在のアーキテクチャでは、Hadoop ファイル システムを使用してレポート データを Parquet ファイル形式で保存し、Spark Thrift Server を使用して SQL インターフェイス (JDBC/ODBC) を介してこれらのデータを公開しています。このインターフェイスを使用して、レポートのデータをプルするように SAP BO を構成します。
BO バージョン: SAP BO 4.2 SP07
スパークバージョン: 2.1.0
現在の動作:
28 個の結合 (クエリ パネルに表示) を含むレポートの 1 つによって中級クエリが生成されています。
しかし、レポートが Webi で実行されると、Spark で別のクエリがトリガーされていることがわかります (コア ロジックは同じです)。複雑で長い文字列のエイリアスが各フィールド、テーブル、および結合に追加されています (2 つの列のスニペットは以下にあります)。
`SYNTHJOIN_9445517e`.`SYNTHJOIN_e7712c1dSYNTHJOIN_ae302cd9bi_financial_timeFINANCIAL_DATE` `_SYNTHJOIN_9445517e___SYNTHJOIN_e7712c1dSYNTHJOIN_ae302cd9bi_financial_timeFINANCIAL_DATE_`,
`SYNTHJOIN_9445517e`.`SYNTHJOIN_e7712c1dSYNTHJOIN_ae302cd9SYNTHJOIN_f7386c62SYNTHJOIN_12a564e7SYNTHJOIN_e7907874SYNTHJOIN_151b5d6fSYNTHJOIN_cc7708b9SYNTHJOIN_9a61ffc9SYNTHJOIN_425d41fbbi_marketMARKET_LEVEL_1` `_SYNTHJOIN_9445517e___SYNTHJOIN_e7712c1dSYNTHJOIN_ae302cd9SYNTHJOIN_f7386c62SYNTHJOIN_12a564e7SYNTHJOIN_e7907874SYNTHJOIN_151b5d6fSYNTHJOIN_cc7708b9SYNTHJOIN_9a61ffc9SYNTHJOIN_425d41fbbi_marketMARKET_LEVEL_1_`
質問:
- クエリに長いエイリアスが追加されている理由を理解していただけますか?
- Spark 2.1.0 はクエリ ( https://issues.apache.org/jira/browse/SPARK-19796 ) に対して 64k バイトの値のみをサポートするため、このクエリに基づいて生成されたクエリはこの 64k の値を超えます。そのため、スパークジョブは失敗しています。この 64K バリアを回避するために、これらのエイリアスを減らしてシンプルかつ鮮明に保ちたいと考えています。SAP BO に欠けている構成を提案してください。
- また、SAP BO が単純な結合クエリではなく、長いサブクエリを生成していることに気付きました。SAP BO には、クエリを展開するのではなく、クエリ パネルに表示されているクエリをデータベースに送信するための構成がありますか?