**Describe the issue**
We have to set macro or to pass explicitly shard and replica name to create table in DatabaseReplicated

{
            throw Exception(ErrorCodes::BAD_ARGUMENTS, "Cannot evaluate engine argument {}: {} {}",
                            arg_idx, e.message(), getMergeTreeVerboseHelp(is_extended_storage_def));
        }
    }
    
    String zookeeper_path;
    String replica_name;
    bool allow_renaming = true;
    if (replicated)
    {
        bool has_arguments = arg_num + 2 <= arg_cnt;
        bool has_valid_arguments = has_arguments && engine_args[arg_num]->as<ASTLiteral>() && engine_args[arg_num + 1]->as<ASTLiteral>();
        ASTLiteral * ast_zk_path;
        ASTLiteral * ast_replica_name;
        if (has_valid_arguments)
        {
            
            ast_zk_path = engine_args[arg_num]->as<ASTLiteral>();
            if (ast_zk_path && ast_zk_path->value.getType() == Field::Types::String)
                zookeeper_path = safeGet<String>(ast_zk_path->value);
            else
                throw Exception(
                    "Path in ZooKeeper must be a string literal" + getMergeTreeVerboseHelp(is_extended_storage_def),
                    ErrorCodes::BAD_ARGUMENTS);
            ++arg_num;
            ast_replica_name = engine_args[arg_num]->as<ASTLiteral>();
            if (ast_replica_name && ast_replica_name->value.getType() == Field::Types::String)
                replica_name = safeGet<String>(ast_replica_name->value);
            else