Presume the Data is in a different file to 'Import Data', otherwise you could use ={Data!B12:G}.
But because filter only works on one column, you could try query:
=query(IMPORTRANGE("https://docs.google.com/spreadsheets/d/17Q1y-0DtCYhm_nCt2-cSn64afi4XktnXy08B3yPhzTM/","Data!B12:G"),"where Col1 is not null ",1)
If you want to ensure other columns are not blank, like the dates, you could adapt the 'where' clause like this:
"where Col4 is not null and Col5 is not null"
As an example, if you wanted to use a couple of importrange within a query, you could do it like this with each importrange within {} like this {importrange(),importrange(),importrange()}:
=query({IMPORTRANGE("https://docs.google.com/spreadsheets/d/17Q1y-0DtCYhm_nCt2-cSn64afi4XktnXy08B3yPhzTM/","Data!E8:G"),IMPORTRANGE("https://docs.google.com/spreadsheets/d/17Q1y-0DtCYhm_nCt2-cSn64afi4XktnXy08B3yPhzTM/","Data!B8:D")},"where Col6 is not null",1)
Notice I set the ranges to be Data!E8:G and then Data!B8:D. I also used where Col6 is not null in the query so that records without a task owner are removed.

You could ignore rows that don't have a start date by adapting the where clause:
"where Col1 is not null"
In future if you use other functions to manipulate data, you might need 'arrayformula' wrapped around everything. But for now, the example above doesn't need that.
Query sometimes has issues with mixed data columns. Using type() in your Data sheet, you can see there are some WBS numbers that are seen as text 2.

Query will automatically evaluate that this column is numeric, and ignore the minority of text entries. You can use to_text() around certain columns to make them text, like this (but this is where arrayformula() comes in).
